c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2.doc_第1页
c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2.doc_第2页
c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2.doc_第3页
c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2.doc_第4页
c程序设计期末复习题【程序设计读程序分析程序、填空题及答案】2.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【程序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.程序源代码: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矩阵对角线元素之和 要求:分析程序执行过程,并画出变化过程图main()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: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=NULL;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门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件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(score %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(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);=【程序10】题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。1.程序分析:2.程序源代码:#include stdio.hmain() FILE *fp;char ch,filename10;scanf(%s, );if(fp=fopen(filename,w)=NULL)printf(cannot open filen);exit(0);ch=getchar();ch=getchar();while(ch!= )fputc(ch,fp);putchar(ch);ch=getchar(); (fp);=【程序11】题目:给出下面程序的执行结果#include main()int x=10,y=9;int a,b,c;if (-x=y+) a=-x;else a=+y;b=x+;c=y;printf(“%d,%d,%dn”,a,b,c);=【程序12】题目:执行下列程序,输入为1时的输出结果是( )输入为3时输出结果是()#include main() int k; scanf(“%d”,&k);switch(k) case 1:printf(“%dn”,k+);case 2:printf(“%dn”,k+);case 3:printf(“%dn”,k+);case 4:printf(“%dn”,k+);default:printf(“Full!n”);=【程序13】题目:以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入源文件,当键盘上输入结束时关闭该文件#include main()FILE *fp;Char c;fp=( ) (“myfile”, ( );do c=getchar();fputc(c,fp);while(c!=EOF);( )=【程序14】题目:下列程序运行后输出结果是#include main()main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%dn”,a,b,c);=【程序15】题目:下列程序运行后输出结果是void swap (int *p1, int *p2)int temp;temp = *p1;*p1 = *p2;*p2 = temp;main()int *p1,*p2,a,b;scanf(“%d,%d”,&a,&b);p1 = &a;p2 = &b;if (ab)swap (p1,p2);printf(“a=%d,b=%dn”,a,b);输入6,4则输出结果为()=【程序16】题目:设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。main() int class40;float sum,ave; int number,i; sum=0; number:=0; printf(“please enter student data”); for ( i=0 ; i40 ; i+ ) scanf(“%d”, ); sum += classi; ave= sum/40; for (i=0; iclassi) number+; printf(”the number of lowed ave is %d”,number); )=【程序17】题目:计算学生的平均成绩和不及格的人数。struct stuint num;char *name;char sex;float score;boy5 =101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;main()int i,c=0;float ave,s=0;for(I=0;I5;I+) /*分别读入学号、姓名、性别、成绩*/ scanf(“%d,%s,%c,%f”, );for(i=0;i5;i+)s+=boyi.score;if( 60) c+=1;printf(s=%fn,s);ave=s/5;printf(average=%fncount=%dn,ave,c);=【程序18】题目:建立一个三个结点的链表,存放学生数据。 可编写一个建立链表的函数creat。程序如下n#define NULL 0#define LEN sizeof (struct stu)struct stuchar name; /*说明学生的姓名*/int number; /*说明学生的房间号*/float score ; /*说明学生的分数*/struct node *link ; /*指向下一个结点的指针*/;Main()struct stu *p;p = create(5);nstruct stu *creat(int n)struct stu *head,*pf,*pb;int i;for(i=0;i name,&pb- number, &pb- score);if(i=0)pf=head= ;else pf- link = ;pb- link =NULL;pf= ;return( );=【程序19】题目:静态建立链表,遍历链表#define NULL 0struct nodechar name; /*说明学生的姓名*/int number; /*说明学生的房间号*/float score ; /*说明学生的分数*/struct node *link ; /*指向下一个结点的指针*/;Main()struct student a,b,c,*head,*p;strcpy(,”LiPing”); a.number=1; a.score =90;strcpy(,”WangPing”); b.number = 2; b.score = 92;strcpy(,”Zhang”); c.number = 3; c.score = 89;head = &a;a. link = &b;b. link = &c;c. link = NULL;p = head;doprintf(“%s %d %fn”,p-name,p-number,p-score); ;while (p!= )=【程序20】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。1.程序分析:2.程序源代码:main()int len;char *str20;printf(please input a string:n);scanf(%s,str);len=length(str);printf(the string has %d characters.,len);length(p)char *p;int n;n=0;while(*p!= )n+;p+;return n;【程序69】题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。1. 程序分析:2.程序源代码:#define nmax 50main()int i,k,m,n,numnmax,*p;printf(please input the total of numbers:);scanf(%d,&n);p=num;for(i=0;in;i+)*(p+i)=i+1;i=0;k=0;m=0;while(mn-1)if(*(p+i)!=0) k+;if(k=3) *(p+i)=0;k=0;m+;i+;if(i=n) i=0;while(*p=0) p+;printf(%d is leftn,*p);=填空参考答案【程序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.程序源代码: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矩阵对角线元素之和 要求:分析程序执行过程,并画出变化过程图main()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: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=NULL;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门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件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,stui.num);printf(name:);scanf(%s,);sum=0;for(j=0;j3;j+) printf(score %d.,j+1);scanf(%d,&stui.scorej);sum+=stui.scorej;stui.avr=sum/3.0;fp=fopen(stud,w);for(i=0;i5;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(file write errorn);fclose(fp);=【程序8】题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。1.程序分析:2.程序源代码:#include stdio.hmain() FILE *fp;int i,j,n,ni;char c160,t,ch;if(fp=fopen(A,r)=NULL)printf(file A cannot be openedn);exit(0);printf(n A contents are :n);for(i=0;(ch=fgetc(fp)!=EOF;i+)ci=ch;putchar(ci);fclose(fp);ni=i;if(fp=fopen(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;fputc(stri,fp);i+;fclose(fp);fp=fopen(test,r);fgets(str,strlen(str)+1,fp);printf(%sn,str);fclose(fp);=【程序10】题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。1.程序分析:2.程序源代码:#include stdio.hmain() FILE *fp;char ch,filename10;scanf(%s,filename);if(fp=fopen(filename,w)=NULL)printf(cannot open filen);exit(0);ch=getchar();ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp);=【程序11】题目:给出下面程序的执行结果#include main()int x=10,y=9;int a,b,c;if (-x=y+) a=-x;else a=+y;b=x+;c=y;printf(“%d,%d,%dn”,a,b,c);=【程序12】题目:执行下列程序,输入为1时的输出结果是( )输入为3时输出结果是()#include main() int k; scanf(“%d”,&k);switch(k) case 1:printf(“%dn”,k+);case 2:printf(“%dn”,k+);case 3:printf(“%dn”,k+);case 4:printf(“%dn”,k+);default:printf(“Full!n”);=【程序13】题目:以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入源文件,当键盘上输入结束时关闭该文件#include main()FILE *fp;Char c;fp=( ) (“myfile”, ( );do c=getchar();fputc(c,fp);while(c!=EOF);( )=【程序14】题目:下列程序运行后输出结果是#include main()main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%dn”,a,b,c);=【程序15】题目:下列程序运行后输出结果是void swap (int *p1, int *p2)int temp;temp = *p1;*p1 = *p2;*p2 = temp;main()int *p1,*p2,a,b;scanf(“%d,%d”,&a,&b);p1 = &a;p2 = &b;if (ab)swap (p1,p2);printf(“a=%d,b=%dn”,a,b);输入6,4则输出结果为()=【程序16】题目:设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。main() int class40; float sum,ave; int number,i; sum=0; number:=0; printf(“please enter student data”); for ( i=0 ; i40 ; i+ ) scanf(“%d”,&classi); sum += classi; ave= sum/40; for (i=0; iclassi) number+; printf(”the number of lowed ave is %d”,number); )=【程序17】题目:计算学生的平均成绩和不及格的人数。struct stuint num;char *name;char sex;float score;boy5 =101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling,F,87,105,Wang ming,M,58;main()int i,c=0;float ave,s=0;for(I=0;I5;I+) scanf(“%d,%s,%c,%f”,&boyI.num,boyI.name,&boyI.sex,&boyI.score);for(i=0;i5;i+)s+=boyi.score;if(boyi.score60) c+=1;printf(s=%fn,s);ave=s/5;printf(average=%fncount=%dn,ave,c);=【程序18】题目:建立一个三个结点的链表,存放学生数据。 可编写一个建立链表的函数creat。程序如下n#define NULL 0#define LEN sizeof (struct stu)struct stuchar name; /*说明学生的姓名*/int number; /*说明学生的房间号*/float score ; /*说明学生的分数*/struct node *link ; /*指向下一个结点的指针*/;Main()struc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论