1、C语言程序设计(一)一、单项选择题1. C语言规定,在一个C程序中,main()函数的位置(_) 。 A) 必须在开始 B) 必须在最后 C) 可以任意 D) 必须在系统调用的库函数之后2. 下列四组C语言标识符中,正确的一组是(_) 。 A) name Char _abc A223 B) abC?c 5bytes -Tianjin _54321 C) print const type define D) include integer Double short_int3. 已知字母A的十进制ASCII代码值为65,下面程序段的输出是(_)。 char ch1, ch2; ch1=A+5-3;
2、 ch2=A+6-3; printf(%d,%cn,ch1,ch2); A) 67, D B) B, C C) 不确定的值 D) C, D4. 若有定义: int x=3, y=2; float a=2.5, b=3.5; 则表达式 (x+y)%2+(int)a/(int)b的值是(_)。 A) 0 B) 2 C) 1.5 D) 15. 设 int a=1,b=2,c=3,d=4,z;则表达式(ab)?(z=c):(z=d)的值为(_)。 A) 4 B) 2 C) 1 D) 36. 以下程序段 int x; scanf(%d,&x); switch (x) case 5: printf(Exc
3、ellent); default: printf(Poor); case 4: printf(Good); case 3: printf(Pass); case 2: printf(Fail); 在执行时,若从键盘输入3,则输出为(_)。 A) Pass B) Passpoor C) PoorPassFail D) PassFail7. 若用数组名作为函数调用的实参,则传递给形参的是 (_)。 A) 数组的首地址 B) 数组第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数8. 若有说明 double b76; 则对其元素的非法引用是(_)。 A) b35 B) b75 C) b2
4、*34 D) b09-6 9. 程序 main() char name7; scanf(%s,name); printf(name=%s,name); 执行时输入:China Tianjin,则程序的输出为_ 。 A) name=China B) name=China Tianjin C) name=China T D) name=Tianjin10. 完成编译预处理的工作是在(_)完成的。 A) 编译时 B) 编译前 C) 编译后 D) 执行时11. 程序中定义以下宏 #define w 3 #define L w+4 若定义int val;且令val=L*L,则变量val的值为(_)。 A
5、) 14 B) 19 C) 24 D) 4912. 若定义 int a,b,*p1=&a,*p2=&b; 使p2指向a的赋值语句是(_)。 A) *p2=&a; B) p2=&p1; C) p2=&*p1 D) p2=*&a; 13. 定义以下结构体数组 struct int num; char name10; x3=1,china,3,USA,4,England; 语句printf(n%d,%s,x1.num,x2.name)的输出结果为(_)。 A) 2,USA B) 4,England C) 3,USA D) 3,England14. 定义联合数据类型 union int a; int
6、b; int c; int d; x; 执行语句 x.a=2;x.b=3;x.c=4;x.d=5;后,x.c的值为(_)。 A) 2 B) 3 C) 4 D) 515. 程序 int f(int a) static int b=2; b+; return(a+b); main() int a=2,i; for (i=0;i3;i+) printf(%d ,f(a); 执行时,输出结果为_ 。 A) 5 5 5 B) 5 6 7 C) 4 5 6 D) 6 6 6二、读程序,写出程序的运行结果1. 程序 void test( int *x,int *y) *x=9; *y=10; main()
7、int a=5,b=7; test(&a,&b); printf(n%d,%d,a,b); 执行时的输出结果是_。2.程序 #include stdio.h main() int i=0; while(i7) if(i%3) printf(*); else printf(+); i+; 执行时的输出结果是_。三、编程题1. 编写程序,输入一个华氏温度F,要求输出摄氏温度C。计算公式为:c=5/9(f-32). 2. 有一函数, 编写程序,输入x,输出函数值y。3. 有一分数序列,计算上述分数列,前20项之和。4. 有一个一维数组a10,求数组中数值最小的元素,及其下标值。 main() int
8、 a10=12,34,23,56,78,11,45,66,79,32; 5. 按行列方式输出二维数组a34,并计算其中所有值大于10的元素之和。 main() int a34=2,4,12,16,8,13,5,6,9,32,10,14;6. 编写函数void fun(char *s1,char *s2),其功能是将字符串s2连接到s1后边。 Eg: 字符串s1为: This is a boy! 字符串s2为: That is a girl! 连接后,字符串s1为:This is a boy! That is a girl! void fun(char *s1,char *s2) main()
9、char sa50=” This is a boy!” char sb50=” That is a girl!” fun(sa,sb); printf(“nThe result string is: %s”,sa); 7. 编写函数 fun(int s,int n,int x),其功能是删除数组s中的一个值为x的元素。 Eg: s10: 2,4,6,9,10,12,14,15,16,18 x=6 删除后,数组s10:2,4,9,10,12,14,15,16,18,剩余9个有效元素。 void fun(int *s,int n,int x) main() int a10= 2,4,6,7,6,8,16,6,9,12; int x,int y; printf(“nPlease enter x:”); scanf(“%d”,&x): printf(“n The original array is:”): for (i=0;i10;i+) printf(“%d”, ai); fun(a,10,x); printf(“n The result is:”): for (i=0;i9;i+) printf(“%d”, ai);