内容发布更新时间 : 2025/1/4 0:27:01星期一 下面是文章的全部内容请认真阅读。
C语言程序设计期末复习题
阅读下列程序,掌握程序的输入、 输出、算法、使用的数据
}
main()
【程序1】
题目:将一个数组中的元素逆序输出。
#define N 5 {
int a, b; main()
{ int a[N]二{9,6,5,4,1 },i,temp; printf(\scanf(“ %d,%d\arrayAn%uMM,a[i]); for(i=0; i printf(\M); for(i=0; i printf(”%4d”,a[i]); } 【程序2】 题目:求一个N*N矩阵对角线元素之和 #define N 4 main() { int a[N][N], sum=0; int i,j; printf(nplease input rectangle element:\\nH); for(i=0;i for(j=0;j [j]); for(i=0;i 【程序3】 下列程序运行后输岀结果是 void swap (int *pl, int *p2) { int temp; temp = *pl; *pl = *p2; *p2 = temp; 【程序5】 题目:用选择法对10个数进行从小到大的排 序 讦(a printfC4a=%d,b=%d,'\\n,a,b); } 输入/^6, 4则输岀结果为 ______________________ =====================================^/ 【程序4】 题目:有一个已经按升序排好序的数组。现 输入一个数,要求按原来的规律将它插入数 组中。 main() { int a[ll]={l ,4,6,9,13,16,19,28,40,100}; int temp 1, temp2, number, end, i, j; printf(\array is:\\n\ for(i=0; i<10; i++) printf(H]H,a[i]); printf(u\\nH); printf(\M); scanf(u%dn,&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?l]; a[i]二number; break; } for(i=0;i 程序源代码: #define N 10 main() { int i, j, min, tem, a [NJ; /*input data*/ printf(\for(i=0;i { printf(\M,i); scanf(”%cT,&a[i]);} /*sort ten num*/ for(i=0;i for(j=i+l;jvN;j++) if( a[min] > a[j]) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; } /^output data*/ printf(uAfter sorted \\n\for(i=0;i 【程序6】 题目:读程序,给岀程序的运行结果。 #include \#define M 7 main() { int a[M]={ 1,2,3,4,5,6,7}; int i,j,t; i=0; j=M-l; while(i < j) { t= *(a+i); *(a+i)=*(a+j); *(a+j)二 t; i++; j—; } for(i=0;i printf(n%dn,*(a+i)); 【程序7】 题目:设全班有40名同学,计算全班数学成平均分,并统计低于平均分的人数。 绩的 #define N 40 main() { int classfN]; float sum, ave; int number, i; sum=0; number=0; printf(Hplease enter student score11); for (i=0 ; i { scanf(n%dH, &class[i]); sum += class[i]; } ave= sum/N; for (i=0; i if (class[i] 【程序8】 题目:写一个函数,求一个字符串的长度, 在main函数中输入字符串,并输出其长度。 main() { intlen; char str [20]; printf(Hplease input a string:\\nH); scanf(\len=length(str); printf(Hthe string has %d characters/'Jen); } int length(p) {char *p; int n; n=0; while俨p!二) { n++; P++; return n; } 【程序9】 题目:从键盘输入一个字符串,将小写字母 全部转换成大写字母,然后输岀到一个磁盘 文件“test”中保存。输入的字符串以!结束。 i=0; /*从第一个人进行报数*/ k=0; /*记录报数 */ count=0; /*记录出列的人数*/ while( count < n-1 ) /*n-l 人出列*/ { if( num[i] !=0) k++; /*编号 i+1 在队列 中,进行报数*/ if( k==3 )/*如果报数为3,报数的人岀 列*/ { #include \main() { FILE *fp; char str[100]; int i=0; if((fp=fopen(,,test\;,w,,))==NULL) { printf(Mcannot open the file\\nn); exit(O); } printf(\H); gets(str); while(str[i]!-!') { if( str[i]>=,a, && str[i]<='z,) str[i]=str[i]-32; fputc( strfi], fp); i++; } fclose( fp); 【程序10] 题目:有n个人围成一圈,顺序排号(编号 为n的人的下一个人编号为1 )。从第一个人 开始报数(从1到3报数),凡报到3的人退 岀圈子,问最后留下的是原来第几号的那位。 算法分析:输入人数n<50,用一个数组num 表示某一个编号的人是否仍在队列中,数组 的下标对应人的编号,数组中的值取0或人 的编号,num[i]=i+l表示编号为i+1的人仍在 队列中,num[i]=0表示编号为i+1的人不在队 列屮,num数组的初值为1。计数出列的人数, 当出列的人数二n时记录岀列人的编号即可。 num[i]=0; k=0; count++; } i++; /*计算下一个报数人的编号*/ if(i==n) i=0; /*如果报数人编号超过n, 则下一个编号是1 */ } fbr(i=0; num[i]==0;i++); /*求队列中最后一人*/ printf( %d is left\\n, num[i]); HM 【程序111 廁读下列程序,写出程序的输出结果 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\ } #define nmax 50 main() { int i, k, count, n, num[nmax]; printf(uplease input the total of numbers:1'); scanf(H%dH,&n); for(i=0;i main() { a=l; b=l; c=l; d=l; printf(\print_abcd(b); printf(H3.a=%d,b=%d,c=%d,d=%d\\n\