宁波工程学院历年计算机C语言期末

本试卷为宁波工程学院历年计算机C语言期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言期末

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、有以下程序
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3, d = 0;
if (a == 1 && b++ == 2)
if (b != 2 || c-- != 3)
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
}
程序运行后的输出结果是________。
A、1,2,3
B、1,3,2
C、1,3,3
D、3,2,1
(  B  )
2、有以下结构体说明和变量的定义,且指针p指向变量a’指针q指向变量b,则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node*next;
}
a,b,*p=&a,*q=&b;
A、a.next=q;
B、P.next=&b:
C、p—>next=&b;
D、(*p).next=q;
(  C  )
3、下列能正确进行字符串赋值的是________。
A、char s[5]={¨ABCDE”);
B、char s[5]={'A','B','C','D','E'};
C、char*s;s=”ABCDE”;
D、char*s;printf(”%S”,s);
(  A  )
4、有以下程序:
double f(double x);
main()
{
double a=0;
int i;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.0f\n",a);
}
double f(double x)
{
return x*x+1;
}
程序运行后的输出结果是________。
A、503
B、401
C、500
D、1404
(  C  )
5、下面正确的字符常量是________。
A、“d”
B、‘\\’’
C、‘D’
D、‘’
(  D  )
6、表达式3.6-5/2+1.2+5%2的值是________。
A、4.3
B、4.8
C、3.3
D、3.8
(  D  )
7、以下4个选项中,不能看作一条语句的是________。
A、{;}
B、a=0,b=0,c=0;
C、if(a>0);
D、if(b==0) m=1;n=2;
(  A  )
8、若程序中定义了以下函数 double myadd(double a,double b)
{
return (a+b);
}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是________。
A、double myadd(double a,b);
B、double myadd(double,double);
C、double myadd(double b,double a);
D、double myadd(double x,double y);
(  A  )
9、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  C  )
10、若有以下程序
#include <stdio.h>
void f(int n);
main()
{
void f(int n);
f(5);
}
void f(int n)
{
printf("%d\n",n);
}
则以下叙述中不正确的是________。
A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B、若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C、对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D、函数f无返回值,所以可用void将其类型定义为无值型
(  C  )
11、下列四组选项中,正确的c语言标识符是________。
A、%x
B、a+b
C、a123
D、123
(  D  )
12、若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( )
A、p=q
B、*p=*q
C、n=*q
D、p=n
(  C  )
13、若 x=0 , y=3 , z=3, 以下表达式值为 0 的是________。
A、!x
B、x<y? 1:0
C、x%2&&y==z
D、y=x||z/3
(  D  )
14、执行下列程序后的输出结果是 _________.
#include <stdio.h>
void main( )
{
int k=4,a=3,b=2,c=1;
printf("%d\n",k<a?k:c<b?c:a);
}
A、4
B、3
C、2
D、1
(  D  )
15、若有说明int a[3][4]; 则a数组元素的非法引用是________。
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
(  C  )
16、以下描述中正确的是________。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C、在do-while循环体中,是先执行一次循环,再进行判断
D、do-while循环中,根据情况可以省略while
(  C  )
17、下面各选项中,属于非法的c整型常量的是________。
A、01
B、0x11
C、081
D、-32768
(  A  )
18、下面关于形参与实参的说法,正确的是________。
A、形参与实参的个数、类型、顺序都应一一对应
B、形参与实参的个数可以不必相同,少一个多一个程序一样执行
C、形参与实参的类型可以不同,不影响运算结果
D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可
(  A  )
19、执行完语句int [] x= new int [25]; 后,则下列哪项说法是正确的
A、x[24]值为0
B、x[24]值未定义
C、x[25]值为0
D、x[0]值为空
(  A  )
20、下列关于宏操作的叙述错误的是________。
A、do-while的循环体至少无条件执行一次
B、while的循环控制条件比do-while的循环控制条件更严格
C、do-while允许从外部转到循环体内
D、do-while的循环体不能是复合语句
(  A  )
21、以下函数不能用于向文件写入数据的是________。
A、ftell
B、fwrite
C、fputc
D、fprintf
(  A  )
22、下列各循环语句中,不是死循环的是________。
A、int i=100;
while(i) {
i=i%100+1;
if(i==20)
break;
}
B、int i,sum=0;
for(i=1;;i++)
sum=sum+1;
C、int k=0;
do
++k;
while(k>=0);
D、int s=3379;
while(s++%2+3%2)
s++;
(  D  )
23、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。
A、int
B、int*
C、(*int)
D、(int*)
(  A  )
24、在c语言中,若函数调用时实参是数组名,则传递给对应形参的是______。
A、数组空间的首地址
B、数组的第一个元素值
C、数组中元素的个数
D、数组中所有的元素
(  D  )
25、在c 语言程序中,在函数内部定义的变量称为________。
A、全局变量
B、外部变量
C、全程变量
D、内部变量
(  B  )
26、用高级程序设计语言编写的程序,________。
A、计算机能直接执行
B、具有良好的可读性和可移植性
C、执行效率高,但可读性差
D、依赖于具体机器,可移植性差
(  A  )
27、设有定义:int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是______。
A、k++
B、k+=1
C、++k
D、k+1
(  C  )
28、如果要限制一个变量,命名其只能为本文件所用,必须通过( )来实现。
A、外部变量说明
B、静态内部变量
C、静态外部变量
D、局部变量说明
(  A  )
29、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
A、可以是任意合法的数值
B、必须是整数值
C、必须是正数
D、必须是逻辑值
(  C  )
30、以下正确的程序段是________。
A、char str1[ ]="12345",str2[ ]="abcdef";
B、char str[10],*st="abcde";strcat(str,st);
C、char str[10]=" "。*st="abcde";strcat(str,st);
D、char*st1="12345",*st2="abcde";strcat(st1,st2);
(  B  )
31、以下程序的运行结果是________。
#include <stdio.h>
#define MIN(x,y) (x)<(y) ? (x):(y)
main() {
int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A、10
B、15
C、100
D、150
(  B  )
32、有以下程序:
struct stu
{
char num[10];
float score[3];
};
main()
{
struct stu s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}},*p=s;
int i;
float sum=0;
for(i=0;i<3;i++ ){
sum=sum+p->score[i];
}
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、260
B、270
C、280
D、285
(  B  )
33、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是________。
main()
{
char s[100];
int c, i;
scanf("%c",&c);
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
}
A、1,456,789
B、1,23,456
C、1,23,456,789
D、123,456,789
(  B  )
34、下面程序的运行结果是
#include<stdio.h>
main()
{
char a[]="morning",t;
int i,j=0;
for(i=1;i<7;i++) {
if(a[j]<a[i]) {
j=i;
t=a[j];
a[j]=a[7];
a[7]=a[j];
}
}
printf("%s", a);
}
A、mrgninr
B、m
C、moring
D、morning
(  C  )
35、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  C  )
36、下列选项中,关于main()函数叙述不正确的是________。
A、一个完整的C语言程序中,有且只能有一个main()函数
B、main()函数是程序的主入口,程序总是从main()函数开始执行
C、如果没有声明main()函数,程序将从第1行开始执行
D、main()函数可以有返回值,也可以没有返回值
(  D  )
37、以下的 for 循环次数是多少次? for(x=0,y=0;(y!=123)|| (x<4);x++) ;
A、执行 3 次
B、执行 4 次
C、循环次数不定
D、是无限循环
(  A  )
38、对于类型相同的两个指针变量之间,不能进行的运算是________。
A、<
B、=
C、+
D、-
(  D  )
39、设有下面的程序段:char s[]="china"; char *p=s; 则下列叙述正确的是____。
A、数组s中的内容和指针变量p中的内容相等
B、s和p完全相同
C、s数组长度和p所指向的字符串长度相等
D、*p与s[0]相等
(  D  )
40、以下叙述中正确的是________。
A、函数的形式参数不属于局部变量
B、对于变量而言,定义和说明这两个词实际上是同一个意思
C、在复合语句中不能定义变量
D、全局变量的存储类别可以是静态类
(  C  )
41、下面说法正确的是________。
A、任何包含数学运算的函数都只能使用单一的基本结构
B、每个 C 语言程序 MAIN()必须定义函数,否则编译失败
C、无论什么样的复杂算法,都可以使用三种基本结构来实现
D、只要程序是使用基本结构编写的,就不会出现算法错误
(  A  )
42、以下关于 c 语言数据类型使用的叙述中错误的是________。
A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
B、若要保存带有多位小数的数据,可使用双精度类型
C、整数类型表示的自然数是准确无误差的
D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型
(  C  )
43、下列程序段的输出结果为________。 int a=7,b=9,t; t=a*=a>b?a:b; printf("%d",t);
A、7
B、9
C、63
D、49
(  C  )
44、下面四个选项中,均是不合法的用户标识符的选项是________。
A、A P_0 do
B、float la0 _A
C、b-a goto int
D、_123 temp int
(  A  )
45、若使用一维数组名作函数实参,则以下正确的说法是________。
A、必须在主调函数中说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调用函数中,不需要考虑形参数组的大小
D、实参数组名与形参数组名必须一致
(  D  )
46、若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);
时,___是正确的输入
A、2030,40
B、20 30 40
C、20, 30 40
D、20,30,40
(  A  )
47、c语言的if语句中,用作判断的表达式为____
A、任意表达式
B、逻辑表达式
C、关系表达式
D、算术表达式
(  D  )
48、下列哪个数组定义是正确的________。
A、int a[5)5];
B、INT a[10];
C、int a[n];
D、int a[3+2];
(  C  )
49、以下程序的输出结果是________。
#include<stdio.h>
main( )
{
int i;
for(i=1;i<5;i++)
{
if(i%2)printf(''+''); else continue;
printf(''-'')
}
printf('' $ \n'');
}
A、+-+-+- $
B、-+-+-+ $
C、+-+- $
D、-+-+ $
(  A  )
50、设有以下语句, 若 0
A、strp
B、str[k]
C、strp[k]
D、*strp