程序填空题1.下述程序是一个选择排序程序,请填完整空缺部分。Voidselect_sort(intp[],intn){inti,j,k,temp;for(i=0;in-1;i++){k=i;for(j=i+1;jn;j++)if(p[j]p[k])k=j;if(k!=i){temp=p[k];p[k]=p[i];p[i]=temp;}}}main(){inti,a[20];for(i=0;i20;i++)scanf(“%d”,&a[i]);select_sort(a,20);for(i=0;i20;i++)printf(“%d\t”,a[i];printf(“\n”);}2.下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。#includestdio.hmain(){inta,b,c,i;a=c=0;for(i=0;i=10;i+=2){a+=i;b=i+1;c+=b;}printf(“偶数之和=%d\n“,a);printf(“奇数之和=%d\n“,c–11);}3.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空:main(){inti,j;for(i=0;i10;i++){j=i*10+6;if(j%3!=0)continue;printf(“%d”,j);}}4.程序读入20个整数,统计非负数的个数,并计算非负数之和。#include“stdio.h”main(){intI,a[20],s,count;____s=count=0____;for(I=0;I20;I++)scanf(“%d”,_&a[i]__);for(I=0;I20;I++){if(a[I]0)continue;s+=a[I];count++}printf(“s=%d\tcount=%d\n”,s,count);}5.下面的程序用以分别求出数组两条对角线上的各元素之和。#include“stdio.h”main(){inta[3][3]={1,2,3,4,5,6,7,8,9};intsum1,sum2,k,j;sum1=sum2=0;for(k=0;k3;k++)sum1+=a[i][i];for(k=0;k3;k++)for(j=2;j=0;j--)if(_(i+j)==2________)sum2+=a[k][j];printf(“sum1=%d\tsum2=%d\n”,sum1,sum2);}6.已知整型数组w中的元素已经由小到大排序,函数fun用以将整数x插入到数组w中,要求插入后的数组元素依然有序。其中n所指的存储单元中存放着数组元素的个数。voidfun(int*w,intx,int*n){intk,p=0;w[*n]=x;while(xw[p])__p++____;for(k=*n;kp;k--)w[k]=__w[k-1]__;___w[p]=x____________;++*n;}7.函数strlen用于确定一个给定字符串str的长度(不包括‘\0’)。strlen(char*str){intnum=0;while(*str++!=’\0’)++num;return(_num___);}8.已知第一个学生的年龄为10岁,,第二个学生年比第一个学生的年龄大2岁,……以此类推,以下程序用于计算学生年龄,请补充完整。#include“stdio.h”age(intn){intc;if(n==1)c=10;elsec=__age(n-1)+2____;return(c);}main(){intn=5;printf(“age:%d\n”,age(n));}9.以下是一个求字符串长度的函数的递归算法,请补充完整(不包括‘\0’)intstrlen(char*str){if(*str==’\0’)return(0);elsereturn(__1+strlen(str+1)___);10.以下程序将用户从键盘上随机输入的30个学生的学号、姓名、数学成绩、计算机成绩及总分写入数据文件score.txt中,假设30个学生的学号从1~30连续。输入时不必按学号顺序进行,程序自动按学号顺序将输入的数据写入文件。请在程序中的空白处填入一条语句或一个表达式。#includestdio.hFILE*fp;Main(){structst{intnumber;charname[20];floatmath;floatcomputer;floattotal;}student;inti,j;if((fp=fopen(“score.txt”,”w”))==null){printf(“fileopenerror\n”);exit(1);}for(i=0;i30;i++){scanf(“%d,%20s,%f,%f”,&student.number,student.name,&student.math,&student.computer);student.total=student.math+student.computer;j=student.number-1;fseek(fp,j*sizeof(student),0);if(fwrite(&student,sizeof(student),1,fp)!=1)printf(“writefileerror\n”);}fclose(fp);}11.下面的程序用来统计文件中字符的个数,请填空。#includestdio.hmain(){FILE*fp;longnum=0;if((fp=fopen(fname.dat,r))==NULL){printf(Cantopenfile!\n);exit(0);}while(!feof(fp)){fgetc(fp);num++;}printf(num=%d\n,num);fclose(fp);}12.【程序说明】将从键盘输入的三个整数,按从小到大的顺序输出。【程序】#includestdio.hintmain(){inta,b,c,*pa=&a,*pb=&b,*pc=&c,*p;scanf(%d%d%d,pa,pb,pc);if(*pa*pb){p=pa;pa=pb;pb=p;}if(*pa*pc){p=pa;pa=pc;pc=p;}if(*pb*pc){p=pb;pb=pc;pc=p;}printf(%d=%d=%d\n,*pa,*pb,*pc);return0;}