《c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2》由会员分享,可在线阅读,更多相关《c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2(25页珍藏版)》请在金锄头文库上搜索。
1、【程序1】题目:将一个数组逆序输出。要求:分析程序执行过程,并画出变化过程图#define N 5main() int aN=9,6,5,4,1,i,temp;printf(n original array:n);for(i=0;iN;i+)printf(%4d,ai);for(i=0;iN/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;printf(n sorted array:n);for(i=0;iN;i+)printf(%4d,ai);=【程序2】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。要求:分析程序执行过程,并画出变化过程图
2、2.程序源代码:main()int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(original array is:n);for(i=0;iend)a10=number;elsefor(i=0;inumber)temp1=ai;ai=number;for(j=i+1;j11;j+)temp2=aj;aj=temp1;temp1=temp2;break;for(i=0;i11;i+)printf(%6d,ai);=【程序3】题目:求一个3*3矩阵对角线元素之和 要求:分析程序执行过程,并画出变化过程图m
3、ain()float a33,sum=0;int i,j;printf(please input rectangle element:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%f,&aij);for(i=0;i3;i+)sum=sum+aii;printf(duijiaoxian he is %6.2f,sum);=【程序4】题目:对10个数进行排序要求:分析程序执行过程,并画出变化过程图 2.程序源代码:#define N 10main()int i,j,min,tem,aN;/*input data*/printf(please input ten num
4、:n);for(i=0;iN;i+)printf(a%d=,i);scanf(%d,&ai);printf(n);for(i=0;iN;i+)printf(%5d,ai);printf(n);/*sort ten num*/for(i=0;iN-1;i+)min=i;for(j=i+1;jaj) min=j;tem=ai;ai=amin;amin=tem;/*output data*/printf(After sorted n);for(i=0;in);for(i=0;idata=num;ptr-next=(link)malloc(sizeof(node);if(i=4) ptr-next=N
5、ULL;else ptr=ptr-next;ptr=head;while(ptr!=NULL) printf(The value is =%dn,ptr-data);ptr=ptr-next;=【程序6】题目:读结果。#include stdio.h#define M 5main()int aM=1,2,3,4,5;int i,j,t;i=0;j=M-1;while(iJ)t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i+;j-;for(i=0;iM;I+)printf(%d,*(a+i);=【程序7】题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,
6、姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件stud中。#include stdio.hstruct student char num6;char name8;int score3;float avr; stu5;main()int i,j,sum;FILE *fp;/*input*/for(i=0;i5;i+) printf(n please input No. %d score:n,i);printf(stuNo:);scanf(%s, );printf(name:);scanf(%s, );sum=0;for(j=0;j3;j+) printf(sco
7、re %d.,j+1);scanf(%d, );sum+=stui.scorej;stui.avr=sum/3.0;fp= (stud,w);for(i=0;i5;i+)if(fwrite(&stui,sizeof(struct student),1, )!=1)printf(file write errorn); (fp);=【程序8】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。1.程序分析:2.程序源代码:#include stdio.hmain() *fp;int i,j,n,ni;char c160,t,ch;if
8、(fp= (A,r)=NULL)printf(file A cannot be openedn);exit(0);printf(n A contents are :n);for(i=0;(ch=fgetc(fp)!= ;i+)ci=ch;putchar(ci); (fp);ni=i;if(fp= (B,r)=NULL)printf(file B cannot be openedn);exit(0);printf(n B contents are :n);for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);n=i;for(i=0;in;i+)for(j=i+1;jcj)t=ci;ci=cj;cj=t;printf(n C file is:n);fp=fopen(C,w);for(i=0;i=a&stri=z)stri=stri-32; (stri,fp);i+; (fp);fp= (test,r);fgets(str,strlen(str)+1,fp);printf(%sn,str);fclose(fp);=【程序1