三校联考错题(大一期末)
1.结构体成员的类型必须是基本数据类型。
false
除了基本数据类型,还可以是构造类型,如数组、结构体(struct)、共用体(union)、枚举类型(enum)
2.语句填空:下列 for循环语句将输出: 0 1 2 0 1 2 0 1 2
for( i=1; i<=9; i++ ) printf("%2d",--------);
答案不定:i%3-1+!(i%3)*3 或 (i-1)%3
3.char word[3][10]={ "China", "Denmark", "Spain"}, 则printf(“%s”, & word [1][3]) 的值为 mark
传送要打印的是地址,然而打印字符串并不会在第一个就截止,而是接着打印下去
4.函数的构成
C 函数是由 FI 构成的。
A) 常量
B) 变量
C) 运算符
D) 表达式
E) 语句
F) 函数首部
G) 函数类型
H) 函数名
I) 函数体
J) 函数参数
K) 函数值
注:请按顺序填大写字母。
5.若int
型变量为32
位的,则下面这段代码,打印输出的是结果是 4,666
。
#include <stdio.h>
int main(){
int a;
a = 3;
printf("%ld,", sizeof(a = 666));
printf("%d", a);
return 0;
}
false
注意:sizeof不能进行运算,包括赋值。
6.在对全部数组元素赋初值时,可以不指定数组长度。
true
描述形式:a[]={0,1,2,3}
这是被允许的。
7.链表是动态存储分配的数据结构。根据需要动态地开辟内存空间,可以比较自由方便地插入新元素(结点),支持随机访问,故使用链表可以节省内存,操作效率高。
false
由于每个节点都包含一个指针,故耗费内存比数组大。
8.使用switch语句做分支判断的时候,只能判断常量表达式。
true
9.if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句或者是用{}括起来的复合语句。
if (表达式)
语句1;
else
语句2 ;
true
10.以下对字符数组进行初始化,错误的是( )。
A.char c1[3]={'1','2','3'};
B.char c2[3]="123";
C.char c3[ ]={ '1','2','3','\0'};
D.char c4[ ]="123";
B
"123"是字符串,共包含四个字符,c[3]最多只容纳三个字符。
11.递归函数的二个要素是( )。
A.函数头、函数体
B.递归出口、边界条件
C.边界条件、递归方程
D.递归表达式、递归方程
C
回忆一下,反正我已经忘了。
12.假设变量 x 数据类型为 int,且初始值为2,则执行下面代码段后 while(x--); printf(“%d\n”,x); 程序的输出结果是:( )
A. 2
1
0
B. -1
C. 1
0
D.死循环
B
细节,注意while语句后的分号
13.执行以下程序,写出运行结果:11
#include<stdio.h>
int fun_x(const char *s)
{
if(!*s)
return 0;
else
return (1 + fun_x(s+1));
}
int main()
{
char str[]="helloworld!";
printf("%d",fun_x(str));
return 0;
}
fun_x 的功能是求字符串长度
14.写出下列程序段的运行结果
程序段1:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
if(x>=80)printf("B");
if(x>=70)printf("C");
if(x>=60)printf("D");
if(x<60)printf("E");
如果输入88分,则程序结果为 BCD
程序段2:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
if(x>=80&&x<90)printf("B");
if(x>=70&&x<80)printf("C");
if(x>=60&&x<70)printf("D");
else printf("E");
如果输入88分,则程序结果为 BE
程序段3:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
else if(x>=80)printf("B");
else if(x>=70)printf("C");
else if(x>=60)printf("D");
else printf("E");
如果输入88分,则程序结果为 B
程序段4:
int x;
scanf("%d",&x);
if(90<x<=100)printf("A");
if(80<=x<90)printf("B");
if(70<=x<80)printf("C");
if(60<=x<70)printf("D");
if(0<x<60)printf("E");
如果输入88分,则程序结果为 ABCDE
细节自行体会
15.请写出下面程序段的执行结果: 678
int i=1;
while(i%=4)
{
i+=5;
printf("%d",i);
}
16.程序填空题注意事项:
(1.语句后是否有分号“ ;”
(2.是否漏写,或多写条件(尤其是for循环中的条件)
(3.打印的语句与自己想的是否一致