C语言程序设计试题1一、单项选择题1.C语言规定,在一个源程序中main函数的位置______d___ 。
A.必须在最开始B.必须在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后2.以下选项中,_________d__ 是C语言关键字A.printf B.include C.fun D.default3.已知有声明"int a=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为____a_ 。
A.0 B.3 C.3.5 D.44.设指针变量占4个字节的内存空间,若有声明"char *p="123";int c;",则执行语句"c=sizeof(p);"后,c的值为__d__A.1 B.2 C.3 D.45.已知有声明"int a=3,b=4;",下列表达式中合法的是_d___。
A.a+b=7 B.a=|b| C.a=b=0 D.(a++)++6.已知有声明"char s[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能够实现此功能的是___d_。
A.s="Good"; B.s[20l="Good";C.strcat(s,"Good"); D.strcpy(s,"Good");7.已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};",若需要引用值为12的数组元素,则下列选项中错误的是_a___ 。
A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3]8.已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为_b___ 。
A.3 B.3.0 C.3.89 D.4.09.已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c的值分别为__b__。
A.3,1 B.15,12 C.15,1 D.3,1210.下面的函数定义正确的是_____d________A)float fun (float x ; float y) {return x*y;} B)float fun (float x,y) {return x*y;} C)float fun (x,y) {int x,y;return x*y;} D)int fun (int x, int y) {return x*y;}11.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是_d___。
A.#define P 3.14;B.#define P(3.14)C.#define P=3.14;D.#define P 3.1412.下列四个选项中,属于C语言关键字的是__c__ 。
A.FloatB.singleC.doubleD.real13.已知某编译系统中signed int类型数据的长度是16位,该类型数据的最大值是_D___。
A.32767B.32768C.127D.6553514.以下关于if语句和switch语句的叙述中错误的是B____。
A.if语句和switch语句都可以实现算法的选择结构B.if语句和switch语句都能实现多路(两路以上)选择C.if语句可以嵌套使用D.switch语句不能嵌套使用15.已有声明"char *s1="China",s2[10],*s3="Nanjing",*s4;",以下字符串赋值语句在执行时可能出现错误的是__A____。
A.strcpy(s3,s1);B.strcpy(s4,s1);C.strcpy(s2,s1);D.strcpy(s2,s3);16.已有声明"int x=0,*p=&x;",以下语句中有语法错误的是_B____。
A.printf("%d",*x);B.printf("%d",&x);C.printf("%d",*p);D.printf("%d",x);17.以下叙述中错误的是D_____。
A.在函数外可以声明变量B.变量声明的位置决定了该变量名的使用范围C.函数调用时在函数内声明的变量所得到的值将无法保存到该函数的下一次调用D.在函数外声明的变量,其值可以保存到该程序运行结束18.已有声明"int t=1;",则执行"printf("%d",(t+5,t++));"时输出结果是_D___。
A.1B.6C.2D.719.已有声明"static char *p="Apple";",则执行语句"puts(p+2);"时输出为__D____。
A.AppleB.CppleC.ppleD.ple20.若i是整型变量,pb是基本型为整型的指针变量,则正确的赋值表达式是(A )A. pb=&iB. pb=iC. *pb=&iD. *pb=*i二、填空题1.数学式3x所对应的c语言表达式为pow(x, __(1)__)。
1)32.已知有声明"char ch='g';",则表达式ch=ch-'a'+'A'的值为字符 (2) 的编码。
3.在C语言系统中,如果一个变量能正确存储的数据范围为整数-32768~32767,则该变量在内存中占_____(3)_____个字节。
4.已知有声明"int a[3][2]={{1,2),{3,4},{5,6}},*p=a[0];",则执行语句"printf("%d\n",*(p+4));"后的输出结果为__(4)___ 。
5.已知有声明和语句"int a;scanf("a=%d",&a);",欲从键盘上输入数据使a中的值为3,则正确的输入应是 _____(5)_____ 。
6.C语言源程序中用十六进制表示整型常数必须以___(6)___开头。
7.如果一个循环结构的循环体至少要执行一遍,则最适合描述该循环结构的语句是___(7)___语句。
8.若要声明一个无符号整型变量x,则正确的声明形式是" ___(8)___ int x;"。
9.已有声明"int n=12;double a;",则执行语句"a=n/=5;"后,a的值为___(9)___。
10.若有数据类型定义如下:a)union A{float a1;float a2;};b)则表达式sizeof(union A)的值为___(10)___。
11.C语言源程序的扩展名为.c,可执行文件的扩展名为______(11)_________。
12.数组 int a[4][5];共定义了__(12)____个数组元素。
13.若char str[7]={“cake”};int k=strlen(str);则k的值为______(13)______。
14.C语言中,用_____(14)_____ 关键字来包含如stdio.h之类的头文件。
15.函数的返回值是通过函数中的_________(15)_______语句来获得的。
16.静态局部变量应该用关键字_____(16)_______来进行声明。
17.对于不带返回值的函数,应当用关键字________(17)______定义函数。
18.多分支结构的程序,通常选用___(18)______语句来实现。
19.若char ch[]="25yi6"有以下语句,则编译后分配给数组ch的内存占用的字节数为___(19)_____。
20.下面运算符< , ++ = 按照优先级从高到低排列顺序为__ (20) _。
三、阅读程序题(每小题5分,共20分)1.以下程序运行时输出到屏幕的结果为()。
#include “stdio.h”#define MAX(A,B) A>B?2*A:2*Bvoid main(){int a=1,b=2,c=3,d=4,t;t=MAX(a+b,c+d);printf("%d\n",t);}2. 以下程序运行时输出到屏幕的结果是()。
#include “stdio.h”int g(int x,int y){ return x+y;}int f(int x,int y){{static int x=2;if(y>2){ x=x*x;y=x;}else y=x+1;}return x+y;}void main(){int a=3;printf("%d ",g(a,2));printf("%d ",f(a,3));printf("%d \n",f(a,2));}3. 以下程序运行时输出到屏幕的结果是()。
#include “stdio.h”void fun(char *p1,char *p2);void main(){int i; char a[]="54321";puts(a+2);fun(a,a+4);puts(a);}void fun(char *p1,char *p2){char t;while(*p1){t=*p1;*p1=*p2;*p2=t;p1+=2,p2-=2;}}4.下面程序若从键盘输入:Ref6ugcBDT8e,按回车键, 最后的执行结果是_______ #include <stdio.h>void main ( ){ int m=0,n=0;char c;while ( (c=getchar( ) )!='\n' ){ if (c>='a' && c<='z' ) m++ ;if (c>='0' && c<='9') n++;}printf("n=%d m=%d\n", n,m );}四、程序设计题(每题10分,共20分)1、(10分)从键盘任意输入一个4位数x ,编程计算x 的每一位数字相加之和(忽略整数前的正负号)。