首页 › 答案 › 题库 › 知到智慧树 › 未分类

智慧树知到《C语言程序设计(工程大学)》章节测试答案

智慧树知到《C语言程序设计(工程大学)》章节测试答案
第一章单元测试
1、C语言程序的基本单位是()
A.程序行
B.函数
C.语句
D.字符
正确答案:函数
2、C语言规定,在一个源程序中main函数的位置()。
A.必须在最开始
B.可以在其他函数之前或之后
C.必须在预处理命令的后面
D.必须在最后
正确答案:可以在其他函数之前或之后
3、对于一个正常运行的C程序,以下叙述中正确的是()
A.程序的执行总是从程序的第一个函数开始,在main函数结束
B.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
C.程序的执行总是从main函数开始,在main函数结束
D.程序的执行总是从main函数开始,在程序的最后一个函数中结束
正确答案:程序的执行总是从main函数开始,在main函数结束
4、以下叙述错误的是()
A.一个C程序可以包含多个不同名的函数
B.一个C程序只能有一个主函数
C.C程序的主函数必须用main作为函数名
D.C程序在书写时,有严格的缩进要求,否则不能编译通过
正确答案:C程序在书写时,有严格的缩进要求,否则不能编译通过
5、下列说法正确的是()
A.C程序的书写格式严格限制,一行内必须写一个语句
B.C程序的书写格式自由,一个语句可以分写在多行上
C.一个函数的函数体必须要有变量定义和执行部分
D.一个函数的函数体必须要有执行部分,可以没有变量定义
正确答案:C程序的书写格式自由,一个语句可以分写在多行上
6、下列关于注释行的描述中,正确的是()
A.单行注释以符号“/*”开头,以符号“*/”结尾
B.单行注释以“//”开头,“//”后面是注释内容
C.注释只能对程序中的某一行代码进行解释
D.注释只在C语言源程序中有效,在编译时会被编译器忽略
正确答案:单行注释以“//”开头,“//”后面是注释内容;注释只在C语言源程序中有效,在编译时会被编译器忽略
7、关于计算机语言的描述,正确的是()
A.机器语言由0和1组成,执行速度快
B.汇编语言比机器语言执行速度快
C.汇编语言已将机器语言符号化,所以它与机器无关
D.机器语言因为是面向机器的低级语言,所以执行速度慢
正确答案:机器语言由0和1组成,执行速度快
8、用C语言编写的程序()
A.经过编译、连接后被执行
B.是一个源程序文件
C.经过编译或解释才能被执行
D.可直接被执行
正确答案:经过编译、连接后被执行
9、连接程序将一个C程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终生成一个可执行的二进制文件,它的后缀是()
A..obj
B..cpp
C..exe
D..lib
正确答案:.exe
第二章单元测试
1、C语言提供的数据类型关键字有()
A.Char
B.integer
C.short
D.Double
正确答案:short
2、若有说明和语句:
int a=5; a++; 此处表达式a++的值是()。
A.6
B.4
C.5
D.7
正确答案:5
3、在C语言中,要求运算数必须是整型的运算符是()。
A.!
B./
C.<
D.%
正确答案:%
4、以下有4个用户标识符,其中合法的一个是()
A.f2()G3
B.4d
C.for
D.short
正确答案:f2()G3
5、在C语言中,合法的字符常量是()。
A.';C'
B.";"
C.';84'
D.';ab'
正确答案:';C'
6、若已定义x和y为double类型,且x=1,则表达式:y=x+3/2的值是()。
A.2.0
B.2
C.2.5
D.1
正确答案:2
7、若有以下定义:
char a; int b; float c; double d; 则表达式a*b+d-c值的类型为()。
A.float
B.double
C.char
D.int
正确答案:double
8、以下选项中可作为C语言合法整数的是()。
A.10110B
B.0xffa
C.0386
D.x2a2
正确答案:0xffa
9、以下选项中可作为C语言合法常量的是()。
A.-80.0e
B.-8e1.0
C.-80
D.e1
正确答案:-80
10、表达式3.6-5/2+1.2+5%2的值是()。
A.4.3
B.3.8
C.3.3
D.4.8
正确答案:3.8
第三章单元测试
1、阅读下面的程序#include<;stdio.h>;void main(){int i,j;scanf(";%3d%2d";,&;i,&;j);printf(";i=%d,j=%d";,i,j);}如果从键盘上输入1234567<;回车>;,则程序的运行结果是()
A.i=1,j=2
B.i=1234,j=567
C.i=123,j=45
D.i=123,j=4567
正确答案:i=123,j=45
2、以下可以实现“输入一个字符到变量ch";的语句是()
A.getchar(ch)
B.ch=getchar()
C.scanf(”%c”,ch )
D.getchar(”%c”,&;ch )
正确答案:ch=getchar()
3、有如下程序;#include <;stdio.h>;void main();{;float x=5.0,y;if(x<;0.0) y=0.0;else if (x<;10.0) y=1.0/x;else y=1.0;printf(";%f";,y);}该程序的输出结果是()
A.0.000000
B.0.50000
C.0.200000
D.1.000000
正确答案:0.200000
4、有程序:#include <;stdio.h>;void main();{ int x=1,y=0;switch (x);{;case 1:switch (y);{;case 0:printf(";first";);break;case 1:printf(";second";);break;};case 2:printf(";third";);}}的运行结果是()
A.first; third
B.first
C.second ; third
D.first; second
正确答案:first; third
5、有程序:#include<;stdio.h>;void main();{ int i=10,j=0;do;{ j=j+1;i--;}while(i>;2);printf(";%d";,j);}的运行结果是()
A.52
B.51
C.50
D.8
正确答案:8
6、下面程序的输出结果是();#include<;stdio.h>;;void main();{;int y=9;;for(y>;0;y--);{;if(y%3==0);{;printf(";%d";,--y);;continue;};};}
A.852
B.875421
C.936
D.741
正确答案:852
7、执行下列的程序段后,输出结果是()int a=5;while(a--);printf(";%d";,a)。
A.-1
B.0
C.4321
D.54321
正确答案:-1
8、下面程序的运行结果为()。#include<;stdio.h>;void main()
{;int n;for(n=1;n<;=10;n++);{ if(n%3==0)break;printf(";%d";,n);}
A.12
B.369
C.12345678910
D.12457810
正确答案:12
9、

A.选项D
B.选项B
C.选项C
D.选项A
正确答案:选项D
第四章单元测试
1、有定义语句:int b;char c[10];,则正确的输入语句是()。
A.scanf(";%d%s";,b, c)
B.scanf(";%d%s";,b,&;c)
C.scanf(";%d%s";,&;b,&;c)
D.scanf(";%d%s";,&;b, c)
正确答案:scanf(";%d%s";,&;b, c)
2、若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=';a';,d,g; 则数值为4的表达式是()。
A.a[g-c]
B.a[';d';-';c';]
C.a[4]
D.a[';d';-c]
正确答案:a[';d';-c]
3、以下程序的输出结果是()。
A.3,5,7
B.1,5,9
C.1,4,7
D.3,6,9
正确答案:3,5,7
4、下列描述中不正确的是()。
A.不能在赋值语句中通过赋值运算符";=";对字符型数组进行整体赋值
B.可以对整型数组进行整体输入、输出
C.可以对字符型数组进行整体输入、输出
D.字符型数组中可以存放字符串
正确答案:可以对整型数组进行整体输入、输出
5、当执行下面的程序时,如果输入ABC,则输出结果是()。
#include ";stdio.h"; #include ";string.h"; main()
{ char ss[10]=";1,2,3,4,5"; gets(ss); strcat(ss, ";6789";); printf(";%s\n";,ss); }
A.ABC67
B.12345ABC6
C.ABC456789
D.ABC6789
正确答案:ABC6789
6、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是()。
A.20
B.6
C.10
D.3
正确答案:20
7、以下数组定义中不正确的是()。
A.int c[100][100]={0}
B.int d[3][]={{1,2},{1,2,3},{1,2,3,4}}
C.int a[2][3]
D.int b[][3]={0,1,2,3}
正确答案:int d[3][]={{1,2},{1,2,3},{1,2,3,4}}
8、已有定义:char a[]=";xyz";,b[]={';x';,';y';,';z';};,以下叙述中正确的是()。
A.a数组长度小于b数组长度
B.a数组长度大于b数组长度
C.其余选项说法都不对
D.数组a和b的长度相同
正确答案:a数组长度大于b数组长度
9、以下叙述中错误的是()。
A.数组名代表的是数组所占存储区的首地址,其值不可改变
B.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信
C.可以通过赋初值的方式确定数组元素的个数
D.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
正确答案:当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信
10、若要求从键盘读入含有空格字符的字符串,应使用函数()。
A.gets()
B.scanf()
C.getc()
D.getchar()
正确答案:gets()
11、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是()。
A.a[0][3]
B.a[0][4]
C.a[1][4]
D.a[1][3]
正确答案:a[1][3]
第五章单元测试
1、下面程序的输出是()int fun3(int x){static int a=3;a+=x;return(a);}void main(){int k=2,m=1,n;n=fun3(k);n=fun3(m);printf(";%d";,n);}
A.4
B.6
C.9
D.3
正确答案:6
2、如果一个函数位于C程序文件的上部,在该函数体内声明部分后的复合语句中定义了一个变量,则该变量()
A.为局部变量,只在该函数内有效
B.为全局变量,在本程序文件范围内有效
C.定义无效,为非法变量
D.为局部变量,只在该复合语句中有效
正确答案:为局部变量,只在该复合语句中有效
3、下面函数的功能是()sss(char s[ ], t[ ]){;int i=0;while((s[i])&;&;(t[i])&;&;(t[i]== s[i]));i++;return;(s[i]-t[i]);}
A.将字符串s复制到字符串t中
B.求字符串的长度
C.将字符串s接续到字符串t中
D.比较两个字符串的大小
正确答案:比较两个字符串的大小
4、执行下列程序int a=3, b=4;void fun(int x1, int x2){printf(″%d,%d ″, x1+x2,b);}void main(){int a=5, b=6;fun(a, b);}后输出的结果是()
A.11,6
B.11,1
C.3,4
D.11,4
正确答案:11,4
5、以下叙述中,不正确的是()
A.使用float b定义的外部变量存放在内存中的动态存储区
B.使用float d定义的内部变量存放在内存中的动态存储区
C.使用static float c定义的内部变量存放在内存中的静态存储区
D.使用static float a定义的外部变量存放在内存中的静态存储区
正确答案:使用float b定义的外部变量存放在内存中的动态存储区
6、以下程序的主函数中调用了在其前面定义的fun函数#include<;stdio.h>;void main(){;double a[15],k;k=fun(a);}则以下选项中错误的fun函数首部是()
A.double fun(double a[])
B.double fun(double a)
C.double fun(double a[15])
D.double fun(double *a)
正确答案:double fun(double a)
7、C语言源程序的某文件中定义的全局变量的作用域为()。
A.从定义该变量的位置开始到本文件结束
B.本程序的所有文件的范围
C.本函数的全部范围
D.本文件的全部范围
正确答案:从定义该变量的位置开始到本文件结束
8、C语言中函数返回值的类型是由()决定的。
A.return语句中的表达式类型
B.形参的数据类型
C.函数定义时指定的类型
D.调用该函数时的实参的数据类型
正确答案:函数定义时指定的类型
9、#include <;stdio.h>;f(int b[ ], int n){ int i, r=0;for(i=0; i<;=n; i++) r=r+b[i];return r;}void main(){;int x, a[]={ 2,3,4,5,6,7,8,9};x=f(a, 3);printf(";%d";,x);}上面程序的输出结果是()
A.20
B.14
C.9
D.5
正确答案:14
第六章单元测试
1、已有定义 int a=2, *p1=&;a, *p2=&;a; ,下面不能正确执行的赋值语句是()
A.p1=p2
B.a=*p1* (*p2)
C.p1=a
D.a=*p1+*p2
正确答案:p1=a
2、下面判断正确的是()。
A.char *s="; girl";等价于char *s; *s="; girl"
B.char s[10]={"; girl";};等价于char s[10];s[10]={";girl";}
C.char s[4]= ";boy";, t[4]= ";boy";等价于 char s[4]=t[4]= ";boy"
D.char *s="; girl";等价于char *s; s=";girl"
正确答案:char *s="; girl";等价于char *s; s=";girl"
3、有以下程序 ; #include<;stdio.h>; main() {; int m=1,n=2,*p=&;m,*q=&;n,*r; r=p;p=q;q=r; printf(";%d,%d,%d,%d\n";,m,n,*p,*q); } 程序运行后的输出结果是 ()
A.1,2,1,2
B.2,1,2,1
C.1,2,2,1
D.2,1,1,2
正确答案:1,2,2,1
4、若有以下定义和语句:int s[4][5], (*ps) [5];ps=s;则对s数组元素的正确引用形式是()。
A.*(ps+1)+3
B.ps+1
C.ps[0][2]
D.*(ps+3)
正确答案:ps[0][2]
5、void ss(char *s, char t){while (*s){ if (*s==t) *s=t-';a';+';A';s++;}}void main(){char str[100]=";abeddfefdbd";, c=';d';ss(str, c);printf("; %s\n";,str) ;}程序送行后的輸出結果是()。
A.abeDDfefDbD
B.abcAAfefAbA
C.ABCDDEFEDBD
D.Abcddfefdbd
正确答案:abeDDfefDbD
6、下列程序段的输出結果是()。#include ";stdio.h";void fun(int *x,int *y){printf(";%d %d ";, *x,*y);*x=3;*y=4;}void main(){int x=1,y=2;fun(&;y, &;x);printf(";%d %d";, x, y);}
A.1 2 1 2
B.1 2 3 4
C.2 1 1 2
D.2 1 4 3
正确答案:2 1 4 3
7、下列程序的输出结果是()。#include ";stdio.h";void main(){char a[10]={9,8,7,6,5,4,3,2,1,0}, *p=a+5;printf(";%d";, *--p);}
A.5
B.非法
C.a[4] 的地址
D.3
正确答案:5
8、有以下程序;#include ";stdio.h";#include ";string.h"; void main(int argc, char *argv[]); {; int m, length=0; for (m=1;m<;argc; m++) length+=strlen (argv[m]) ; printf(";%d\n";,length) ;}; 程序编译连接后生成的可执行文件是file.exe,若执行时输入带参数的命令行是:file; 1234; 567; 89<;回车>;,则运行结果是()。
A.22
B.13
C.17
D.9
正确答案:13
9、有以下函数:;char *fun (char *s){ ...return s;}该函数的返回值是()。
A.无确定值
B.一个临时存储单元的地址
C.形参s自身的地址值
D.形参 s中存放的地址值
正确答案:形参 s中存放的地址值
10、若有以下说明语句:char *language[ ] = {“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};char **q; q = language + 2; 则语句printf(“%s\n”, *q) 输出的是()
A.格式说明不正确,无法得到确定的输出
B.language[2]元素的地址
C.language[2]元素的值,它是字符串PASCAL的首地址
D.字符串PASCAL
正确答案:字符串PASCAL
第七章单元测试
1、定义以下结构体类型struct; s{; char; b;; float; f;};则语句printf(";%d";,sizeof(struct; s))的输出结果为()。
A.5
B.4
C.6
D.3
正确答案:5
2、当定义一个结构体变量时,系统为它分配的内存空间是()。
A.结构中第一个成员所需的内存容量
B.结构体中占内存容量最大者所需的容量
C.结构中一个成员所需的内存容量
D.结构中各成员所需内存容量之和
正确答案:结构中各成员所需内存容量之和
3、定义以下结构体数组; struct c; { int x;; int y;; }s[2]={1,3,2,7};语句printf(";%d";,s[0].x*s[1].x)的输出结果为()。
A.21
B.14
C.6
D.2
正确答案:2
4、下面程序的运行结果是()。struct; KeyWord{; char Key[20];; int ID;}kw[]={";void";,1,";char";,2,";int";,3,";float";,4,";double";,5};main(){; printf(";%c,%d\n";,kw[3].Key[0], kw[3].ID);}
A.l,4
B.f,4
C.i,3
D.n,3
正确答案:f,4
5、如果有下面的定义和赋值,则使用()不可以输出n中data的值。struct; SNode{; unsigned id;; int data;}n,*p;p=&;n。
A.p->;data
B.(*p).data
C.n.data
D.p.data
正确答案:p.data
6、根据下面的定义,能输出Mary的语句是()。; struct person; { ; char name[9];; int age;; };struct person class[5]={";John";,17,";Paul";,19,";Mary";,18,";Adam";,16}。
A.printf(";%s\n";,class[1].name)
B.printf(";%s\n";,class[0].name)
C.printf(";%s\n";,class[2].name)
D.printf(";%s\n";,class[3].name)
正确答案:printf(";%s\n";,class[2].name)
7、定义以下结构体数组;struct date;{ int year;; int month;; int day; };;struct s;{ struct date birthday;; char name[20];;} x[4]={{2008, 10, 1, ";guangzhou";}, {2009, 12, 25, ";Tianjin";}};语句printf(";%s,%d,%d,%d";,x[0].name,x[1].birthday.year); 的输出结果为()。
A.guangzhou,2008
B.Tianjin,2008
C.Tianjin,2009
D.guangzhou,2009
正确答案:guangzhou,2009
8、C语言定义类型名的关键字是()
A.name
B.typedef
C.struct
D.define
正确答案:typedef
9、结构体变量做函数参数,是参传递给形参的是()
A.结构体变量第一个成员的值
B.结构体变量的首地址
C.其余选项都不对
D.结构体变量所有成员的值
正确答案:结构体变量所有成员的值
10、关于链表,以下说法错误的是()
A.在链表中插入一个节点不需要改变其他节点的物理位置
B.malloc函数是链表专用的处理函数,不能用在其他地方
C.链表中的节点可以删除
D.链表是一种动态数据结构
正确答案:malloc函数是链表专用的处理函数,不能用在其他地方
第八章单元测试
1、系统标准输入文件是指()
A.硬盘
B.软盘
C.键盘
D.显示器
正确答案:键盘
2、若执行fopen函数打开文件不成功时,则函数的返回值是()
A.0
B.1
C.EOF
D.地址值
正确答案:0
3、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件打开方式应该是()
A.“ab+”
B.“wb+”
C.“rb+”
D.“ab”
正确答案:“wb+”
4、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式可以是()
A.只写
B.读或者
C.追加
D.B和C都正确
正确答案:读或者
5、函数调用语句fseek(fp,-20L,2)的含义是()
A.将文件位置指针从文件末尾处后退20个字节
B.将文件位置指针移到离当前位置20个字节处
C.将文件位置标记移到距离文件头20个字节处
D.将文件位置标记从当前位置向后移动20个字节
正确答案:将文件位置指针从文件末尾处后退20个字节
6、若fp是指向某文件的指针,且已读到文件末尾,则feof(fp)的返回值是()
A.EOF
B.1
C.NULL
D.-1
正确答案:1
7、下列关于C语言数据文件的叙述正确的是()
A.一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用文本文件保存
B.文件由ASCII码字符序列组成,C语言只能读写文本文件
C.文件由二进制数据序列组成,C语言只能读写二进制文本文件
D.二进制文件把数据按其在内存中的存储形式原样输出到磁盘上存放
正确答案:二进制文件把数据按其在内存中的存储形式原样输出到磁盘上存放
8、C语言中,能识别和处理的文件是()
A.数据文件和二进制文件
B.流文件和文本文件
C.文本文件和二进制文件
D.文本文件和数据块文件
正确答案:文本文件和二进制文件
9、若调用fputc函数输出字符成功,则其返回值是()
A.0
B.输出的字符
C.EOF
D.1
正确答案:输出的字符
10、利用fread (buffer,size ,count, fp)函数可实现的操作是()
A.若文件操作出现异常,则返回实际从文件读取数据块的个数
B.从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区中
C.从fp指向的文件中,将size*count个字节的数据读到由buffer指出的数据区中
D.以二进制形式读取文件中的数据,返回值是实际从文件读取数据块的个数count
正确答案:从fp指向的文件中,将size*count个字节的数据读到由buffer指出的数据区中