8.
defa 58 638.00
9.
10. 22 10 20 22 3 6
三、写出下列每个函数的功能
1. int SE(int n) { //n为大于等于1的整数 int x,s=0;
printf(\输入%d个整数: \ scanf(\ if(n==1) return x; s=x;
while(--n) {scanf(\ return s; }
2. #include
void WA(int a[], int n) { int i,k,j,x;
for(i=0;i for(j=i+1;j 3. #include int* LJ(int a[], int n) { int i,k=0; for(i=1;i 4. int Output(struct IntNode *f) { int sum=0; if(!f) return -9999; //用返回特定值-9999表示空表 while(f) { sum+=f->data; f=f->next; } return sum; } 假定struct IntNode的类型定义为: struct IntNode { int data; //结点值域 struct IntNode* next; //结点指针域 }; 答案: 1. 求出从键盘上输入的n个整数之和并返回。 2. 采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。 3. 求出数组a中n个元素的最大值元素,返回该元素的地址 4. 对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。 四 程序填空 1. 下面程序的功能是:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。 # include int a[11]={1,3,6,7,9,12,14,18,19,20},x; int i,p; printf(\ scanf(\ for(i=0,p=10;i<10;i++) if(x for(i=9; ② ;i--) a[i+1]=a[i]; ③ ; printf(\ for(i=0;i<11;i++) printf(\ printf(\ } 2. 以下程序能统计一个英文句子(以 . 号结束)中最长单词的长度。 # include int word=0,max=0; while(*p!='.') { while((*p<='z')&&(*p>='a')||(*p<='Z')&&(*p>='A')) { ① ; p++; } if(② ) max=word; ③ ; p++; } return max; } void main() { char str[80]; gets(str); printf(\} 3. 下面程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。 # include void SumColumMin(int a[M][N],int *sum) { int i,j,k,s=0; for(i=0;i k=0; for(j=0;j if(a[k][i]>a[j][i]) k=j; s+=① ; } ② =s; } void main() { int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin(③ ); printf(\} 4. 以下程序采用直接选择法对数组a中的10个数进行降序排列,然后按每行5个数的格式输出。 # include int i,j,k,t,a[10]={1,4,3,5,7,9,2,0,6,8}; for(j=0;j<9;j++) { k=j; for(i=j+1;i<10;i++) { if(*(a+i)>① ) k=i; } t=a[j]; *(a+j)=② ; *(a+k)=t; } for(i=0;i<10;i++) printf( (i%5) ? \③ , *(a+i) ); printf(\} 5. 以下程序的功能是计算下列级数之和 s=1+x+x2/2!+x3/3!+…+xn/n! double sum(int x,int n) { int i; double a,b,s; a=1.0;b=1.0;s=1.0; for(i=1;i void main() { int x,n;double s; scanf(\ ③ ; printf(\} 6. 下面invert函数实现数组元素值的逆置,即a[0],a[9]互换,a[1],a[8]互换,以此类推。 请填空。 # include { void invert(int *s,int num); int a[10]={1,2,3,4,5,6,7,8,9,10},i,n=10; for(i=0;i<10;i++) printf(\ printf(\ invert(a,n-1); for(i=0;i<10;i++) printf(\ printf(\} void invert(int *s,int num) { int *t,k; t=s+num; while(① ) { k=*s;*s=*t;*t=k; ② ; ③ ; } } 7. 下面程序的功能是在数组中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请填空。 # include void fun(int *a,int n,int *max,int *min) { int i; *max=*min=0; for(i=1;i if(*(a+i)>*(a+*max)) ① ; else if(*(a+i)<*(a+min)) ② ; return; } void main() { int a[10]={3,15,2,26,9,28,7,1,4,12}; int max,min; ③ ; printf(\} 程序输出为: max=5,min=7 8. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符