C语言程序设计期末复习题
- 格式:doc
- 大小:70.50 KB
- 文档页数:7
C语言程序设计期末复习题 阅读下列程序,掌握程序的输入、输出、算法、使用的数据 【程序1】 题目:将一个数组中的元素逆序输出。 #define N 5 main() { int a[N]={9,6,5,4,1},i,temp; printf("\n original array:\n"); for(i=0; imain() { int a, b; scanf(“%d,%d”,&a,&b); if (aswap (&a , &b); printf(“a=%d,b=%d”\n,a,b); } 输入6,4则输出结果为_________________ /*=====================================*/ 【程序4】 题目:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 main() { int a[11]={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; i<10; i++) printf("%5d",a[i]); printf("\n"); printf("insert a new number:"); scanf("%d",&number); end=a[9]; if(number>end) a[10]=number; else for(i=0;i<10;i++) if(a[i]>number) /*找到插入位置*/ { for(j=10; j>i; j--) /*插入点后的元素后移*/ a[j]= a[j-1]; a[i] =number; break; } for(i=0;i<11;i++) printf("%6d",a[i]); } 【程序5】 题目:用选择法对10个数进行从小到大的排 序 程序源代码: #define N 10 main() { int i, j, min, tem, a[N]; /*input data*/ printf("please input ten num:\n"); for(i=0;i a[j] ) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; } /*output data*/ printf("After sorted \n"); for(i=0;i题目:设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。 #define N 40 main() { int class[N]; float sum, ave; int number, i; sum=0; number=0; printf("please enter student score"); for ( i=0 ; i{ scanf("%d", &class[i] ); sum += class[i]; } ave= sum/N; for (i=0; iif ( class[i]number++; printf("the number of lowed ave is %d",number); } /*===============================*/ 【程序8】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 main() { int len; char str[20]; printf("please input a string:\n"); scanf("%s",str); len=length(str); printf("the string has %d characters.",len); } int length(p) {char *p; int n; n=0; while(*p!='\0' ) { n++; p++; } return n; } 【程序9】 题目:从键盘输入一个字符串,将小写字母 全部转换成大写字母,然后输出到一个磁盘 文件“test”中保存。输入的字符串以!结束。 #include "stdio.h" main() { FILE *fp; char str[100]; int i=0; if((fp=fopen("test","w"))==NULL) { printf("cannot open the file\n"); exit(0); } printf("please input a string:\n"); gets(str); while(str[i]!='!') { if( str[i]>='a' && str[i]<='z' ) str[i]=str[i]-32; fputc( str[i], fp); i++; } fclose( fp ); } 【程序10】 题目:有n个人围成一圈,顺序排号(编号为n的人的下一个人编号为1)。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 算法分析:输入人数n<50, 用一个数组num表示某一个编号的人是否仍在队列中,数组的下标对应人的编号,数组中的值取0或人的编号,num[i]=i+1表示编号为i+1的人仍在队列中,num[i]=0表示编号为i+1的人不在队列中,num数组的初值为1。计数出列的人数,当出列的人数=n时记录出列人的编号即可。 #define nmax 50 main() { int i, k, count, n, num[nmax]; printf("please input the total of numbers:"); scanf("%d",&n); for(i=0;inum[i]=i+1;
i=0; /*从第一个人进行报数*/ k=0; /*记录报数*/ count=0; /*记录出列的人数*/ while( count < n-1 ) /*n-1人出列*/ { if( num[i] !=0) k++; /*编号i+1在队列 中,进行报数*/ if( k==3 )/*如果报数为3,报数的人出 列*/ { num[i]=0; k=0; count++; } i++; /*计算下一个报数人的编号*/ if(i==n) i=0; /*如果报数人编号超过n, 则下一个编号是1 */ } for(i=0; num[i]==0;i++); /*求队列中最后一人*/ printf(" %d is left\n", num[i]); } ======================================【程序11】 阅读下列程序,写出程序的输出结果
int a, b, c, d; void print_abcd(int b) { int a=5, c=5; a++; b++; c++; d++; printf("2.a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); } main() { a=1; b=1; c=1; d=1; printf("1.a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); print_abcd(b); printf("3.a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);