1、北京工业大学C语言部分练习答案练习1 分支1.若从键盘输入58,则以下程序段的输出结果是(58 58 58):int main(void) int a; scanf(“%d”,&a); if (a50) printf(“%d”,a); if(a40) printf(“%d”,a); if(a30) printf(“%d”,a); return 0;2.下列程序运行的输出结果是(9):没有遇到break语句,继续执行到switch语句结束 int main(void)char c=b;int k=4;switch(c) case a: k=k+1; break; case b: k=k+2; c
2、ase c: k=k+3;printf(“%dn”,k); return 0;练习2 循环一、读程序写结果1.阅读下列程序并回答问题:main() inti,j,k=0,m=0; for(i=0;i2;i+) ; /*第6行*/ for(j=0;j3;j+) k+; m+; /*第9行*/ printf(“k=%d,m=%dn”,k,m);(1)程序的输出是_k=6,m=2_。(2)将第9行改为“m=m+k;“ ,程序的输出是_ k=6,m=9_。(3)将第6行改为“k=0;”,将第9行改为“m=m+k;”,程序的输出是_ k=3,m=6_。2.请阅读下面的程序,并回答下列问题#include
3、 int main()int digit=0,letter=0, other=0; charch; printf(Enter a line text:); do ch = getchar(); if(ch= a &ch= A &ch= 0 &ch= 9) digit +; else other +; while(ch!=n); printf(letter=%d, digit=%d, other=%dn, letter, digit, other);(1)若在程序运行时输入 Today_is_2013/12/28letter=7, digit=8, other=5(2)简述程序的主要功能:统计输
4、入字符串中字母数字和其他字符的个数。3.请阅读下面的程序,并回答下列问题#include void main()int count, i, n,num; double average, total; printf(Enter n: ); scanf(%d, &n); count = 0; for(i = 1; i = n; i+)scanf (%d, &num); if(num%2=0) count+; printf(%dn, count);(1)若在程序运行时输入:586947运行结果是:3(2) 简述程序的主要功能:统计输入的数字中偶数的个数4.请阅读下面的程序,并回答下列问题#inclu
5、de int main(void) charch;int i;for(i=1;i=a&ch=y) ch=ch+1; else if(ch=z) ch=a;putchar(ch); return 0; (1)若在程序运行时输入size5,输出结果是:tjaf5(2)简述程序的主要功能:对字符加密,a到y的向后推一位,z变成a,其他不变。二、填空题1.下面程序的功能是计算1001000之间有多少个数其各位数字之和是5.#include void main() inti,s,k,count=0; for(i=100; i=1000;i+) s=0;k=i; while(_k!=0_) s=s+k%1
6、0;k=_k/10_; if(s=5) count+; printf(%d,count);2.下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大数。#include void main() intn,count=0,max=0,t; scanf(%d,&n); do t=_n%10_; if(t=0) count +; else if(max0); printf(count=%d,max=%d,count,max);练习3 函数一 . 阅读程序1.#include int fun( int n) int i, sum = 0 ; for ( i = 1; i = n; i+
7、) sum = sum + (2 * i - 1); return sum; int main( void) int n; printf(Enter n: ); scanf (%d, &n); printf ( sum = %dn, fun(n); return 0;假设输入6,运行结果是:362.#include int fun( int m, int n ) ;int main( ) int x, y, z, s; x=2; y=4; z=7; s=fun(fun(x, y), z); printf(%dn,s); return 0; int fun( int m, int n) if(
8、mn) return m; else return n;(1)运行结果是::7(2)fun函数的功能:比较数字大小并输出较大的数二. 程序填空1. 下面程序的功能是求a的n次方。其中自定义mypow函数计算x的y次方。#include void main() double a,pow; int n;double mypow(double x,int y); printf(“请输入一个数:n”); scanf(“%lf”,&a); printf(“请输入次方:n”); scanf(“%d”,&n); Pow=mypow(a,n) ; printf(“%.2lf的%d次方为:%.2lf”,a, n
9、, pow);double mypow(double x,int y) double s=1; for( ;y0; y-) s= s*x ; return s; 练习4 数值数组一、阅读程序1.#include main( ) int fib6; int i; fib0=0; fib1=1; for (i=2; iNUM; i+) fibi = fibi-2+fibi-1; for (i=0; iNUM; i+) if (i%3=0) printf(n); printf(%6d, fibi); (1)程序的运行结果是:0 1 12 3 5(默认num等于6了)(2)简述程序的主要功能:按后一项
10、等于前两项和的计算方法输出前6项,并每隔三个数字换行一次2.#include int main( void) int a8= 11,12,13,14,15,16,17,18 ; int i=0, sum=0; while( i=7 ) if( ai%2=1 ) sum=sum+ai; i+; printf(%dn,sum);return 0;程序的功能是: 计算数列中奇数的和输出结果是:563.#includeint main(void) float s6=1,3,5,7,9;float x;int i; scanf(“%f”,&x); for(i=4;i=0;i-) if(six) si+1
11、=si; else break; printf(“%dn”,i+1); return 0;如果输入4,则输出 2 如果输入5,则输出 3 找到合适的插入位置4.#include void main(void) int a10,max,min,i,sum; for(i=0;i10;i+) scanf(“%d”,&ai);max=min=sum=a0; for(i=1;imax) max=ai;if(aimin) min=ai; printf(max=%d,min=%d,sum=%dn,max,min,sum);(1)若在程序运行时输入:3 1 4 7 10 8 9 2 6 5 程序的输出结果是:
12、max=10,min=1,sum=55(2)简述程序的主要功能:输出数组中的最大最小值和所有数的和5.#include #include int prime(int m) int i,result=1; for (i=2; i=m/2; i+) if (m % i=0) result =0; if (m=1) result =0; return result; void main() int a10,i,sum=0; for(i=0;i10;i+) scanf(%d,&ai); count=count+prime(ai); printf(count= %d ,count); (1)若在程序运行
13、时输入:1 2 3 4 5 6 7 8 9 10 程序的运行结果为:4(2)简述prime函数的主要功能:判断是否是素数,是素数输出1,不是输出0二、填空题下列程序的功能是:求出数组x中各相邻两个元素的和一次存放到数组a中,然后输出.#includeint main(void) int x10,a9,i; for (i=0;i10;i+) scanf(“%d”,&xi); for( i=1 ;i10;i+) ai-1=xi+ xi-1 ; for (i=0;i9;i+) printf(“%d”,ai);练习5 字符数组1.该程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不
14、变。#include #include int main( void) char a =natural, t; int i, j, k; k=strlen(a); /strlen()函数用来求数组的长度 for( i=0; ik-2; i=i+2 ) for(j=i+2;j=k; j=j+2 ) if( aiaj ) t=ai; ai=aj; aj=t; puts(a); return 0; 2#include void main() char s80; int i=0; gets(s); while(si!=0) if(si=a & si=z) si=si-a+A; i+; puts(s);
15、 (1) 若在程序运行时输入Happy!运行结果是:HAPPY!(2) 简述程序的主要功能:将输入的字符串中的小写字母转换为大写字母2.这个程序的功能是:将以字符串形式给出的时间分解成数值型表示的小时、分钟、秒,并显示输出。例如,字符串形式表示的时间是“10:50:27”,运行程序后,在屏幕上应该显示输出The time is :10 hours, 50 minutes, 27second 的字样。请填空完成。#include main( )char time = 10:50:27;int hour, minute, second;hour = (time0-0)*10+time1-0;minute = (time3-0)*10+_time4-0_ ;second = _(time6-0)*10_ +time7-0;printf(nThe time is :%d hours,%d minutes,%d seconds, hour, minute, second);