1.定义函数void sum(int *p)实现对给定数组a中所有元素求和并打印输出求和结果。
#include<stdio.h> void sum(int *p) { int a[10]; int i,sum=0; printf("请输入10个整数:"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } p=&a[0]; for(p=a;p<(a+10);p++) { sum=sum+*p; } printf("%d",sum); } int main() { int *p; sum(p); return 0; }
这道题看了丛铭俣和钟国晨的,似乎是懂了,原理其实还跟以前学的一样,只不过就是把以前学的都拼凑在一起了,看到别人写的之后就觉得哦对对就是这样,但是自己却写不出来,其实还是对知识掌握的不是很好吧,尤其是指针。
2.用指针实现函数:读入5个字符串(或是5个字符),按由小到大的顺序输出这5个字符串。
#include<stdio.h> void fsort(int a[],int n); int main(void) { int i; int a[5]={6,5,2,8,1}; fsort(a,5); for(i=0;i<5;i++) printf("%d ",a[i]); return 0; } void fsort(int a[],int n) { int k,j; int temp; for(k=1;k<n;k++) for(j=0;j<n-k;j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } }
3.利用动态内存分配方式创建长度为10个int的存储空间,由用户从键盘输入数据进行空间初始化,同时打印输出空间内容。
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char *p[5]; char str[20]; scanf("%s",str); int i=0; while(str[0]!=‘#‘) { p[i]=(char *)malloc(sizeof(char)*strlen(str)); strcpy(p[i],str); scanf("%s",str); i++; } int j; for(j=0;j<i;j++) printf("%s ",p[j]); }
老师在课上讲了这道题,很明白了已经。
4.选做:定义二维数组a[10][10]和数组指针p[10],并用p对数组a进行初始化和打印输出。
#include<stdio.h> int main() { int b[10][10]; int i,j; for(i=0;i<9;i++) for(j=0;j<9;j++) { b[i][j]=(i+1)*(j+1); } for(i=0;i<9;i++) { for(j=0;j<9;j++) { printf("%d ",b[i][j]); } printf("\n"); } return 0; }
这道题它让定义数组和指针,但是我只写了数组,因为我不会加入指针,让指针和数组结合起来,所以感觉这次作业难的原因就是要把好多好多知识综合起来运用,一种知识我还用的不是很利落就要再加上好多其他知识所以很吃力,以后还是要勤加练习吧,就像丛铭俣说的练好基础。
时间: 2024-10-27 05:54:33