C君带你玩编程(昆明理工大学)智慧树知到章节测试答案

见面课:C君与你的牵手之约
1、问题:下面有关C语言特点的说法中,错误的是__。
选项:
A: C语言编写的代码较为紧凑,执行速度也较快
B:C语言不仅适合编写各种应用软件,还适于编写各种系统软件
C:C语言是一种模块化和结构化的语言
D:C语言编写的程序通常不具备移植性
答案: 【C语言编写的程序通常不具备移植性】

2、问题:以下叙述中正确的是_。
选项:
A: C程序的基本组成单元是语句
B: C程序中的每一行中只能写一条语句
C:每条C语句以分号结束
D:C语句必须在一行内写完
答案: 【每条C语句以分号结束】

3、问题:不合法的字符常量是_。
选项:
A: ‘\678’
B: ‘”‘
C: ‘ ‘
D:’\4’
答案: 【 ‘\678’】

4、问题:下面有关变量声明的说法中,正确的是_。
选项:
A: C语言中不用先声明变量,需要时直接使用即可
B:每个变量的存储空间大小由数据类型和编译环境共同决定
C:在C语言中,int型变量的存储空间大小为8个字节
D:变量声明时,不能进行赋值操作
答案: 【每个变量的存储空间大小由数据类型和编译环境共同决定】

5、问题:在C语言的算术运算符中,运算对象必须是整数的运算符是______。
选项:
A:/
B: %
C:%和/
D: *
答案: 【 %】
见面课:C君之归去来兮
1、问题:以下数据类型中,不属于构造类型的是 。
选项:
A:数组
B:结构体
C:共用体
D:双精度实型
答案: 【双精度实型】

2、问题:若有以下定义:struct Book{ char isbn[20]; char bookname[20]; char author[20]; float price; int number;} b1;则b1变量所占的存储空间为 。
选项:
A:20
B:64
C:66
D:68
答案: 【68】

3、问题:以下有关结构体数组的说法中,错误的是 。
选项:
A:结构体数组中的每个元素都是结构体类型
B:结构体数组也可初始化
C:指针可以指向结构体变量,但不可以指向结构体数组
D:结构体数组在内存中是连续存放的
答案: 【指针可以指向结构体变量,但不可以指向结构体数组】

4、问题:若指向结构体变量的指针P指向结构体变量book,则可获取book变量的price成员的表示式为 。
选项:
A:p->price
B:p.price
C:book.price
D:(p).price
答案: 【p->price;
book.price;
(p).price】

5、问题:若struct A类型的结构体变量可实现链式存储,则该结构体类型的定义中必须包括的成员类型是 。
选项:
A: int
B: char
C:struct A
D:struct A
答案: 【struct A 】
见面课:C君和你一起玩结构化编程
1、问题:以下哪一个不是结构化程序设计的基本控制结构__。
选项:
A:顺序结构
B:算法结构
C:选择结构
D:循环结构
答案: 【算法结构】

2、问题:有以下程序#includevoid main( ){int x = 0x13;if (x = 0x12) printf(“True”);printf(“False”);}程序运行后的输出结果是__。
选项:
A:TrueFalse
B:TRUE
C:FALSE
D:TrueFalseTrue
答案: 【TrueFalse】

3、问题:有以下程序:#include void main(){ int x=1, y=0, a=0, b=0;   switch (x)   { case 1:    switch(y)    { case 0: a++; break;      case 1: b++; break;    }     case 2: a++; b++; break;     case 3: a++; b++;  }  printf(“a=%d, b=%d”, a, b);}程序的运行结果是__。
选项:
A:a=2,b=2
B:a=2,b=1
C:a=1,b=1
D:a=1,b=0
答案: 【a=2,b=1】

4、问题:若变量已正确定义,有以下程序段i=0;do printf(“%d,”,i); while( i++ );printf(“%d”,i);其输出结果是_。
选项:
A:0,0
B:1,1
C:0,1
D:程序进入无限循环
答案: 【0,1】

5、问题:有以下程序#include void main(){ int x,a=1,b=1;while(1){ scanf(“%d”,&x);if(x>0) { a=x; break; }if(x<0) { b=x; continue; }printf(“%d,%d”,a,b);}}程序运行时输入:-1 -2 0 1 <回车>,则输出结果是______。
选项:
A:-1,1
B:2,2
C:1,2
D:-2,1
答案: 【1,2】
见面课:C君晋级篇
1、问题:对C语言字符串的描述,错误的是( )。
选项:
A:字符串是字符型数组
B:字符串以’\0’作为结尾标识
C:’\0’不占用内存存储空间
D:字符串有效长度可以通过库函数测定
答案: 【‘\0’不占用内存存储空间】

2、问题:C语言中的函数,体现的程序设计思想精华不包括( )。
选项:
A:继承的思想
B:信息隐藏的思想
C:分而治之的思想
D:复用的思想
答案: 【继承的思想】

3、问题:有函数定义头部float fun(int a,char b),说明函数的返回值类型为( )。
选项:
A:void
B:float
C:int
D:char
答案: 【float】

4、问题:有如下代码段 int *p;int a[6]={1,5,6,9,2}p=a+3;则指针p“指向”的元素的值为( )
选项:
A:4
B:6
C:9
D:0
答案: 【9】

5、问题:指针与函数的关系,叙述错误的是( )。
选项:
A:指针可以作为函数的形参
B:指针可以作为函数的返回值
C:指针可以指向函数
D:指针作为形参,可以延长形参的生存期
答案: 【指针作为形参,可以延长形参的生存期】
第一章测试

1、将C程序编译成目标文件,其扩展名为EXE。
我的答案:X

2、main函数是C程序的入口,由计算机系统负责调用。
我的答案:√

3、变量必须先定义后使用。
我的答案:√

4、C语言是一种( )。
A、低级语言
B、高级语言
C、机器语言
D、汇编语言
我的答案:B

5、在C源程序中,整型常量不能表示的数制是( )。
A、二进制
B、八进制
C、十进制
D、十六进制
我的答案:A

6、若已定义char c='a',则变量c所占的字节数为__________。
A、1
B、2
C、3
D、4
我的答案:A

第二章测试

1、二元运算符均可以和赋值运算符构成复合的赋值运算符。
我的答案:X

2、表达式1/4+2.75的值是3。
我的答案:X

3、已知i、j、k为int型变量,若从键盘输入:1,2,3 ,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是( )。
A、scanf('%2d %2d %2d',&i,&j,&k);
B、scanf('%d %d %d',&i,&j,&k);
C、scanf('%d,%d,%d',&i,&j,&k);
D、scanf('i=%d,j=%d,k=%d',&i,&j,&k);
我的答案:C

4、以下叙述中正确的是______。
A、调用printf函数时,必须要有输出项
B、使用putchar函数时,必须在之前包含头文件stdio.h
C、在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D、调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
我的答案:B

5、设有定义:int x=2;,以下表达式中,值不为6的是( )。
A、x*=x+1
B、x++,2*x
C、x*=(1+x)
D、2*x,x+=2
我的答案:D

第三章测试

1、所有关系运算符的运算优先级相同。
我的答案:X

2、关系运算符是双目运算符,其功能是将两个运算对象进行大小比较。
我的答案:√

3、当a=1,b=2,c=3时,执行语句“if(a > c) {b=a;a=c;c=b;}”后,变量c中的值为2。
我的答案:√

4、为表示关系100 ≥ b ≥ 0,应使用C语言表达式______。
A、(100 >=b)&&(b >=0)
B、(100 >=b)and(b >=0)
C、100 >=b >=0
D、(100 >=B)&&(B >=0)
我的答案:A

5、else子句不能单独作为语句使用,它是if语句的一部分,必须与if配对使用。
我的答案:√

第四章测试

1、在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。
我的答案:X

2、循环for( ; ; )的循环条件始终为真。
我的答案:√

3、若i为整型变量,则 for(i=2;i==0;)printf("%d",i--);循环执行次数是0次。
我的答案:√

4、若变量已正确定义,有以下程序段 i=0; do printf("%d,",i);while(i++); printf("%d",i); 其输出结果是( )。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
我的答案:B

5、有以下程序 #include void main() { int x,a=1,b=1; while(1) { scanf("%d",&x); if(x>0) { a*=x; break; } if(x<0) { b*=x; continue; } printf("%d,%d",a,b); } } 程序运行时输入:-1 -2 0 1 2 <回车> ,则输出结果是( )。
A、-1,1
B、2,2
C、1,2
D、-2,1
我的答案:C

第五章测试

1、数组名代表数组的首地址。
我的答案:√

2、一个数组可以存储不同类型的数据。
我的答案:X

3、若有定义:int a[10];,使用数组元素时,下标的最小值是1,最大值是10。
我的答案:X

4、下面程序的运行结果是______。 #include < stdio.h > main() { int a[5],i; for(i=0;i< 5;i++) { a[i]=9*(i-2+4*(i >3))%5; printf("%2d",a[i]); } }
A、-3-4 0 4 4
B、-3-4 0 4 3
C、-3-4 0 4 2
D、-3-4 0 4 0
我的答案:A

5、下面程序的运行结果是______。 #include < stdio.h > main() { int a[3][3]={1,2,3,4,5,6,7,8,9},i; for(i=0;i<=2;i++) printf("%d ",a[i][2-i]); }
A、3 5 7
B、3 6 9
C、1 5 9
D、1 4 7
我的答案:A

6、数组在定义时可以不指定数组的长度,可根据程序中实际使用的元素个数决定。
我的答案:X

第六章测试

1、如果某个函数在定义时省略了存储类型,则默认的存储类型是int。
我的答案:√

2、函数可以嵌套定义,但是不可以嵌套调用。
我的答案:X

3、函数中的多个return语句,可以实现调用该函数后,多个值同时被返回。
我的答案:X

4、以下程序运行后的输出结果是________。 #include "stdio.h" int f(int x); main() { int n=1,m; m=f(f(f(n))); printf("%d ",m); } int f(int x) {return x*2;}
A、1
B、2
C、4
D、8
我的答案:D

5、以下程序的输出结果是________。 #include "stdio.h" f(int b[],int m,int n) { int i,s=0; for(i=m;i<= n;i=i+2) s=s+b[i]; return s; } main() { int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf("%d ",x); }
A、8
B、10
C、15
D、18
我的答案:D

第七章测试

1、若有定义int a[5],*p=a;,则对a数组元素的正确引用是______。
A、*&a[5]
B、a+2
C、*(p+5)
D、*(a+2)
我的答案:D

2、以下程序的运行结果是______。 #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 ",m,n,*p,*q); }
A、1,2,1,2
B、1,2,2,1
C、2,1,2,1
D、2,1,1,2
我的答案:B

3、若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是______。
A、a,point,*&a
B、&*a,&a,*point
C、&point,*point,&a
D、&a,&*point,point
我的答案:D

4、已知int a[4],*p;,则语句p=&a;是正确的。
我的答案:X

5、指针变量的类型不是该变量本身的类型,而是它所指向的变量的类型。
我的答案:√

第八章测试

1、下列的结论中只有________是正确的。
A、所有的递归程序均可以采用非递归算法实现
B、只有部分递归程序可以用非递归算法实现
C、所有的递归程序均不可以采用非递归算法实现
D、以上三种说法都不对
我的答案:A

2、以下程序的执行结果为________。 #include "stdio.h" float fun(int x,int y) { return(x*y); } main() { int a=2,b=5,c=8; printf("%.0f",fun((int)fun(a+b,c),a-b));}
A、168
B、-168
C、24
D、-24
我的答案:B

3、以下程序的输出结果是________。 #include "stdio.h" #define f(x) x*x void main() { int a=6,b=2,c; c=f(a)/f(b); printf("%d ",c); }
A、9
B、18
C、36
D、6
我的答案:C

4、有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。
我的答案:X

5、下列程序的运行结果为________。 #include "stdio.h" #define MA(x) x*(x-1) void main() { int a=1,b=2; printf("%d",MA(1+a+b)); }
A、5
B、6
C、7
D、8
我的答案:D

第九章测试

1、结构体中各个成员的数据类型必须是相同的。
我的答案:X

2、typedef的作用是给已有的数据类型取一个别名。
我的答案:√

3、结构体变量所占用空间是全部成员占用空间之和。
我的答案:√

4、在定义一个共用体变量时,系统分配给它的内存是( )。
A、各成员所需内存之和
B、第一个成员所需内存
C、成员中占用内存最大者
D、任意一个成员所需内存
我的答案:C

5、已知对学生记录的描述为:  struct student  { int num;   char name[20],sex;    struct{ int year,month,day; }birthday;  };  struct student stu; 设变量stu中的"生日"是"1995年11月12日",对"birthday"正确赋值的程序是______。
A、year=1995;month=11;day=12;
B、stu.year=1995;stu.month=11;stu.day=12;
C、birthday.year=1995;birthday.month=11;birthday.day=12;
D、stu.birthday.year=1995;stu.birthday.month=11;stu.birthday.day=12;
我的答案:D

第十章测试

1、C语言中通过文件指针对它所指向的文件进行操作。
我的答案:√

2、函数rewind()的作用是使文件指针返回上次移动的位置。
我的答案:X

3、以下函数不能用于向文件写入数据的是______。
A、ftell
B、fwrite
C、fputc
D、fprintf
我的答案:√

4、下列关于C语言文件的叙述中正确的是______。
A、文件由一系列数据依次排列组成,只能构成二进制文件
B、文件由结构序列组成,可以构成二进制文件或文本文件
C、文件由数据序列组成,可以构成二进制文件或文本文件
D、文件由字符序列组成,其类型只能是文本文件
我的答案:C

5、函数fopen()不可以打开二进制文件。
我的答案:X