第一步:根据题意对函数进行定义。
第二步:分析得该函数所求为op1与op2的和与差,将所得和与差分别为psum和pdiff。
第三步:得出代码。html
void sum_diff(float op1,float op2,float *psum,float *pdiff) { *psum=op1+op2; *pdiff=op1-op2; }
问题:编译错误
解决:在定义函数时像定义变量同样在结尾加上了逗号,删除了逗号后答案便正确了。git
第一步:定义函数。
第二步:根据题意分析,要将一个数的整数部分和小数部分分开,首先会想到int由此获得整数部分,而后用原来的数减去整数部分便能获得小数部分。
第三步:指针intpart指向x的整数部分,fracpart指向其小数部分。数组
void splitfloat(float x, int *intpart,float *fracpart) { *intpart=(int)x; *fracpart=x-*intpart; }
该题没有遇到问题。函数
第一步:定义函数。
第二步:若是没有找到与x相等的数则返回-1,因此先定义k并赋予初值-1。在比较中只有遇到与x相等的数时k才会被赋予其余的值不然最后返回-1。因为k为最小坐标,因此在遇到第一个与x相等的数后跳出循环。
第三步:得出代码。学习
int search( int a[], int n, int x ) { int i=0; int k=-1; for(i=0;i<n;i++) { if(a[i]==x) { k=i; break; } } return k; }
这是我最开始的答案,结果是部分错误。由于我将return放在了for循环中并无中止,因此出现了错误。修改无果找了其余出路。.net
第一步:定义函数。
第二步:将指针max指向a[]首元素地址,在for循环中当遇到大于它的数时从新赋值max且b指向其下标,一直循环到最后返回最后的max。
第三步:得出代码。设计
int fun(int *a,int *b,int n) { int i; int *max=a; *b=0; for(i=0;i<n;i++) { if(a[i]>*max) { *max=a[i]; *b=i; } } return *max; }
在该题中我出现的问题在于对max初值的定义的错误,我习惯性地将它定义为0了。而a表示a[i]的首元素地址,再将后面的与max比较。3d
第一步:定义函数。
第二步:本题其实就是三个小函数的集合,每个函数都是在比较大小而后按照题意交换位置,小的数换到前面大的数换到后面,循环。
第三步:输出。指针
#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]); } }
这道题我刚开始作时彻底没有思路,以为很复杂,因此是经过其余同窗的帮助完成的。调试
第一步:定义函数。
第二步:循环判断,并根据题意交换位置。
第三步:结束循环。
void sort(int *x,int n) { int i,j; int a; for(i=0;i<n;i++) { for(j=i;j<n;j++) { if(*(x+i)<*(x+j)) { a = *(x+i); *(x+i) = *(x+j); *(x+j) = a; } } } return 0; }
少了return 0,没有中止循环。
第一步:定义函数。
第二步:当不是空格时开始判断一直到最后,由于最后一位时\0因此减1,进行比较,若是k=i则返回true。
第三步:结束代码。
bool palindrome(char *s) { char *a = s; int i = 0,j=0,k=0; while (*a != '\0') { a++; i++; } a--; while (*s != '\0') { if (*s == *a) { k++; } else { return false; } s++; a--; } if (k == i) { return true; } }
没有考虑到不能时\0的状况。
第一步:定义函数。
第二步:前移。
第三步:结束。
void strmcpy( char *t, int m, char *s ) { int i,j,k; k=strlen(t); strcpy(s,t); for(i=m-1;i>0;i--) { for(j=i;j<k;j++){ *(s+j-1)=*(s+j); } } *(s+k-m+1)='\0'; }
无
一、总结两周里所学的知识点有哪些学会了?哪些尚未学会?
本周咱们主要学习将新知识点指针与数列、地址联系起来,做业都是与函数相关联的,对指针的运用还不熟悉。
二、个人git地址是: https://coding.net/u/zhouxuan12
三、点评
http://www.cnblogs.com/exo123/p/8575595.html
http://www.cnblogs.com/fengzx/p/8612048.html
http://www.cnblogs.com/dx2017/p/8560765.html
四、