西南科技大学
计算机C语言期末样卷
总分:【100分】考试时间:【60分钟】一、单项选择题(共50题,每题2分,共计100分)
()1、下面各选项中,属于非法的c整型常量的是________。
A、01
B、0x11
C、081
D、-32768
【答案】C
【解析】
C语言的整型常量可以有三种表示形式:
①十进制形式:与日常所用的十进制数形式相同,不能以0开始。
②八进制形式:以数字0开头,由0~7组成。
③十六进制形式:以数字0x(或OX)开头,由0~9及A~F(或a~f)组成。
根据以上知识考查所给出的4个选项:选项A是一个八进制数;选项B是一个十六进制数;选项
D是一个十进制数;选项C以0开始没有跟字母x(X),但后面的数字8并不是八进制中使用的数
字,故它不是C语言的整型常量。
()2、在 c 语言中 , 全局变量的存储类别是 ___________.
A、static
B、exte rn
C、void
D、registe
【答案】A
()3、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
A、k%2
B、k%2==1
C、(k%2)!=0
D、!k%2==1
【答案】D
()4、有以下程序:
#include <stdio.h>
main()
{
int i=5;
2022计算机考试时间do {
if(i%3==1)
if(i%5==2) {
printf("*%d", i);
break;
}
i++;
}
while(i!=0);
printf("\n");
}
程序的运行结果是________。
A、*7
B、*3*5
C、*5
D、*2*6
【答案】A
【解析】
本题考查的是break语句。do…while循环是“先执行,后判断”,所以无论条件如何,它都至
少会执行一遍。程序首先初始化变量i为5,然后进入do…while循环体,首先判断(i%3==1),因
为5%3=2,所以if条件不满足,跳过下面的if语句,执行i++,i变为6。第1遍循环结束,判断
(i!=0)为真,继续循环。现在i%3=6%3=0,所以if语句还是不被执行,继续i++,i变为7,仍然
满足(i!=0),继续循环。第3遍循环i%3=7%3=1,满足条件(i%3==1),继续判断条件i%5==2成
立,即输出*7,然后执行break语句跳出循环。
()5、有如下定义语句:int a[]= {1,2,3,4,5 },则对语句int * p=a; 正确的描述是________。
A、语句int * p=a;定义不正确
B、语句int * p=a;初始化变量p,使其指向数组对象a的第一个元素
C、语句int * p=a;是把a[0]的值赋给变量p
D、语句int * p=a;是把a[1]的值赋给变量p
【答案】B
()6、已知:int n=10; 在下列定义引用的语句中,正确的是________。
A、int &x=n;
B、int x=&n;
C、int &x;
D、int &x=&n;
【答案】A
【解析】
引用是个别名,建立引用后,引用即作为目标的别名而使用,对引用的改动实际上就是对目标
的改动。要求引用的声明语句要同时包括变量的数据类型、引用操作符“&”、引用名、赋值符
号和目标名。引用在声明时必须进行初始化,一旦初始化,便不能作为其他变量的引用而使
用。
()7、下面说法正确的是________。
A、char *x,y,**str 同时定义了三个变量,符合语法规范
B、数组说明符的一对方括号中只能使用常量数值
C、单精度浮点值也可以作为数组下标
D、若有定义 float arr[2]则 printf("%2.1f", array[0.5])是合法的语句
【答案】A
【解析】
定义数组时,一对方括号内为整型数据类型,可以是变量也可以是常量,选项 B 错误;访问数组
时,数组下标为整型数据,选项C,D 错误。在选项 A 中,定义了 3 个变量,类型为 char 的变量
x,类型为 char 的变量 y 类型为 char 的变量 str 本题答案为 A 选项。
()8、有下面程序段 char a[3],b[]="china"; a=b; printf("%3",a); 则下面的说法正确的是______。
A、运行后见输出China
B、运行后见输出Ch
C、运行后见输出Chi
D、编译出错
【答案】D
()9、字符串 "\\\"abc\"\\" 的长度是______。
A、11
B、7
C、5
D、3
【答案】B
()10、若定义:int a=511,*b=&a; 则printf("%d\n",*b);
的输出结果为
A、无确定值
B、a的地址
C、512
D、511
【答案】D
()11、printf 函数中用到格式符%5s ,其中数字5 表示输出的字符串占用5 列。如果字符串长度小于5,则输出按方式。
A、从左起输出该字串,右补空格
B、按原字符长从左向右全部输出
C、右对齐输出该字串, 左补空格
D、输出错误信息
【答案】C
()12、c语言中,double类型数据占________。
A、1个字节
B、2个字节
C、4个字节
D、8个字节
【答案】D
()13、下面的C程序完成的功能是________。
#define SIZE 5
void func(int data[SIZE]);
main()
{
int i,buf[SIZE];
printf(""Please input %d numbers:"",SIZE);
for(i=0;idata[j+1])
{
d=data[j];
data[j]=data[j+1];
data[j+1]=d;
}
}
A、对一维数组降序排序
B、对一维数组升序排序
C、对一维数组逆向排序
D、对一维数组顺序排序
【答案】B
()14、在c语言的函数中,下列正确的说法是________。
A、必须有形参
B、形参必须是变量名
C、可以有也可以没有形参
D、数组名不能作形参
【答案】C
()15、以下程序结果为:______。
void add( )
{
static int y=1;
y++;
printf("%d",y);
}
main( )
{
int m;
for(m=0;m<4;m++)add( );
}
A、1234
B、2222
C、1111
D、2345
【答案】D
()16、定义如下变量:int n=10;
则下列循环的输出结果是________。
while(n>7)
{
n--;
printf(''%d'',n);
}
A、1098
B、987
C、10987