1.定义函数void sum(int *p)实现对给定数组a中所有元素求和并打印输出求和结果。
#include<stdio.h> void sum(int *p) { int a[10]={0,1,2,3,4,5,6,7,8,9 }; p=&a[0]; int i,sum=0; for(i=0;i<10;i++) { sum=a[i]+sum; } printf("和为%d",sum); } int main() { int *p; sum (p);//求p的和 return 0; }
只会做先在程序中设定数,然后求和的,要求用户自己输入的那种不太会。
22.用指针实现函数:读入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> void fsort(int a[],int n); 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]); }
这题老师上课讲了,strcpy(p[i],str)明白了这句话是复制上面的数组。