C语言程序设计练习
- 格式:docx
- 大小:27.43 KB
- 文档页数:6
C语言程序设计练习(一)一、基础题1.如下字符序列,能用作标识符的是。
A.Day B.e10 C.2n D.a[10] E.BirthdayF.aAbB G.a+b H.a++ I.day_of_year2.如下是出现在程序中的常量,正确的是。
A.58.1 B..314e1 C.e5 D.1e2 E.0123F.0xabc G.'ab' H.'*' I."a+b"J.'\456' K.087 L.9853.已有变量定义:int i,j,k; ,当执行下列运算后,写出指定变量中的值。
A.i='D'; i中值为B.i=0xef+'a'; i中值为C.i=10;j= i ++; i中值为j中值为D.i=10;j=++i; i中值为j中值为E.i=5;j=6;k=i++%2 && j++%2; i中值为j中值为k中值为F.i=5;j=6;k=i++%2 || j++%2; i中值为j中值为k中值为G.i= -5;j=-10<i<0; j中值为H.i= -5;j= -10<i && i<0; j中值为I.i=5; j=6;k=i%2 ? i/2: j/2 ? i++:j++; i中值为j中值为k中值为J.i=5; j=6;k=(i%2 ? i/2:j/2)? i++:j++; i中值为j中值为k中值为K.i=5;j=6;j+=i*=j%=i/=2; i中值为j中值为L.i=5;j=6;j+=i*=j%=i/2; i中值为j中值为M.在微机系统中:sizeof(char)值为sizeof(int) 值为sizeof(float)值为sizeof(double) 值为N.i=3.14+(int)5.8%3/2; i中值为4. 设有数学式子:abb a y 222-= 试写出根据变量a ,b 中的值计算出的值存于y 中的C 语言表达式。
5.设有变量定义 int m=6, n=10, x; 执行如下两个程序段后,x 中的值各为多少?(1)x=0; (2)x=0;if(m<n) if(m<n){ if(m==5) if(m==5)x=1; x=1;} elseelse x= -1;x=-1;x= x=6.设有变量定义 char a='A'; 假设已知字符A 的ASC Ⅱ码为0x41,问printf("a=%d a=%c",a+5, a+5); 被执行后,输出结果是什么?7.设有变量定义 int i, s; 问执行语句:for(i=s=1; i==5; i++) s+=i; 后,s 和i 中各为多少?二、 读程序,写出输出结果1.main(){ int a,b,c,m;scanf("%d %d %d",&a,&b,&c);m=0;if(a<b)if(a%2 && b%3 || c%5) m=1;else if(a+b/c <=10) m=2;else m=3 ;printf("\n m=%d",m);}第一次运行时,输入:5 8 10第二次运行时,输入:8 10 52.main(){ int a, b, c, d, x;a=c=0;b=1; d=20; x=10;if(a) d-=10;else if(!b)if(!c) x=15;else x=20;printf("\n d=%d x=%d",d,x);}3.main(){ int a, b, c;a=0; b=2; c=3;switch(a){ case 0: switch(b==2){ case 1: printf("@"); break;case 2: printf("%"); break;}case 1: switch(c){ case 1: printf("&"); break;case 2: printf("*"); break;default: printf("#"); break;}}}4.main(){ int i, c, s;c=s=0;for(i=1; i<50; i++)if(!(i%7)) { c++; s+=i; } printf("\n c=%d s=%d",c, s);}5.main(){ int i, r, s, t;r=s=t=0;for (i=1;i<=10;i++)switch(i%3){ case 0: r+=i; break;case 1: s+=i; break;case 2: t+=i; break;}printf("\n r=%d s=%d t=%d", r, s, t); }6.main(){ int i, b, k=0;for(i=1; i<=5; i++){ b=i%2;while(b-- >= 0) k++;}printf("\n k=%d",k);}7.main(){ int k=0; char c='A';do{ switch(c++){ case 'A': k++; break;case 'B': k--;case 'C': k+=2; break;case 'D': k%=2; continue;case 'E': k*=10; break;default: k/=3;}k++;}while(c< 'G');printf("k=%d",k); }8.int fun1(int n){ int p=1;while (n){ p*=n; n--;}return p;}main(){ int a;a=fun1(5);printf("\n a=%d",a);}9.int gcd(int a,int b){ int r;r=a%b;if(r) return gcd(b,r);return b;}int lcm(int a,int b){ return a*b/gcd(a,b);}main(){ int a,b,g,m;scanf("%d %d",&a,&b);g=gcd(a,b);m=lcm(a,b);printf("\n g=%d m=%d",g,m);}输入:30 75三、按要求编写函数1.写一个判断闰年的函数,判断一个年份是否是闰年,若是返回1,不是返回0。
2.写一个英文字符的大写转换函数,判断一个字符是否是小写英文字符,若是返回它的大写字符,若不是返回原字符。
3.写一个函数求一个整数的最大构成数字,例如整数3716847的最大构成数是8。
4、写一个函数分离一个实数的整数部分和小数部分,结果能返回到主调函数。
例如48.343,整数部分为48,小数部分为0.343。
四、编程题1、 输入n 个整数,分别统计正数,负数和0的个数并输出2、 计算 !)1()(0n x x s n n n∑∞=-= 的前若干项的和,每一项 m t ,当610-<m t 时结束,输入x ,求s ,要求编写用户自定义函数完成求和。
3、 求n 个输入的数中最大值,最小值,平均值分别为多少。
4、 完美立方:a3=b3+c3+d3,例如 63=33+43+53。
输入一个N ,输出所有符合1<a,b,c,d<=N范围内的完美立方组合。
例如:输入24输出6 3 4 512 6 8 1018 2 12 1619 3 10 1820 7 14 1724 12 16 20思考:在程序中设置一个n 记录计算循环执行的次数,优化你的程序,使n 变小。
五、案例设计题1.问题描述细菌繁殖问题。
一种细菌的繁殖速度是每天成倍增长,例如第一天有10个,第二天有20个,第三天有40个,第四天80个,……以此类推。
现在给出第一天的日期和细菌个数,要求编写程序求出到某一天的时候,细菌的数目。
2.输入数据第一行表示测试数据的数目n其后每行一组测试数据,包括细菌个数,起始日期和结束日期输入示例:31 2011-1-1 2011-1-210 2000-2-28 2000-3-22 2011-12-30 2012-1-104.输出数据每行一组测试数据的结果,输出示例28040965.要求采用模块设计,设计功能模块完成算法中的独立功能。