重庆工商大学2023年C语言考题

本试卷为重庆工商大学2023年C语言考题,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言考题

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

(  C  )
1、以下叙述中正确的是________。
A、C 程序的基本组成单位是语句
B、C 程序中的每一行只能写一条语句
C、简单C 语句必须以分号结束
D、C 语句必须在一行内写完
(  B  )
2、c语言中,下列不合法的字符串常量是________。
A、”\121”
B、'y='
C、”\n\n”
D、”ABCD\x6d”
(  C  )
3、有以下程序:
main()
{
int a=1,b=3,c=5,*p;
int*p1=&a,*p2=&b,*p3=&c;
*p=*p1*(*p2);
}
执行后的输出结果是________。
A、1
B、2
C、3
D、4
(  C  )
4、以下程序段________. x=-1;
do
{
x=x*x;
}
while(!x);
A、是死循环
B、循环执行二次
C、循环执行一次
D、有语法错误
(  D  )
5、算法可使用下面 方法来描述。
A、N-S图
B、PAD图
C、伪代码
D、以上都是________。
(  A  )
6、以下不能正确计算代数式 值的c语言表达式是________。
A、1/3*sin(1/2)*sin(1/2)
B、sin(0.5)*sin(0.5)/3
C、pow(sin(0.5),2)/3
D、1/3.0*pow(sin(1.0/2),2)
(  C  )
7、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
A、another
number
B、another
number
another
C、another
number
number
D、number
number
(  A  )
8、阅读以下程序
#include <stdio.h>
main()
{
int case;
float printf;
printf("请输入2个数:");
scanf("%d %f",&case,&printf);
printf("%d %f\n",case,printf);
}
该程序在编译时产生错误,其出错原因是________。
A、定义语句出错,case是关键字,不能用作用户自定义标识符
B、定义语句出错,printF不能用作用户自定义标识符
C、定义语句无错,scanf不能作为输入函数使用
D、定义语句无措,printf不能输出case的值
(  B  )
9、设有如下定义:
struct sk
{
int a ;
float b ;
}
data , *p ;
若有 p=&data ;
, 则对 data 中的 a 域的正确引用是______。
A、( *p ) .data.a
B、( *p ) .a
C、p->data.a
D、p.data.a
(  B  )
10、有如下程序
#include<stdio.h>
void main()
{
int x=23;
do
{
printf("%d",x--);
}
while(!x);
}
该程序的执行结果是 _________。
A、321
B、23
C、不输出任何内容
D、陷入死循环
(  D  )
11、以下程序执行时输入 language programming< 回车 > , 输出结果是 __________.
#include <stdio.h>
void main( )
{
char str[30];
gets(str);
printf("str=%s\n",str);
}
A、Language Programming
B、Language
C、str=Language
D、str=Language Programming
(  B  )
12、以下程序的输出结果是 __________.
#include<stdio.h>
void main()
{
int a[4][4]={{1,3,5,},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][0],a[1][1],a[2][2],a[3][3]);
}
A、0650
B、1470
C、5430
D、输出值不定
(  D  )
13、以下数组定义中不正确的是 __________.
A、int a[2][3];
B、int b[][3]={0,1,2,3};
C、int c[100][100]={0};
D、int a[3][]={{1,2},{1,2,3},{1,2,3,4}};
(  B  )
14、在"先判断后工作"的循环程序结构中,循环体执行的次数最少是________次。
A、1
B、0
C、2
D、不定
(  A  )
15、若i、j已定义为int型,则以下程序段中内循环的总的执行次数是________。 for(i=5;i>0;i--) for(j=0;j<4;j++)…
A、20
B、24
C、25
D、30
(  D  )
16、已知3个字符为:a、x和5,按它们的ascii码值升序排序,结果是________。
A、5<a<X
B、a<5<X
C、X<a<5
D、5<X<a
(  D  )
17、以下对文件型指针的定义,正确的是________。
A、file fp;
B、file *fp;
C、FILE fp;
D、FILE *fp;
(  C  )
18、若变量c为char类型,则能正确判断出c为大写字母的表达式是________。
A、(c>= ’A’)||(c
B、’A’
C、(c>= ’A’)&&(c
D、(’A’=c)
(  C  )
19、下列各项关于变量的描述中正确的是________。
A、变量名不是标识符
B、变量名的字符是不区分大小写的
C、变量名的定义必须符合标识符的定义规则
D、变量属性分为基本类型和复合类型
(  D  )
20、下列标识符中合法的是________。
A、abde+
B、#KSJF
C、67KDJ
D、DK3
(  A  )
21、以下字符常量中不合法的一项是________。
A、'b
'
B、'
'
C、' '
D、'Y'
(  A  )
22、以下对c/c语言函数的描述中,正确的是________。
A、C程序由一个或一个以上的函数组成
B、C函数既可以嵌套定义又可以递归调用
C、函数必须有返回值,否则不能使用函数
D、C程序中调用关系的所有函数必须放在同一个程序文件中
(  C  )
23、下列哪个语句是声明一个含有10个string对象的数组 ( )
A、char str[];
B、char str[][];
C、String str[]=new String[10];
D、String str[10];
(  D  )
24、在c语言程序中
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义和调用均可以嵌套
C、函数的定义和调用均不可以嵌套
D、函数的定义不可以嵌套,但函数的调用可以嵌套
(  B  )
25、以下选项中,不能作为合法常量的是________。
A、1.234e04
B、1.234e0.4
C、1.234e+4
D、1.234e0
(  C  )
26、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是struct TT类型的变量
(  B  )
27、若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是________。
A、sizeof,&=,<<,^
B、sizeof,<<,^,&=
C、^,<<,sizeof,&=
D、<<,^,&=,sizeof
(  A  )
28、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
(  C  )
29、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是________。
#include<stdio.h>
main()
{
char sl[]="chinese",s2[]="japnese";
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++) if(s1[i]=s2[i]&&i<7) ____________________;
}
A、putchar(s2;putchar(
B、puts(s1,
C、printf("%c%d\n",s2,
D、printf("%c",s1);printf("%d\n",
(  A  )
30、有以下程序:
void fun(int*a,int i,int j) {
int t;
if(i<j) t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main() {
int a[]=1,2,3,4,5,6,i;
fun(a,0,5);
for(i=0;i<6;i++) printf("%d",a[i]);
}
执行后的输出结果是 ______。
A、6 5 4 3 2 1
B、4 3 2 1 5 6
C、4 5 6 1 2 3
D、1 2 3 4 5 6
(  B  )
31、假设有以下代码: string s="hello"; string t="hello"; char c[]= {'h', 'e', 'l', 'l', 'o'}; 下列选项中,返回false的语句是______。
A、s.equals(t);
B、t.equals(c);
C、s==t;
D、t.equals (new String("hello"));
(  C  )
32、请读程序:
#include<stdio.h>
#include<string.h>
void fun(char * w,int m) {
char s,* p1,* p2;
p1=w;
p2=w+m-1;
while(p1<p2) {
s=* p1++;
*pl=* p2 --;
* p2=s;
}
}
main( )
{
char a[]="abcdefg";
fun(a,strlen(a));
puts(a);
}
上面程序的输出结果是________。
A、GEFDCBA
B、AGADAGA
C、AGAAGAG
D、GAGGAGA
(  D  )
33、下列是多行注释的符号是________。
A、//
B、/
C、/*
D、/**/
(  D  )
34、要定义一个字符串,下列选项中错误的是________。
A、char s[5] = "hello";
B、char s[] = "hello";
C、char *s = "hello";
D、char s[] = {"h","e","l","l","o"};
(  B  )
35、请选出合法的c语言赋值语句。( )
A、a=b=58
B、i++;
C、a=58,b=58
D、k=int(a+b);
(  A  )
36、有以下程序
struct s
{
int n;
int a[20];
}
;
void f(int *a, int n)
{
int i;
for(i=0;i<n-1;i++) a[i]+=i;
}
main()
{
int i;
struct s s={10,
{
2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0;i<s.n;i++) printf("%d,",s.a[i]);
}
程序运行后的输出结果是______。
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
(  C  )
37、我们所写的每条 c 语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是______。
A、一条 C 语句可能会被转换成零条机器指令
B、一条 C 语句可能会被转换成多条机器指令
C、一条 C 语句对应转换成一条机器指令
D、某种类型和格式的 C 语句被转换成机器指令的条数是固定的
(  B  )
38、在c语言中,不允许有常量的数据类型是________。
A、整型
B、结构型
C、字符型
D、字符串
(  B  )
39、c语言中,运算符>=属于
A、算术运算符
B、关系运算符
C、逻辑运算符
D、条件运算符
(  D  )
40、以下叙述中正确的是________。
A、数组下标的下限是 1
B、数组下标的下限由数组中第一个非零元素的位置决定
C、数组下标的下限由数组中第一个被赋值元素的位置决定
D、char c1,c2,*c3,c4[40]是合法的变量定义语句
(  A  )
41、设有定义:int x=2,*p=&x; float=3.0; char z='c'; 则立即进行以下运算有安全隐患的是________。
A、p++
B、x++
C、y++
D、z++
(  B  )
42、对长度为 8 的数组进行快速排序,最多需要的比较次数为________。
A、8
B、28
C、56
D、64
(  C  )
43、以下符合c语言语法的实型常量是________。
A、1.2E0.5
B、3.14.159E
C、0.0005
D、E15
(  C  )
44、在c语言的函数中,下列正确的说法是________。
A、必须有形参
B、形参必须是变量名
C、可以有也可以没有形参
D、数组名不能作形参
(  A  )
45、两个指针变量不可以________。
A、相加
B、比较
C、相减
D、指向同一地址
(  B  )
46、int (*p)[6]; 它的含义为________。
A、具有6个元素的一维数组
B、定义了一个指向具有6个元素的一维数组的行指针变量
C、指向整型指针变量
D、指向6个整数中的一个的地址
(  A  )
47、以下正确的字符串常量是________。
A、"\\"
B、'abc'
C、OlympicGames
D、'A'
(  C  )
48、下面程序的运行结果是________。
main( )
{
int cl=2,c2=0;
while(!c2--)printf(''%d%d'',cl--,c2);
}
A、陷入死循环
B、不输出任何内容
C、输出2 -1
D、输出20
(  C  )
49、以下叙述中错误的是________。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句
(  A  )
50、若有定义 int a[10],*p=a;,则 p+5 表示
A、元素 a[5]的地址
B、元素 a[5]的值
C、元素 a[6]的地址
D、元素 a[6]的值