C语言程序设计基础(石河子大学)智慧树知到章节测试答案
第一章测试
1、下列对C语言特点的描述中,错误的是( )。
A、C语言不是结构化程序设计语言
B、C语言编程简洁明了
C、C语言功能较强
D、C语言移植性好
我的答案:A
2、下列关于C语言程序在结构上特点的描述中,错误的是( )。
A、C语言程序是一个函数串
B、C语言程序可以由一个或多个文件组成
C、C语言程序的诸多函数中,只能有一个主函数
D、C语言程序被执行时,通常是从第1个函数开始
我的答案:D
3、在scanf()函数的格式说明符中,长整型数的输入格式说明符是( )。
A、%d
B、%lf
C、%ld
D、%x
我的答案:C
4、在printf()函数的格式说明符中,双精度浮点型数的输出格式说明符是( )。
A、%ld
B、%lf
C、%c
D、%s
我的答案:B
5、下列不是C语言特点的是?
A、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
B、语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
C、不同的变量类型可以用结构体(struct)组合在一起。
D、只有64个保留字(reserved keywords),使变量、函数命名有更多弹性。
我的答案:D
6、几乎没有不能用C语言实现的软件?
我的答案:X
7、C编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等?
我的答案:√
8、Dev C++是一个开源的编程软件吗?
我的答案:√
9、编程环境包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程对吗?
我的答案:√
10、任何程序都有主函数吗?
我的答案:√
第二章测试
1、若i=3,j=i++;执行运算后i和j的值为?
A、i=4,j=3
B、i=3,j=4
C、i=3,j=3
D、i=4,j=4
我的答案:A
2、下列函数在屏幕上输出的结果是? # include
A、学号 姓名 班级
B、学号班级姓名
C、"学号 姓名 班级"
D、"学号 姓名 班级\n"
我的答案:A
3、下列函数在屏幕上输出的结果是? # include
A、"****\n***\n**\n*\n"
B、****\n***\n**\n*\n
C、**** \*** ** *
D、**** *** ** *
我的答案:D
4、关于关系运算,下列说法正确的是?
A、关系表达式的值是一个逻辑值,即“真”或“假”。
B、关系表达式“a>b”的值为“真”,表达式的值为0。
C、>=和==的优先级相同。
D、关系运算符的优先级低于赋值运算符
我的答案:A
5、下列运算符,优先级最高的是?
A、||
B、&&
C、!
D、>
我的答案:B
6、关于if-else 语句,下列说法错误的是?
A、当if和else数目不同时,可以加花括号来确定配对关系。
B、if语句后面只能加逻辑表达式。
C、else总是与它上面的,最近的,同一复合语句中的,未配 对的if语句配对。
D、在if语句中可嵌套一个或多个if语句。
我的答案:B
7、关于scanf()函数,说法正确的是?
A、A. scanf()函数中的“格式控制”后面应当是变量名。
B、scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。
C、scanf()函数中“d”是用来输入无符号的十进制整数的格式字符。
D、scanf()函数中“u”是用来输入有符号的十进制整数的格式字符。
我的答案:B
8、语句for(i=1;i<=100;i++) sum=sum+i; 的功能是?
A、1~100最大的数的值。
B、1~100以内所有整数的和
C、1~100以内所有奇数的和
D、1~100以内所有偶数的和
我的答案:B
9、关于函数,下列说法正确的是?
A、一个C程序只能由一个函数构成。
B、同一个函数可以被一个或多个函数调用任意多次。
C、函数可以嵌套定义
D、main函数和其他函数一样,可以互相调用。
我的答案:B
10、关于函数的类型,下列说法正确的是?
A、标准函数,即库函数。这是由用户自己定义的。
B、在调用无参函数时,主调函数向被调用函数传递数据。
C、用户可以自己定义函数。
D、在调用被调用函数时,主调函数不向被调用函数传递数据。
我的答案:C
第三章测试
1、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。
我的答案:√
2、下列是输出显示字符'a'的八进制ASCII码的语句,正确的是( )。
A、printf("%c\n", 'a');
B、printf("%d\n", 'a');
C、printf("%s\n", 'a');
D、printf("%o\n", 'a');
我的答案:D
3、C语言中合法的字符常量是 。
A、n
B、'\n'
C、110
D、"n"
我的答案:B
4、表达式1/5+3%4+4.5/5的值是 。
A、3.9
B、3.900000
C、1.100000
D、1.85
我的答案:B
5、有以下程序: main( ) {int m; m=10; printf("%d\n",(--m*3/5)); } 程序运行后的输出结果是 。
A、6
B、5
C、4
D、7
我的答案:B
6、表达式(int)(1/3+.5*3+5%3) 的计算结果为 。
A、3
B、2
C、1
D、7
我的答案:A
7、下列不正确的转义字符是 。
A、\\
B、\'
C、074
D、\0
我的答案:√
8、无符号基本整型的数据类型符为 ,双精度实型数据类型符为 ,字符型数据类型符为 。
A、unsigned int double char
B、double char unsigned int
C、char unsigned int double
D、chara unsignedint double
我的答案:A
9、printf("%c,%d",'a', 'a');的输出结果是 。
A、a,97
B、a 97
C、97,a
D、97 a
我的答案:A
10、下列格式符中,哪一个可以用于以八进制形式输出整数 。
A、%d
B、%8d
C、%o
D、%ld
我的答案:C
第四章测试
1、以下运算符中,优先级最高的运算符是( ).
A、*=
B、>=
C、(类型)
D、+
我的答案:C
2、执行下列程序段后,m的值是( ). int w=2,x=3,y=4,z=5,m; m=(w
B、3
C、5
D、2
我的答案:D
3、对下述程序,( )是正确的判断. #include
A、语法错误,不能通过编译
B、输入数据3和4,则输入4和5
C、输入数据4和3,则输入3和4
D、输入数据4和3,则输出4和4
我的答案:A
4、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( ). #include
A、7和5
B、6和3
C、7和4
D、6和4
我的答案:A
5、执行下列语句后的输出为( ). int j=-1; if(j<=1) printf("****\n"); else printf("%%%%\n");
A、****
B、%%%%
C、%%%%c
D、有错,执行不正确
我的答案:A
6、为了避免在嵌套的条件语句if・・・else中产生二义性,C语言规定:else子句总是与( )配对.
A、缩排位置相同的if
B、其之前最近的if
C、其之后最近的if
D、同一行上的if
我的答案:B
7、C语言的switch语句中case后( ).
A、只能为常量
B、只能为常量或常量表达式
C、可为常量或表达式或有确定值的变量及表达式
D、可为任何量或表达式
我的答案:B
8、void main() { int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2:
a++;b++; } printf("a=%d,b=%d",a,b); } 该程序的输出结果是( ).
A、2,1
B、1,1
C、1,0
D、2,2
我的答案:A
9、有以下程序 main() { int a =5,b =4,c= 3,d= 2; if (a> b> c) printf(" %d\n",d); else
if ((c-1> = d) = = 1) printf(" %d\n",d+ 1); else printf(" %d\n",d + 2);}
执行后输出结果是( ).
A、2
B、3
C、4
D、编译时有错,无结果
我的答案:B
10、当a=1、b=2、c=5、d=5时,执行下面的程序后,x的值是( ). if(a
A、1
B、2
C、3
D、6
我的答案:B
第五章测试
1、对于while(!E) s;,若要执行循环体语句s,则E的数值应为 。
A、E等于1
B、E不等于0
C、E不等于1
D、E等于0
我的答案:D
2、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include
A、n%10
B、(n%10)*(n%10)
C、n/10
D、(n/10)*(n/10)
我的答案:B
3、对以下程序段,循环体执行的次数是 。 int k=0; while(k=1) k++;
A、有语法错误,不能执行
B、一次也不执行
C、执行一次
D、无数次
我的答案:D
4、下面程序段的执行结果是( )。 a=1;b=2;c=2; while(a
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
我的答案:A
5、下列叙述中正确的是( )。
A、do-while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用do-while语句构成的循环,在while后的表达式为非零时结束循环
D、用do-while语句构成的循环,在while后的表达式为零时结束循环
我的答案:D
6、执行int x=-1;do {x=x*x;} while(x==0);循环时,下列说法正确的是( )。
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误
我的答案:A
7、以下程序段的输出结果是( )。 int main() {int num=0,s=0; while(num<=2) { num++; s+=num; }
printf("%d\n",s); } A)10 B)6 C)3 D)1
A、10
B、6
C、3
D、1
我的答案:B
8、若S=0,执行循环语句“for(i=1;i<=10;i=i+3) s=s+i;”后,i的值为( )。
A、12
B、10
C、11
D、13
我的答案:D
9、与下面程序段等价的是 。 for(n=100;n<=200;n++) { if(n%3==0) continue; printf(“%4d”,n);
}
A、for(n=100;(n%3)&&n<=200;n++) printf(“%4d”,n);
B、for(n=100;(n%3)||n<=200;n++) printf(“%4d”,n);
C、for(n=100;n<=200;n++) if(n%3!=0) printf(“%4d”,n);
D、for(n=100;n<=200;n++) { if(n%3) printf(“%4d”,n); else continue; break; }
我的答案:C
10、下面程序段 。 for(t=1;t<=100;t++) { scanf(“%d”,&x); if(x<0) break; printf(“%3d”,t);
}
A、当x<0时整个循环结束
B、x>=0时什么也不输出
C、printf函数永远也不执行
D、循环一次也不会被执行
我的答案:A
第六章测试
1、以下正确的函数形式是 。
A、double fun(int x,int y) { z=x+y; return z; }
B、double fun(int x,y) { int z; return z; }
C、double fun(x,y) { int x,y; double z; z=x+y; return z; }
D、double fun(int x,int y) { double z; z=x+y; return z; }
我的答案:D
2、若调用一个函数,且此函数中没有return语句,则正确的说法是 。
A、该函数没有返回值
B、该函数返回若干个系统默认值
C、该函数能返回一个用户所希望的函数值
D、该函数返回一个不确定的值
我的答案:A
3、以下正确的说法是 。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共占用一个存储单元
C、只有当实参和与其对应的形参同名时才共占用存储单元
D、形参是虚拟的,不占用存储单元
我的答案:A
4、下面函数调用语句含有实参的个数为 。 func((exp1,exp2),(exp3,exp4,exp5));
A、1
B、2
C、4
D、5
我的答案:B
5、若使用一维数组名作函数实参,则以下正确的说法是 。
A、必须在主调函数中说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调函数中,不需要考虑形参数组的大小
D、实参数组名与形参数组名必须一致
我的答案:A
6、凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 。
A、自动(auto)
B、静态(static)
C、外部(extern)
D、寄存器(register)
我的答案:A
7、执行下列程序: #define M(x,y) (x*y) i=3; i=M(i,i+1)-8; 变量i的值应为 。
A、2
B、3
C、4
D、5
我的答案:A
8、执行下列程序,正确的输出是 。 int x=3,y=5; void swap() { int a; a=x; x=y; y=a; } int
main() { int x=5,y=7; swap(); printf(“%d,%d\n”,x,y); return 0; }
A、3,5
B、5,3
C、5,7
D、7,5
我的答案:C
9、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。 sub(int k,int n) { int a1,a2;
a2= ; a1=k-a2*10; if((k%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(“%d”,k); n++;
return n; } else return -1; } int main() { int n=0,k,m; for(k=10;k<=99;k++) {
m=sub(k,n); if(m!=-1) n=m; } printf(“\nn=%d”,n); return 0; }
A、k*10
B、k%10
C、k/10
D、k*10%10
我的答案:C
10、有以下程序: #include
A、9
B、7
C、5
D、4
我的答案:B
第七章测试
1、下列数组定义语句中,正确的是( )。
A、int a[][]={1,2,3,4,5,6};
B、char a[2]「3]='a','b';
C、int a[][3]= {1,2,3,4,5,6};
D、static int a[][]={{1,2,3},{4,5,6}};
我的答案:C
2、设有下列数据定义语句,则数组元素x[i]的值是( )。 int i= 3,x[4]={1,2,3};
A、0
B、1
C、2
D、3
我的答案:A
3、运行下列程序的输出结果是( ) main() { int a[]={1,2,3,4,5},i; for(i=1;i<5;i++)
printf("%d",a[i]-a[i-1]); }
A、11111
B、1111
C、111
D、222
我的答案:A
4、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( ).
A、2
B、3
C、4
D、无确定值
我的答案:B
5、程序运行后的输出结果是( )。 #include
A、7,4
B、10,10
C、8,8
D、4,10
我的答案:D
6、程序运行后的输出结果是( )。 #include
A、1
B、3
C、4
D、9
我的答案:C
7、下面是对s的初始化,其中不正确的是 。
A、char s[5]={“abc”};
B、char s[5]={‘a’,‘b’,‘c’};
C、char s[5]=“”;
D、char s[5]=“abcdef”;
我的答案:D
8、下面程序段的运行结果是 。 char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’}; printf(“%s”,c);
A、‘a’‘b’
B、ab
C、cab
D、ab c
我的答案:B
9、对两个数组a和b进行如下初始化 char a[]=“ABCDEF”; char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’};
则以下叙述正确的是 。
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
我的答案:D
10、有两个字符数组a、b,则以下正确的输入格式是 。
A、gets(a,b);
B、scanf(“%s %s”,a,b);
C、scanf(“%s %s”,&a,&b);
D、gets(“a”),get(“b”);
我的答案:B
第八章测试
1、以下程序有错,错误原因是 _。 int main() {int *p,i; char *q,ch; p=&i; q=&ch; *p=40;
*p=*q; ┆ }
A、p和q的类型不一致,不能执行*p=*q;语句
B、*p中存放的是地址值,因此不能执行*p=40;语句
C、q没有指向具体的存储单元,所以*q没有实际意义
D、q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q; 语句
我的答案:A
2、已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是 。 void print_value(int
*x) {printf(“%d\n”,++*x); }
A、23
B、24
C、25
D、26
我的答案:D
3、下面程序的运行结果是 。 #include
A、gae
B、ga
C、Language
D、有语法错
我的答案:A
4、下面程序的运行结果是 。 #include
A、abcabcabc
B、bcabcabc
C、aabcabc
D、cabcabc
我的答案:C
5、若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式*language[1]>*language[3]比较的是 。
A、字符F和字符P
B、字符串BASIC和字符串JAVA
C、字符B和字符J
D、字符串FORTRAN和字符串PASCAL
我的答案:B
6、若有说明语句 char a[]=”It is mine”; char *p=”It is mine”; 则以下不正确的叙述是_ 。
A、a+1表示的是字符t的地址
B、p指向另外的字符串时,字符串的长度不受限制
C、p变量中存放的地址值可以改变
D、a中只能存放10个字符
我的答案:D
7、以下程序调用fun函数求数组中最大值所在元素的下标。 #include
A、*k=i;
B、k=i;
C、*k=i-s;
D、k=i-s;
我的答案:A
8、有以下程序: #include
A、9,0
B、0,9
C、9,9
D、0,0
我的答案:B
9、以下正确的定义语句和赋值语句是_ 。
A、int b[3][5],(*p)[3],(*q)[5]; p=b; q=b;
B、char b[3][5],*p[3]; p[0]=b[0]; p[2]=*b+4;
C、double b[3][5],s[5][3],*q; q=b; s=q;
D、int b[10],*q; char *s; q=b; s=b;
我的答案:B
10、
A、*p1=*p2;
B、p1=p2;
C、p1=*p2;
D、*p1=p2;
我的答案:B
第九章测试
1、有以下结构体定义: struct example { int x; int y; }v1; 则正确的引用或定义是( ) 。
A、v1.x=10;
B、example v2; v2.x=10;
C、struct v2; v2.x=10;
D、struct example v2={10};
我的答案:A
2、对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是( )。 struct date { int year,month,day; };
struct worklist { char name[20]; char sex; struct date birth; }person;
A、year=1976
B、birth.year=1976
C、person.birth.year=1976
D、person.year=1976
我的答案:C
3、根据下述定义,可以输出字符'A'的语句是( )。 struct person { char name[11]; struct { char
name[11]; int age; }other; }; struct person man[10]={
{"Jone",{"Paul",20}},{"Paul",{"Mary",18}},
{"Mary",{"Adam",23}},{"Adam",{"Jone",22}} };
A、printf("%c",man[2].other.name[0]);
B、printf("%c",other.name[0]);
C、printf("%c",man[2].(* other[0]));
D、printf("%c",man[3].name);
我的答案:A
4、若有以下程序段: struct st { int n; struct st *next; }; struct st
a[3]={5,&a[1],7,&a[2],9, '\0'} ,*p=a; 则值为6的表达式为( )。
A、p++->n
B、p->n++
C、(*p).n++
D、++p->n
我的答案:D
5、运行下列程序段,输出结果是( ) 。 struct country { int num; char name[10];
}x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"}; struct country
*p; p=x+2; printf("%d,%c",p->num,(*p).name[2]);
A、3,a
B、4,g
C、2,USA
D、5,Spanish
我的答案:A
6、定义以下结构体数组 struct c { int x; int y; }s[2]={1,3,2,7};
语句printf("%d",s[0].x*s[1].x)的输出结果为( )
A、14
B、6
C、2
D、21
我的答案:C
7、定义以下结构体类型 struct student {char name[10]; float score[50]; double average;
}stud1; 则stud1占用内存的字节数是( )。
A、64
B、218
C、228
D、7
我的答案:B
8、能在一个存储区内处理不同的类型的数据叫结构体。
我的答案:X
9、在编译时对结构体类型不分配空间,只能对结构体变量分配空间。
我的答案:√
10、结构体一旦定义,系统就给它分配所需的内存单元。
我的答案:X
第十章测试
1、以下叙述中错误的是( )。
A、C语言中对二进制文件的访问速度比文本文件快
B、C语言中,随机文件以二进制代码形式存储数据
C、语句 FILE fp; 定义了一个名为fp的文件指针
D、C语言中的文本文件以ASCII码形式存储数据
我的答案:C
2、有以下程序 #include
A、0 0
B、123 45
C、1 4
D、1 2
我的答案:D
3、以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。
A、feof(fp)
B、ftell(fp)
C、fgetc(fp)
D、rewind(fp)
我的答案:D
4、以下程序 #include "stdio.h" void WriteStr(char *fn,char *str) { FILE *fp;
fp=fopen(fn,"W"); fputs(str,fp); fclose(fp); } main() {
WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); }
程序运行后,文件t1.dat中的内容是 ( )。
A、start
B、end
C、startend
D、endrt
我的答案:B
5、有如下程序 #include
A、goodabc
B、abcd
C、abc
D、abcgood
我的答案:C
6、有以下程序 #include
A、1 2
B、123 0
C、1 23
D、0 0
我的答案:B
7、有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END)
;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节) #include
A、2
B、1
C、4
D、3
我的答案:C
8、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。
A、0
B、1
C、-1
D、一个非0值
我的答案:A
9、下列关于C语言数据文件的叙述中正确的是( )。
A、文件由ASCII码字符序列组成,C语言只能读写文本文件
B、文件由二进制数据序列组成,C语言只能读写二进制文件
C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
我的答案:D
10、以下叙述中不正确的是 ( )。
A、C语言中的文本文件以ASCⅡ码形式存储数据
B、C语言中对二进制文件的访问速度比文本文件快
C、C语言中,随机读写方式不适用于文本文件
D、C语言中,顺序读写方式不适用于二进制文件
我的答案:D
推荐使用我们的公众号搜索题目,题目更全,检索更方便。支持语音、图片、文字等多种搜索方式。