《C 语言程序设计》试卷 A-带答案一、单项选择题(每题 2 分,共 20 分)1、下列有关 C 语言的叙述中错误的是(D)A)C 语句必须以分号结束B)任何一个 C 程序中有且只有一个主函数C)复合语句在语法上可被看作一条语句D)C 程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)。A) MAINB) _HJC) 2ongD)LINE13、以下能正确定义一维数组的是(C)。A) int a[5] = {0,1,2,3,4,5}; B) int a[5] =” 012345”;C) char a[ ]=” 012345”;D) char a[5] = {0, 1, 2, 3, 4, 5};4、执行下列程序段后输出的结果是(C)。x = 9;while (x > 7){ printf(“*” ); x; }A)**** B) ***C) **D) *5、设 char str1[10] = "ABCDE”, str2[10] = "xyz”;则执行语句 printf“%d”,strlen(strcpy(str1,str2)));后的输出结果是(D)。解析:strcpy(str1,str 后;str1[]里是"XYZ", Z 后面有字符串结束符strcpy(str1,str2 执行后,函数返回的是 str1,因为 str1[]里是新值"XYZ",而strlen(strcpy(str1,st 就是 strlen(str 的新值),所以得 3。strlen 统计到字符串结束符以前,即,不计入字符串结束符。A)9 B) 8C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的是(A)。A)数组的首地址 B)数组第一个元素的值C)数组中全部元素的值 D)数组元素的个数7、在 C 程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)。A)voidB)double C)int D)char8、下面不能正确进行字符串赋值操作的语句是(C)。A)char s[5] = {"ABCD"};B) char s[5]; s="ABCD";C) char *s; s="ABCDEF";D) char *s="ABCD";解析:这样理论上的没错的把 s 指针指向字符串可以改变 s 指针但不能改变其指向的值正确的应该是这样 char s[] = "ABCDEF";或 char s[8];strcpy(s, "ABCDEF");9、设有说明 int s[5] = {1,3,5,7,9}; int *p=s;则下列表达式中值为 3 的是(C)。A)++pB)++(*p) C) *(++p) D) *(p+=2)解析:A 是把 p 得地址后移一个 int 单位长度,即使 p 指向数组的第二个元素。B 是取得 p 当前指向的元素值然后加 1,即 1+1=2;C 是先移动 p,使其指向第二个元素,然后取得当前指针指向的元素值,即 3.D 是先使 p 指向数组的第三个元素,然后去的当前指针指向的元素的值,即 5。10、下面程序的输出结果是(B)。int m=13;int fun( in...