(1)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A)字母 B)数字 C)下划线 D)连接符 (2)计算机能直接执行的程序是( )。
A)源程序 B)目标程序 C)可执行程序 D)汇编程序 (3)有以下定义语句,编译时会出现编译错误的是( )。
A)char a='a'; B)char a='\\n'; C)char a='aa'; D)char a='\\t'; (4)以下选项中正确的定义语句是( )。
A)double a; b; B)double a=b=7; C)double a=7, b=7; D)double, a, b; (5)以下不能正确表示代数式2ab除cd的C语言表达式是( )。
A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d (6)若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。
A)x=y==5; B)x=n%2.5; C)x+n=1; D)x=5=4+1;
(7)设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A)k++ B)k+=1 C)++k D)k+1
(8)以下选项中,当x=3时,值为0的表达式是()。
A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0 (9)下列关于C语言文件的叙述中正确的是()。
A)文件是由一组相关数据组成,只能构成二进制文件 B)文件是由一组相关结
构组成,可以构成二进制文件或文本文件
C)文件是由一组相关数据组成,可以构成二进制文件或文本文件 D)文件是由
一组相关数据组成,只能构成文本文件
(10)以下叙述中错误的是()。
A)C语言是一种结构化程序设计语言 B)结构化程序有顺序、分支、循环
三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡
模块化的设计方法
(11)有以下程序
#include printf(“%c,%d\\n”,c1,c2); } 已知字母A的ASCII码为65,程序运行后的输出结果是() A)E,68 B)D,69 C)E,D D)输出无定值 (12)已知字符‘A’的ASCⅡ代码值是65,字符变量c1的值是‘A’,c2的值是’D’。 执行语句printf(\"%d,%d\后,输出结果是()。 A)A,B B)A,68 C)65,66 D)65,68 (13)若变量已正确定义为int型,要通过语句scanf(\"%d,%d,%d\;给a赋 值1、给b赋值2、给c 赋值3,以下输入形式中错误的是()。 A)<空格>1,2,3<回车> B)1<空格>2<空格>3<回车> 1 C)1, <空格><空格>2, <空格><空格>3<回车> D)1,2,3<回车> (14)在嵌套使用if语句时,C语言规定else总是()。 A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对 C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对 (15)以下关于逻辑运算符两侧运算对象的叙述中正确的是()。 A)只能是整数0或1 B)只能是整数0或非0的整数 C)可以是结构体类型的数据 D)可是任意合法的表达式 (16)有以下程序段 int a, b, c; a=10; b=50; c=30; if (a>b) a=b, b=c; c=a; printf(\"a=%d b=%d c=%d\\n”, a, b, c);程序的输出结果是()。 A)a=10 b=50 c=10 B)a=10 b=50 c=30 C)a=10 b=30 c=10 D)a=50 b=30 c=50 (17)以下叙述中正确的是()。 A)预处理命令行必须位于C源程序的起始位置 B)在C语言中,预处 理命令行都以“#”开头 C)每个C程序必须在开头包括预处理命令行:#include D)C语言的预处理命令 要以分号;结尾 (18)以下叙述中正确的是()。 A)break语句只能用于switch语句题中 B)在switch语句中必须使用default C)break语句只能用在循环体内和switch语句体内 D)在循环体内使用break 语句和continue语句的作用相同 (19)有以下程序 #include for(j=3;j<=i;j++) m=m%j; printf(\"%d\\n\ 程序的运行结果是()。 A)0 B)1 C)2 D)3 (20)有以下程序 #include for(i=3; i>=1; i--) for(j=1; j<=2; j++) printf(\"%d\} 程序的运行结果是()。 A)2 3 4 B)4 3 2 3 4 5 5 4 3 C)2 3 D)4 5 3 4 2 3 (21)以下关于字符串的叙述中正确的是()。 A)C语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才 2 能进行字符串大小的比较 C)可以用关系运算符对字符串的大小进行比较 D)空串一定比空格打头的字 符串小 (22)若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是()。 A)m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]] (23)若有定义语句:char s[10]=\"1234567\\0\\0\";,则strlen(s)的值是()。 A)7 B)8 C)9 D)10 (24)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是()。 A)gets(&s[0]); B)scanf(“%s”,s+1); C)gets(s); D)scanf(“%s”,s[1]); (25)对于一个正常运行的C程序,以下叙述中正确的是()。 A)程序的执行总是从main函数开始,在main函数结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 (26)若函数调用时的实参为普通变量时,以下关于函数形参和实参的叙述中正确的是()。 A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元 (27)以下叙述中错误的是()。 A)C程序是由一个或一个以上的函数组成 B)函数调用可以作为一个独立的语句存在 C)若函数有返回值,需要通过return语句返回 D)C函数必须有形式参数 (28)在C函数的定义和调用中,下面描述正确的是()。 A)函数的定义可以嵌套,函数的调用不可以嵌套 B)函数的定义不可以嵌套, 函数的调用可以嵌套 C)函数的定义和调用都不可以嵌套 D)函数的定义和调用都可 以嵌套 (29)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。 A)scanf(\"%d\ B)scanf(\"%d%d%d\ C)scanf(\"%d\ D) scanf(\"%d\ (30)以下关于指针变量的说法中,错误的是()。 A)定义指针变量时,必须指定基类型 B)定义指针变量时,可以先不指 定基类型 C)一个指针变量,只能指向同类型的变量 D)指针变量的值是地址 二、填空题(每空1分,共10分) (1)已知整型变量a=6,b=7,c=1,则表达式 (a*3-b+c)/5 的值是。 (2).数学公式y1(ab)xy , 写成C语言表达式是 。 2(3)C语言表达式!(3<6)||(4<9)的值是________________。 (4)若有如下定义float f=123.4567;要求输出该数时保留1位小数,共占8列,左对齐, 3 则具体的printf语句是。 (5)设有以下宏定义:# define WIDTH 80 # define LENGTH WIDTH+40 则执行赋值语句:v = LENGTH * 20;( v 为int 型变量)后,v 的值是_______。 (6)从变量的作用域角度分有全局变量和________________________。 (7)如下图所示,在链表中pre指向的结点后面插入p所指向的节点的关键语句是: 和。 其中结构体数据类型和指针变量的定义如下: struct stu { int a; float b; struct stu *next; } *head, *pre,*p; (8)C语言可以处理的文件类型是和。 三、判断题,正确的画,错误的画×(每题1分,共15分) (1)程序中的每一行只能写一条语句。() (2)main可作为用户标识符。() (3)C语言标识符大小写敏感。( ) (4)单目、三目和赋值运算符的结合性为从右到左。( ) (5)在程序运行期间,其值不能被改变的量称为常量。( ) (6)C程序可以由一个或多个函数组成。() (7)只有一个分号“;”的语句称为空语句,空语句不合法,编译时会报错。() (8)用花括号“{}”把一些语句括起来构成的复合语句,可以出现在允许语句出现的任何地方。( ) (9)逻辑运算中,逻辑非“!”的优先级最高,逻辑与“&&”次之,逻辑或“||”最低。( ) (10)switch语句可以嵌套使用,而if语句不可以嵌套使用。( ) (11)continue语句只能用于循环语句中。( ) (12)数组中元素的下标是从0开始的。( ) (13)用户定义的函数,必须包含return语句。( ) (14)函数定义的先后顺序与其被调用的先后次序无关。( ) (15)当局部变量有效时,同名的全局变量不起作用。( ) 四、程序阅读题(每题3分,共15分) 1、 4 int main(void) { int a = 1, c = 65, d = 97; printf(\"a10 = %d, a8 = %o, a16 = %x\\n\ printf(\"c10 = %d, c8 = %o, c16 = %x,cc = %c\\n\ d++; printf(\"d10 = %d, dc = %c\\n\ return 0; } 运行结果: 2、 int main(void ) { int k, j; int a[] = {3, -5, 18, 27, 37, 23, 69, 82, 52, -15}; for(k = 0, j = k; k < 10; k++) if(a[k] > a[j]) j = k; printf(\"m = %d, j = %d\\n\ a[j], j); return 0; } 运行结果: 3、 void ast(int x, int y, int *cp, int *dp) { *cp = x + y; *dp = x - y; } int main(void) { int a, b, c, d; a = 6; b = 3; ast(a,b,&c,&d); printf(\"%d,%d\\n\ return 0; } 运行结果: 4、 int main(void) { char s[] = \"china\ for(p=s+1; p } 运行结果: 5、 long fun(int n) { long s; if(n == 1) s = 1; else s = fun(n-1) + n; return s; } int main(void) { printf(“%ld\\n”, fun(5)); } 运行结果: 四、编程题(共6题,选做5题,共30分) (1)输入三个整数,按照从大到小的顺序输出,如:输入“5 3 6”,输出“6 5 3”。 (2)编程实现求解一元二次方程ax2+bx+c=0的根,由键盘输入a,b,c三个整数,其中a不等于0。提示考虑无实根,单实根,双实根的情况,如输入“1 -3 2”,输出“x1=2, x2=1”。 (3)编写程序实现功能如下:从键盘输入一个字符串(不超过99个字符),可能含有大小写字母、数字、空格、其他符号(如:~!@#$%^&*()等),程序代码实现对字符串中的大小写字母转换,然后输出,如输入“#12a4B 5tBnY 88a”,输出为“#12A4b 5TbNy 88A”。 (4)编写程序实现如下功能:利用一维数组,从键盘输入5个学生的成绩,输出这些学生 成绩的平均分。 (5)利用指针,编程实现strcat的功能:void MyStrCat(char *target, char *source); 将字符串source连接到字符串target的后面. (6)用结构体类型描述一个人的情况,成员包括姓名、工资、年龄,编写程序输入5个人 的情况,然后为每个人做如下操作:增加工资30%、年龄增加一岁,输出修改后的5个人的数据。 6 因篇幅问题不能全部显示,请点此查看更多更全内容5