PTA第一次作业
计算两数的和与差
设计思路:
1.看主函数部分可以得出两个浮点型变量a,b,经过sum_diff的函数计算方式得出计算的和与差。
2.着重注意psum,pdiff为指针变量。
3.编写代码,其中psum=op1+op2;pdiff=op1-op2.
实验代码:
...
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum=op1+op2;
*pdiff=op1-op2;
}
...
调试过程:
本题在书写代码的过程中没有任何问题。

拆分实数的整数与小数部分
设计思路:
1.通过主函数部分可以看出x,fracpart为浮点型变量,intpart为整型变量,经过splitfloat调试后输出。
2.把实数强制转化为int型得到整数部分,实数减整数得到小数部分。
实验代码:
...
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart=(int)x;
*fracpart=x-(int)x;
}
...
调试过程:
在本题的代码书写中,我并没有想到可以用实数本身减去它的整数部分去输出小数部分,在室友的点拨后意识到了问题所在并得到了解决。

在数组中查找指定元素
设计思路:
1.通过主函数可以看出整型变量 i, index, n, x,a[10],循环数组for。
2.在函数变量中把a的值赋给list[]。
3.根据题意,若x=list[a],则返回idex的值,否则idex=-1。
实验代码:
...
int search( int list[], int a, int b )
{
int i,result;
for( i = 0; i < a; i++ )
{
if(list[i]==b)
{
result=i;
break;
}
else{
result=-1;
}
}
return(result);
}
...
调试过程:
在本题的书写中并没有遇到什么问题。

找最大值及其下标
设计思路:
1.主函数中定义出整型变量a[10],i,max,p,经过fun函数的调用得到最大值max和它的下标p。
2.在本函数中,a为第一个值的地址,(a+i)为a[i]的值。
实验代码:
...
int fun(int *a,int b,int n)
{
int max=0;
int i;
for(i=0,max=0,
b=0;i<n;i++)
{
if( a[i] > max ) {
max=a[i];
*b=i;
}
}
return max;
}
...
调试过程:
没有补上返回值return max。

最小数放前,最大数放后
设计思路:
1.使用for循环,第一个函数输入数组,第三个函数输出数组。
2.找出最值并移动最值即可。
实验代码:
...

include<stdio.h>

void input(int *arr,int n)
{
int i=0;
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
}
void max_min(int *arr,int n)
{
int j=0,x=0,y=n-1;
for(j=0;j<n;j++)
{
if(arr[x]>arr[j])
{
int swap;
swap=arr[x];arr[x]=arr[j];arr[j]=swap;
}
}
for(j=n-1;j>0;j--)
{
if(arr[y]<arr[j])
{
int temp;
temp=arr[y];arr[y]=arr[j];arr[j]=temp;
}
}
}
void output(int *arr,int n)
{
int k=0;
for(k=0;k<n;k++)
{
printf("%3d",arr[k]);
}
}
...
调试过程:
本题的内容以及考察要点老实说我不是很理解,或者说这道题我应该说是不会,所以完全依靠着室友的讲解和代码的借鉴完成了解答。

指针选择法排序
设计思路:
1.设int型变量i,j,t,temp,再进行for循环。
2.找出最值后进行交换。
实验代码:
...

include<stdio.h>

void sort(int *x,int n)
{
int j=0,k=0;
for(j=1;j<n;j++)
{
for(k=0;k<n-j;k++)
{
if(x[k]<x[k+1])
{
int swap;
swap=x[k];x[k]=x[k+1];x[k+1]=swap;
}
}
}
}
...
调试过程:
与上一道题类似,完全依靠无所不知的室友。

判断回文字符串
设计思路:
1.通过strlen()查字符的数量,对数组首尾进行比较,相同则是回文,反之则反之。
2.定义整型变量i,j,n,其中n为数组中字符的个数,j为数组下标,j=n-1,再进行for循环。
3.循环结束后判断i和j的大小,若i>j,则是回文。反之则反之。
实验代码:
...
bool palindrome( char *s )
{
int i,j,n;
n=strlen(s);
j=n-1;
for(i=0;i<j;i++,j--)
{
if(s[i]!=s[j]){
break;
}
}
if(i>=j){
return true;
}
}
...
调试过程:
在一开始的思路中有模糊的想法但不知道怎么用代码去表述,请教了班里的大佬后柳暗花明。

使用函数实现字符串部分复制
设计思路:
1.定义MAXN为20并新建两个数组使m为整型。
2.设t,m,s为被调用函数,设整型i,输出。
实验代码:
...
void strmcpy( char *t, int m, char s )
{
int i;
for(i=m;
(t+i-1)!='\0';i++)
{
(s+i-m)=(t+i-1);
}
*(s+i-m)='\0';
}
...
调试过程:
一点想法都没有,还是靠请教大佬。

两周学习到的内容:
在这大学习量的两周中,复习了冒泡排序法,学习了新的关于指针的内容,包括指针的定义,表示方法,定义规则等等,而且还有上个学期学习的对于for循环的使用,在接下来的学习中,要紧跟老师的节奏,后半周因为家里老人的身体原因,去外地的一员护理了几天,以至于把很多东西拖到了交作业的最后一天,以后一定尽力避免这种情况。

点评作业:
李锐 :http://www.cnblogs.com/572453251asd/p/8646073.html
于耀凇:http://www.cnblogs.com/jsjyys/p/8589997.html
高立彬:http://www.cnblogs.com/gao628526/p/8551285.html

进度表: