大连民族大学往年C语言预测卷

本试卷为大连民族大学往年C语言预测卷,题目包括:单项选择题,判断题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

C语言预测卷

一、单项选择题 (共20题,每题2分,共计40分)

(  D  )
1、若有定义char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为 。
A、float
B、char
C、int
D、double
(  D  )
2、有以下程序
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: switch(y)
{
case 0: a++;
break;
case 1: b++;
break;
}
case 2: a++;
b++;
break;
case 3: a++;
b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是________。
A、a=1,b=0
B、a=2,b=2
C、a=1,b=1
D、a=2,b=1
(  C  )
3、以下 是不正确的转义字符。
A、'\\'
B、'\'
C、'\081'
D、'\0'
(  B  )
4、若有定义:int a[4][10]; 则以下选项中对数组元素a[i][j]引用错误的是______。 (0<=i<4,0<=j<10)
A、*(&a[0][0]+10*i+j)
B、*(a+i)+j
C、*(*(a+i)+j)
D、*(a[i]+
(  B  )
5、有以下定义和语句:
struct students {
int num;
char name[20];
char c;
struct {
int grade1;
int grade2;
} s;
};
struct students w,*pw;
*pw=w;
下列赋值语句不正确的是________。
A、num=1002;
B、w.grade1=85;
C、pw->num=1002;
D、w.s.grade2=85;
(  D  )
6、下面关于数组的描述错误的是________。
A、在C语言中数组的名字就是指向该数组第一个元素的指针
B、长度为n的数组,下标的范围是0~n-1
C、数组的大小必须在编译时确定
D、数组只能通过值参数和引用参数两种方式传递给函数
(  C  )
7、计算机中的数有浮点和定点两种表示,浮点表示的数,通常由两部分组成,即________。
A、指数和基数
B、尾数和小数
C、阶码和尾数
D、整数和小数
(  B  )
8、关于过程、自定义函数的调用,正确的叙述是________。
A、实参的数量必须等于形参的数量,它们是一对应的关系
B、实参的数量可以少于形参的数量,多余的形参取逻辑假
C、实参的数量可以多于形参的数量,多余的实参被忽略
D、实参的数量可以多于形参的数量,多余的实参取逻辑假
(  B  )
9、在c语言中,设有数组定义:char array[]="china"; 则数组array所占用的空间为________。
A、5个字节
B、6个字节
C、10个字节
D、12个字节
(  B  )
10、有如下程序
main()
{
int x=3;
do
{
printf("%d",x--);
}
while(!x);
}
该程序的执行结果是______。
A、321
B、3
C、不输出任何内容
D、陷入死循环
(  C  )
11、下面程序段的运行结果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;
A、LANGUAGE
B、language
C、LAN
D、langUAGE
(  C  )
12、以下能将字符串,you are luck!正确读入的语句组是________。
A、char s[80]; scanf("%s",s);
B、char *s: scanf("%s",s);
C、char s[80]; gets(s);
D、char *s; gets(3);
(  B  )
13、下面关于主程序的说法,错误的是________。
A、a.next=q;
B、p.next=&b;
C、p->next=&b;
D、(*p).next=q;
(  C  )
14、以下c程序正确的运行结果是________。
#include<stdio.h>
void main()
{
long y=-43456;
printf("y=%d\n",y);
printf("y=%-08ld\n",y);
printf("y=%08ld\n",y);
printf("y=%+8ld\n",y);
}
A、y=-43456
y= -43456
y= -0043456
y=+ 43456
B、y= -43456
Y=-43456
y=-0043456
Y= +43456
C、y=-43456
y=-43456
y=-0043456
y= -43456
D、Y=-0043456
y=00043456
y= -43456
y=+43456
(  D  )
15、有以下程序
main()
{
unsigned chara,b,c;
a=0x3;
b=a|0x8;
c=b<<1;
printf("%d%d\n",b,c);
}
程序运行后的输出结果是______。
A、-11 12
B、-6 -13
C、12 24
D、11 22
(  D  )
16、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式
(  B  )
17、表达式,0x13&0x17的值是________。
A、0x17
B、0x13
C、0xf8
D、0xec
(  D  )
18、c语言函数的隐含存储类别是________。
A、static
B、auto
C、register
D、extern
(  B  )
19、在C语言中,合法的字符常量是________.
A、'\084'
B、'\x43'
C、'ab'
D、″\0″
(  C  )
20、以下叙述中错误的是________。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、c程序函数体是由左右花括号{}括起来的部分。 
(   T  )
2、字符串常量是由一对双引号括起来的字符序列。 
(   T  )
3、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。 
(   F  )
4、寄存器变量的值也存放在内存中。 
(   T  )
5、在switch语句中,可以根据需要使用或不使用break语句。 
(   T  )
6、数组初始化的常见方式有三种:直接对数组中的所有元素赋值、只对数组中的一部分元素赋值、对数组全部元素赋值但不指定长度。 
(   F  )
7、程序调试就是找出并改正c源程序中的语法错误。 
(   T  )
8、c 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。 
(   T  )
9、以下程序段中,当i大于10或者s大于20时,循环结束。
s = 0;
i = 1;
while(i <= 10)
{
s = s + i;
if(s > 20)
{
break;
}
i++;
} 
(   T  )
10、main函数是c语言的主函数。 

三、编程题 (共3题,每题0分,共计40分)

1、有以下定义:
struct student{
int num; //学生序号
char name[20]; //学生姓名
int math; //数学成绩
}stu[4];
请从键盘输入4条学生信息存入结构体数组stu,之后在屏幕上依
次输出这些学生信息,并计算出数学平均成绩,结果保留2位小数。
【输入形式】每条记录的3个数据都使用空格分隔
【输出形式】分四行输出学生信息,每行数据均使用1个空格分隔;
最后一行显示数学平均成绩,保留2位小数
【输入样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
【输出样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
avg = 69.25
2、编程计算1+4+9+16+25+……+10000之和
3、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。