1、 C语言程序设计作业题20120413一、填空题1、C语言中基本的数据类型有:整型 、实型 、字符型 。2、C语言中普通整型变量的类型说明符为int ,在内存中占4 字节,有符号普通整型的数据范围是-231(231 -1) 。3、执行下列语句int a=8; a+=a-=a*a; 后,a的值是-112 。4、有如下语句:char A =”I am a student”; 该字符串的长度是14 ,A3=m 。5、符号”a”和a的区别是 “a”为字符串常量,a为字符常量 。6、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为
2、2,从键盘输入数据的正确形式应是a=1,b=3,c=2 。 二、选择题1、设整型变量a为5,使b不为2的表达式是(C )。 A. b=a/2 B. b=6-(-a) C. b=a%2 D. b=a3?2:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与(C )组成配对关系。A. 缩排位置相同的if B. 在其之前未配对的ifC. 在其之前未配对的最近的if D.同一行上的if3、以下程序的输出结果是(D )。 int x=10,y=10; printf(“%d %dn”,x-,-y); A. 10 10 B. 9 9 C. 9 10 D. 10 94
3、、 设A为存放(短)整型的一维数组,如果A的首地址为 P,那么A中第i 个元素的地址为(B )。AP+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i5、选出下列标识符中不是合法的标识符的是(D )。 A. hot_do B. cat1 C. _pri D. 2ab6、以下程序的输出结果是(A )。 int a=5; float x=3.14; a*=x*(E - A); printf(“%fn”,(float)a); A. 62.000000 B. 62.800000 C. 63.000000 D. 627、以下程序的输出结果是(D )。 char str15=”hell
4、o!”; printf(“%dn”,strlen(str); A. 15 B. 14 C. 7 D. 68、分析以下程序的输出结果是(A )。 main() int a=5,b=-1,c; c=adds(a,b); printf(“%d”,c); c=adds(a,b); printf(“%dn”,c); int adds(int x,int y) static int m=0,n=3; n*=+m; m=n%x+y+; return(m); A. 2,3 B. 2,2 C. 3,2 D. 2,49、下列描述中不正确的是(C )。A. 字符型数组中可能存放字符串。B. 可以对字符型数组进行整体
5、输入、输出。C. 可以对整型数组进行整体输入、输出。D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。10、以下程序的输出结果是(C )。#define f(x) x*xmain()int a=6,b=2,c;c=f(a)/f(b);printf(“%dn”,c); A. 9 B. 6 C. 36 D. 1811、设有如下定义: int x=10,y=3,z;则语句printf(“%dn”,z=(x%y,x/y); 的输出结果是(D )。A. 1 B. 0 C. 4 D. 312、定义如下变量和数组:int i; int x33=1,2,3,4,5,6,7,8,9;则语句fo
6、r(i=0;i5) printf(%d,x); else printf(%dn,x - -); A. 7和5 B. 6和3 C. 7和4 D. 6和415、不能把字符串:Hello!赋给数组b的语句是(B )。 A. char b10=H,e,l,l,o,!; B. char b10; b=Hello!; C. char b10; strcpy(b,Hello!); D. char b10=Hello!;三、读程序题1、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f); 则程序的输出结果是3.141593,3.1416,3.142 。2、int
7、x=6, y=7; printf(“%d,”,x+); printf(“%dn”,+y); 程序的输出结果是6, 8 。 3、a=3; a+=(a1)?a:1; printf(“%d”,a); 结果是4 。4、for (a=1,b=1;a=20) break;if(b%3=1)b+=3; continue;b-=5; 程序的输出结果a的值为8 。四、程序填空题1、从键盘上输入10个数,求其平均值。 main()int i;float f,sum;for(i=1,sum=0.0;i=0.0) if(xamax) amax=x;if(x=amin) amin=x;scanf(%f,&x);prin
8、tf(namax=%fnamin=%fn,amax,amin); 五、编程题1. 三个整数a、b、c,由键盘输入,输出其中最大的一个数。#include void main() int a,b,c; printf(请输入三个整数:n);scanf(%d%d%d,&a,&b,&c);if(ab&bc)printf(max=%dn,a);else if(bc)printf(max=%dn,b);elseprintf(max=%dn,c);2.输出19002000年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)#includ
9、e void main() int x,y=0; printf(1900年-2000年中的闰年有:n); for (x=1900; x=2000;x+) if (x%400=0|x%4=0&x%100!=0) printf(%6d,x); y+;if(y%3=0)printf(n);3.请编一个函数int fun(int a),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。#include #include int fun(int a) int s,i,m; m=(int)sqrt(a);if(a3) s=0;if(a=3) s=1;for (
10、i=2;i=m;i+)if (a%i=0) s=0; break; else s=1; return s;void main() int a,s; printf(请输一个正整数:a=); scanf(%d,&a); s=fun(a);if (s=1)printf(%d是素数n,a);if (s=0)printf(%d不是素数n,a);if (s=1)错误,int fun(int a)中已将1的值赋给s,要在if中进行具体的数值判断,非逻辑。4.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成
11、绩。数组中不可有变量,故必有#define N 10000messagen3:学号,姓名,性别,scoren5: A,B,C,D,总分;savgn:总平均成绩。#include #define N 10000void main() char strN2; int scoreN6; float avgN; char m2,m3;int i,j,n,m1; float max; printf(学生人数:); scanf(%d,&n); printf(学号t姓名t性别tA科成绩tB科成绩tC科成绩tD科成绩n);for(i=0;in;i+) scanf(%d%s%s%d%d%d%d,&scorei0,stri0,stri1,&scorei1,&scorei2,&scorei3,&scorei4); for (i=0;in;i+) scorei5=0; for (j=1;j5;j+) scorei5+=scoreij; avgi=(float)scorei5/4; for (i=0;i=avg0) max=avgi; m1=scorei0; m2=stri0; m3=stri1; printf(总平均成绩最高的学生信息是:学号%d 姓名%s 性别%s 平均成绩%3.1fn,m1,m2,m3,max);