2021第四届全国大学生计算机技能应用大赛初赛试题(c语言)
单选题(25道)
1. C语言程序的基本单位是( )。
A 语句 ( × )
B 函数 ( √ )
C 程序段 ( × )
D 标识符 ( × )
2. 若有int a;执行printf("%d\n",(a=2*5,a*3,a+5));语句后,输出结果为( )。
A 15 ( √ )
B 20 ( × )
C 35 ( × )
D 10 ( × )
3. 设有如下定义:
int x=10,y=3;
则语句
printf("%d\n",x%y,x/y);
的输出结果是( )。
A 1 ( √ )
B 3 ( × )
C 1 3 ( × )
D 输出格式符不够,输出不确定的值 ( × )
4. 以下程序段运行结果是( )。
int x,y,z,t;
x=y=z=1;
t=++x || ++y && ++z;
printf("%d,%d,%d,%d",x,y,z,t);
A 2,1,1,1 ( √ )
B 2,2,2,1 ( × )
C 2,2,2,2 ( × )
D 1,1,1,1 ( × )
5. 下列选项中,不合法的常量是( )。
A '\0' ( × )
B 'a' ( × )
C 010 ( × )
D '\048' ( √ )
6. 若有
int n=0,i,x;
for(i = 0,x = 0; i<= 9 && x!=876;i++,x++){
n++;
}
则程序段运行后,n的值为( )。
A 10 ( √ )
B 9 ( × )
C 无限 ( × )
D 0 ( × )
7. 下面程序的运行结果是( )。
void main()
{
char s[20]={"a b c d e f g"},ts[20];
char *p = s;
int i,t;
for (i=0,t=0;s[i]!='\0';i++){
if (!isspace(*(p+i))&&(*(p+i)!='a')){
ts[t++]=toupper(s[i]);
}
ts[t]='\0';
}
puts(ts);
}
A abcdefg ( × )
B a ( × )
C A ( × )
D BCDEFG ( √ )
8. 文件指针fp指向文件末尾时,feof(fp)的返回值是( )。
A EOF ( × )
B NULL ( × )
C 0 ( × )
D 非零值 ( √ )
9. 若有定义: int a[10] , *p = a; 并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的表达式是()
A ++p ( × )
B a+1 ( × )
C p+1 ( × )
D a++ ( √ )
10. 若有以下说明和定义,在必要的赋值之后,对fun函数的正确调用语句是( )。
int fun (int *c) { }
void main()
{
int (*a)(int*)=fun,*b(),w[10],c;
}
A a=a(w); ( × )
B (*a)(&c); ( × )
C b=*b(w); ( × )
D fun(b); ( √ )
11. 下面程序段执行后的输出结果是( )。
int a=3366;
printf("│%-08d│",a);
(□表示一个空格)
A │-0003366│ ( × )
B │00003366│ ( × )
C │3366□□□□│ ( √ )
D 输出格式非法 ( × )
12. 下列选项中,均是不合法的用户标识符的是( )。
A A , P_0 , do ( × )
B float ,_A , la0 ( × )
C b-a , goto , int ( √ )
D _123 , temp ,INT ( × )
13. 下面四个选项中,均是合法转义符的是( )。
A '\'' '\\' '\n' ( √ )
B '\' '\017' '\"' ( × )
C '\018' '\f' 'xab' ( × )
D '\\0' '\101' 'x1f' ( × )
14. 下面程序的输出结果是( )。
#include<stdio.h>
void fun(int px,int pa,int *pb)
{
*pb=pa+px;
pa=*pb+px;
}
void main()
{
int x=4,a=2,b=2;
fun(x,a,&b);
printf("%d,%d",a,b);
}
A 2,2 ( × )
B 2,6 ( √ )
C 6,2 ( × )
D 6,6 ( × )
15. 下面程序段,当调用func(1)时,结果为( )。
int func(int a)
{
int b;
switch (a)
{
case 1: b = 30;
case 2: b = 20;
case 3: b = 16;
default: b = 0;
}
return b;
}
A 30 ( × )
B 20 ( × )
C 16 ( × )
D 0 ( √ )
16. 以下语句或语句组中,能正确进行字符串赋值的是( )。
A char *sp; *sp="right!"; ( × )
B char s[10]; s="right!"; ( × )
C char s[10]; *s="right!"; ( × )
D char *sp="right!"; ( √ )
17. 下面程序的输出结果是( )。
main(){
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
A 1 2 3 ( × )
B 2 3 4 ( × )
C 2 2 3 ( × )
D 2 3 3 ( √ )
18. 下面选项正确的是( )。
A continue语句使得整个循环终止 ( × )
B break语句不能用于提前结束for语句的本层循环 ( × )
C 使用break语句可以使流程跳出switch语句体 ( √ )
D 在for语句中,continue与break的效果是一样的,可以互换 ( × )
19. 下面程序的运行结果是( )。
void add(int *p)
{
(*p)++;
printf("%d",*p);
if (*p>5)
{
return;
}
add(p);
}
int main()
{
int i=0;
add(&i);
return 0;
}
A 12345 ( × )
B 123456 ( √ )
C 111111 ( × )
D 未知 ( × )
20. 本程序的功能是:统计给定输入中每个大写字母的出现次数,下列选项中,能正确完成此功能的是( )。
void AlpCount(char a[],int n){
int count[26]={},i,kind=0;
for(i=0;i<n;++i)
(____________);
for(i=0;i<26;++i){
if(++kind>1)
putchar(';');
printf("%c=%d",(____________));
}
}
A ++count[a[i]-'z'] 'Z'-i,count['Z'-i] ( × )
B ++count['A'-a[i]] 'A'+i,count[i] ( × )
C ++count[i] i,count[i] ( × )
D ++count['Z'-a[i]] 'Z'-i,count[i] ( √ )
21. 若有:
float x=2.5,y=4.7;int a=7;
则:printf("%.1f",x+a%3*(int)(x+y)%2/4)的结果为( )。
A 2.5 ( √ )
B 2.8 ( × )
C 3.5 ( × )
D 3.8 ( × )
22. 下面程序段最后一行的输出结果为( )
int main() {
int x;
x = printf("I am c program\n");
printf("x=%d", x);
return 0;
}
A x=2 ( × )
B 随机值 ( × )
C 都不是 ( × )
D x=15 ( √ )
23. 已知:char s1[10],s2[10]={"hello"};
则在程序中不能将字符数组s2赋值给s1的语句是( )。
A s1=s2; ( √ )
B strcpy(s1,s2); ( × )
C strcpy(s1,s2,6); ( × )
D memcpy(s1,s2,5); ( × )
24. 在c语言中,一个函数不写返回值类型,默认的返回类型是( )。
A int ( √ )
B char ( × )
C void ( × )
D null ( × )
25. 若有下面定义:
char *str1 = "hello";
short * p1;
int p2[2];
则sizeof(str1),sizeof(p1) ,sizeof(p2) 的值分别为( )。
A 6 4 8 ( × )
B 6 2 4 ( × )
C 4 4 8 ( √ )
D 5 2 4 ( × )
不定项(15道)
26. 若有char *str="abcdef",则输出*str的结果为( )。
A a ( √ )
B abcdef ( × )
C 字符a的地址 ( × )
D ab ( × )
27. 若有如下定义:
struct Stu{
int num;
char[10] name;
char sex;
} stu1,*p;
p=&stu1;
则对num成员正确的引用有( )。
A (*p).a ( √ )
B p->a ( √ )
C (*p).stu1.a ( × )
D p->stu1.a ( × )
28. 若有下面定义
int a[4][4]={{1,2},{3,4},{5,6}}; int(*p)[4]=a;
下面表达式的值为4的有( )。
A *p[1]+1 ( √ )
B p++,*(p+1) ( × )
C *(*(p+1)+1) ( √ )
D p[2][2] ( × )
29. 若有:int (*p)(); 则以下叙述正确的是( )。
A p是指向一维组数的指针变量 ( × )
B p是返回值为int型数据的函数指针 ( √ )
C p是一个函数名,该函数的返回值是指向int型数据的指针 ( × )
D p是指向函数的指针,该函数返回一个int型数据 ( √ )
30. 若有:char *str[2]={"abcd","ABCD"}; 则以下叙述正确的是( )。
A str是一个长度为2的指针数组 ( √ )
B str中的元素分别是指向"abcd"数组的指针和指向"ABCD"数组的指针 ( √ )
C str是指针变量,指向含有两个数组元素的字符型一维数组 ( × )
D str分别存放的是两个含有4个字符的一维字符数组 ( × )
31. 数组初始化的常见方式有:( )。
A 直接对数组中的所有元素赋值 ( √ )
B 只对数组中的一部分元素赋值 ( √ )
C 对数组全部元素赋值但不指定长度 ( √ )
D 数组声明后,将数组元素整体赋值给数组名。 ( × )
32. C语言中的基本数据类型包括:( )。
A 整型 ( √ )
B 实型 ( √ )
C 字符型 ( √ )
D 枚举型 ( × )
33. C语言中,关系运算符的运算结果为( )。
A 0 ( √ )
B 逻辑假 ( × )
C 1 ( √ )
D 逻辑真 ( × )
34.下面哪个选项是正确的文件包含命令( )。
A #include( √ )
B #include stdio.h ( × )
C #include "stdio.h" ( √ )
D #include "stdio" ( × )
35. 下面选项正确的是( )。
A gets函数能从键盘读一串字符串 ( √ )
B getchar能从文件读一个字符 ( × )
C fputs可以向文件输出一串字符串 ( √ )
D fwrite函数可以以二进制形式将数据写入文件 ( √ )
36. print函数声明为void print(int a,char b='b',int c=1); 下面函数调用正确的是( )
A print('a'); ( √ )
B print(5,8); ( √ )
C print(5,'#'); ( √ )
D print(5,'#',2); ( √ )
37. 有下面程序段:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];
for(int i=0;i<4;i++){
strp[i]=str[i];
}
若0<=k<4,则对字符串的正确引用为( )。
A *strp ( √ )
B strp ( × )
C str[k] ( √ )
D strp[k] ( √ )
38. 已知i,j都是整型变量,下列表达式中,与下标引用X[i][j]不等效的是( )。
A *(X[i]+j) ( × )
B *(X+i)[j] ( √ )
C *(X+i+j) ( √ )
D *(*(X+i)+j) ( × )
39. 有以下语句定义:
int x =5;
const int * const p = &x;
const int &q=x;
int const *next=&x;
const int *j=&x;
有语法错误的是( )。
A * p =1; ( √ )
B q++; ( √ )
C next++; ( × )
D (*j)++; ( √ )
40. 下面选项中错误的是( )。
A 逻辑"或"(即运算符||)的运算级别比算术运算要高 ( √ )
B C语言的关系表达式:0 ( √ )
C 逻辑"非"(即运算符!)的运算级别是最低的 ( √ )
D 由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象 ( × )
判断题(10道)
41. 在C程序中,变量名代表内部存储器上的一个位置 √
42.静态变量的生存期和整个程序的运行期相同 √
43.可以通过赋值运算符"="对字符型数组进行整体赋值。 ×
44.静态类别变量的生存周期贯穿于整个程序的运行期间。√
45.fseek(fp,-100L,2)表示将文件指针从结尾位置向前移动100个字符。×
46.int a=10,*p=&a;表示将变量a的地址赋值给p所指向的内存单元。×
47.在源程序被编译器处理之前,预处理器会将宏定义标识符替换成所定义的字符串。√
48.union类型的变量在任何时刻都仅有一个成员驻留在内存中。√
49.执行程序段:fclose(fp);fprintf(fp, "%s", "hello");后,可以向文件中写入hello ×
50. C语言源程序的基本结构单位是 main 函数。 ×