MOOC 程序设计基础A(汪德刚)(大连理工大学)1455642163 最新慕课完整章节测试答案
1 程序设计与C语言简介
文章目录
第1次 单元测验
1、单选题:
通常把高级语言源程序翻译成目标程序的程序称为( )。
选项:
A: 编辑程序
B: 解释程序
C: 汇编程序
D: 编译程序
答案: 【 编译程序】
2、单选题:
一个算法应该具有"确定性"等5个特性,下面对另外4个特性的描述中错误的是()。
选项:
A: 有零个或多个输出
B: 有穷性
C: 有零个或多个输入
D: 可行性
答案: 【 有零个或多个输出】
3、单选题:
结构化程序由三种基本结构组成,三种基本结构组成的算法,( )。
选项:
A: 只能完成一些简单的任务
B: 只能完成符合结构化的任务
C: 可以完成任何复杂的任务
D: 只能完成部分复杂的任务
答案: 【 可以完成任何复杂的任务】
4、单选题:
C语言规定,在一个源程序中,main函数的位置()。
选项:
A: 必须在系统调用的库函数的后面
B: 必须在最后
C: 可以任意
D: 必须在最开始
答案: 【 可以任意】
5、单选题:
以下叙述正确的是()。
选项:
A: 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B: 在C程序中,main函数必须位于程序的最前面
C: C语言本身没有输入输出语句
D: C程序的每行中只能写一条语句
答案: 【 C语言本身没有输入输出语句】
6、单选题:
一个C程序的执行是从()。
选项:
A: 本程序的main函数开始,到main函数结束
B: 本程序文件的第一个函数开始,到本程序main函数结束
C: 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
D: 本程序的main函数开始,到本程序文件的最后一个函数结束
答案: 【 本程序的main函数开始,到main函数结束】
7、单选题:
以下叙述中正确的是 ()。
选项:
A: 花括号"{"和"}"只能作为函数体的定界符
B: 构成C程序的基本单位是函数,所有函数名都可以由用户命名
C: 分号是C语句之间的分隔符,不是语句的一部分
D: C程序中注释部分可以出现在程序中任意合适的地方
答案: 【 C程序中注释部分可以出现在程序中任意合适的地方】
8、单选题:
以下叙述正确的是( )。
选项:
A: C语言允许直接访问物理地址,可以直接对硬件进行操作
B: C语言程序不用编译,即可被计算机识别运行
C: C语言不允许直接访问物理地址,不可以直接对硬件进行操作
D: C语言程序只需编译,不需连接即可被计算机运行
答案: 【 C语言允许直接访问物理地址,可以直接对硬件进行操作】
9、单选题:
下面不是算法特征的是( )。
选项:
A: 继承性
B: 有穷性
C: 确定性
D: 可行性
答案: 【 继承性】
10、单选题:
关于C语言,下面叙述不正确的是()。
选项:
A: 既具有高级语言的特点,又具有汇编语言的特点
B: 既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序
C: 语法限制不太严格,例如,对数组下标越界不作检查
D: 不用编译可以直接运行
答案: 【 不用编译可以直接运行】
11、单选题:
下面选项()不属于结构化程序设计原则。
选项:
A: 自顶向下
B: 逐步求精
C: 程序模块化
D: 不限制GOTO语句使用
答案: 【 不限制GOTO语句使用】
12、单选题:
下面选项中,( )不属于程序的特性。
选项:
A: 目的性
B: 有序性
C: 有限性
D: 可操作性
E: 实用性
答案: 【 实用性】
13、判断题:
计算机只能完成其能力范围内的计算工作,超出计算机能力范围的计算计算机将无法完成。
选项:
A: 正确
B: 错误
答案: 【 正确】
14、判断题:
可计算问题的规模造成复杂度加大,理论上计算机可以完成的计算工作,实际计算机都可以完成。
选项:
A: 正确
B: 错误
答案: 【 错误】
15、判断题:
程序是计算机为完成某一任务所必须执行的一系列指令的有序集合。
选项:
A: 正确
B: 错误
答案: 【 正确】
16、判断题:
高级语言是用接近自然语言的符号,按照一定的语法规则编写程序,需要编译程序翻译成机器指令才能被计算机执行。
选项:
A: 正确
B: 错误
答案: 【 正确】
17、判断题:
编译方式下的程序当修改源程序后,需要重新编译才能够正确运行。
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
面向对象程序设计方法具有与人们的习惯与思维方法一致,便于解决复杂问题的特性。
选项:
A: 正确
B: 错误
答案: 【 正确】
19、判断题:
C语言属于面向过程的优秀程序设计语言,既可作为系统设计语言,也可作为应用程序设计语言。
选项:
A: 正确
B: 错误
答案: 【 正确】
20、判断题:
算法可以分为数值算法和非数值算法两大类。
选项:
A: 正确
B: 错误
答案: 【 正确】
21、判断题:
对于同一个问题,只能有唯一的算法去解决。
选项:
A: 正确
B: 错误
答案: 【 错误】
22、判断题:
C语言中不区分大小写字母。
选项:
A: 正确
B: 错误
答案: 【 错误】
23、判断题:
程序中适当地添加注释,可以增加程序的可读性和清晰性。
选项:
A: 正确
B: 错误
答案: 【 正确】
24、判断题:
在VC++6.0环境下,任何一个C程序都必须包含在一个工程项目中,而且只能有一个main函数。
选项:
A: 正确
B: 错误
答案: 【 正确】
25、判断题:
经过编译、连接后的可执行程序可以多次运行。
选项:
A: 正确
B: 错误
答案: 【 正确】
26、填空题:
C语言开发工具直接输入的程序代码是____文件,经过编译后生成的是目标程序文件, 经过连接后生成的是可执行程序文件。
答案: 【 源##%_YZPRLFH_%##源程序】
27、填空题:
C语言源程序的基本组成单位是_____。
答案: 【 函数】
28、填空题:
结构化程序设计所规定的三种基本控制结构是顺序结构、_____结构和循环结构。
答案: 【 选择##%_YZPRLFH_%##分支】
29、填空题:
算法的效率通常由_____ 复杂度和空间复杂度衡量。
答案: 【 时间】
30、填空题:
描述算法的方法主要有_____、专用工具(传统流程图、N-S流程图)和伪代码等。
答案: 【 自然语言】
31、填空题:
计算机系统由硬件系统和______系统两部分组成。
答案: 【 软件】
32、填空题:
计算机语言分为:机器语言、汇编语言和_________语言。
答案: 【 高级】
33、填空题:
程序的执行方式分为_________和解释两种方式。
答案: 【 编译】
34、填空题:
衡量算法的时间复杂度是指对于相同规模的问题,算法的执行_______的长短。
答案: 【 时间】
计算机可以处理哪些问题?
1、判断题:
计算机只能处理由人们编写的、解决某些问题的、事先存储在计算机存储器中的二进制指令序列。
选项:
A: 正确
B: 错误
答案: 【 正确】
10 变量的作用域及编译预处理
第10次单元测验
1、单选题:
设有以下宏定义: #define N 3 #define Y(n) ((N+1)*n)则执行语句z=2*(N+Y(5+1));后,z的值为( )。
选项:
A: 60
B: 42
C: 48
D: 54
答案: 【 48】
2、单选题:
C编译系统对程序中的宏展开是在()。
选项:
A: 编辑时进行的
B: 编译时进行的
C: 程序执行时进行的
D: 编译前预处理时进行的
答案: 【 编译前预处理时进行的】
3、单选题:
以下叙述不正确的是( )。
选项:
A: 全局变量可以由系统自动初始化
B: 在程序运行期间,全局变量所占存储单元的值永久保留
C: 当局部变量与全局变量重名时,全局变量起作用
D: 全局变量存放在静态存储区
答案: 【 当局部变量与全局变量重名时,全局变量起作用 】
4、单选题:
下面叙述中错误的是( )。
选项:
A: 在其它函数中定义的变量在主函数中也不能使用
B: 主函数中定义的变量在整个程序中都是有效的
C: 形式参数也是局部变量
D: 复合语句中定义的变量只在该复合语句中有效
答案: 【 主函数中定义的变量在整个程序中都是有效的 】
5、单选题:
执行下列程序后的输出结果是( )。#include <stdio.h>int a=3, b=4;void fun(int x1, int x2){ printf("%d, %d", x1+x2, b);}int main(){ int a=5, b=6; fun(a, b); return 0;}
选项:
A: 3, 4
B: 11,1
C: 11,4
D: 11,6
答案: 【 11,4】
6、单选题:
下列说法错误的是()。
选项:
A: 变量的作用域是指变量的作用范围,即在程序中可以被读写访问的区域,它取决于变量被定义的位置
B: 局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用
C: 形参也是局部变量,形参变量和实参变量的作用域是不同的,因此形参变量和实参变量同名时,二者互不干扰
D: 只要同名的变量出现在不同的作用域内,二者互不干扰,编译器有能力区分不同作用域中的同名变量
答案: 【 局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用】
7、单选题:
C编译系统对文件包含命令#include "file.h"的处理通常是在( )。
选项:
A: 编译处理之前
B: 编译处理过程之中
C: 程序连接时
D: 程序执行的开始
答案: 【 编译处理之前】
8、单选题:
在文件包含预处理的定义中,#include后的文件名用< >括起来时,寻找被包含文件的方式是( )。
选项:
A: 仅搜索当前目录
B: 先在源程序所在目录搜索,再按系统设定的标准方式搜索
C: 仅搜索源程序所在目录
D: 按系统指定的路径下搜索指定文件
答案: 【 按系统指定的路径下搜索指定文件】
9、单选题:
如果在一个函数中的复合语句中定义了一个变量,以下正确的说法是( )。
选项:
A: 该变量在本程序范围内均有效
B: 该变量在主函数中有效
C: 该变量只在该复合语句中有效
D: 该变量在该函数中有效
答案: 【 该变量只在该复合语句中有效】
10、单选题:
函数的形式参数系统默认存储类型说明是()。
选项:
A: static
B: extern
C: register
D: auto
答案: 【 auto】
11、单选题:
下面叙述中错误的是( )。
选项:
A: 在其它函数中定义的变量在主函数中也不能使用
B: 主函数中定义的变量在整个程序中都是有效的
C: 复合语句中定义的变量只在该复合语句中有效
D: 形式参数也是局部变量
答案: 【 主函数中定义的变量在整个程序中都是有效的】
12、单选题:
下述程序的结果为( )。int f(int x){ static int a=3; a+=x; return a;}int main(){ int k=2,m=1,n; n=f(k); n=f(m); printf("%d", n); return 0;}
选项:
A: 9
B: 6
C: 4
D: 3
答案: 【 6】
13、单选题:
以下对静态局部变量的叙述,不正确的是()。
选项:
A: 在一个函数中定义的静态局部变量可以被另一函数调用
B: 数值型静态局部变量的初值默认为0
C: 静态局部变量是在编译时赋初值的,故它只被赋值一次
D: 静态局部变量在整个程序运行期间都不释放
答案: 【 在一个函数中定义的静态局部变量可以被另一函数调用】
14、判断题:
在一个函数中定义的静态局部变量可以被另一个函数调用。
选项:
A: 正确
B: 错误
答案: 【 错误】
15、判断题:
用户可以自己定义包含类型声明、函数原型、全局变量、符号常量等内容的头文件,使用#include 命令将其包含到程序中。
选项:
A: 正确
B: 错误
答案: 【 正确】
16、判断题:
条件编译可以根据设定的表达式的值,决定编译不同的程序段。
选项:
A: 正确
B: 错误
答案: 【 正确】
17、判断题:
内部函数是指函数的作用域仅限于本文件的函数。
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
编译预处理命令也属于C语句,可以在末尾加分号。
选项:
A: 正确
B: 错误
答案: 【 错误】
19、判断题:
在一个文件内定义的静态全局变量也可以被其他文件引用。
选项:
A: 正确
B: 错误
答案: 【 错误】
20、判断题:
如果在一个文件内需要使用在其他文件中定义的全局变量,则需要在引用该变量的文件内,用extern对此变量做说明。
选项:
A: 正确
B: 错误
答案: 【 正确】
21、判断题:
宏名没有作用域,在整个文件范围内都有效。
选项:
A: 正确
B: 错误
答案: 【 错误】
22、判断题:
进行宏定义时,可以引用已经定义的宏名进行层层置换。
选项:
A: 正确
B: 错误
答案: 【 正确】
23、判断题:
带参数的宏定义,进行宏展开时与函数调用主要区别是,只替换,不求值。
选项:
A: 正确
B: 错误
答案: 【 正确】
24、填空题:
凡是函数中未指定存储类别的局部变量,其隐含的存储类别关键字为____。
答案: 【 auto】
25、填空题:
预处理命令行都必须以_____号开始 。
答案: 【 #】
26、填空题:
局部静态变量是在静态存储区分配存储单元的,在整个程序运行期间始终占_____空间。
答案: 【 内存##%_YZPRLFH_%##存储】
27、填空题:
在定义函数时,如果在函数名字前面加上关键字_______或省略该关键字,则函数属于外部函数。
答案: 【 extern】
28、填空题:
如果希望变量在函数调用结束后仍然保留其值,则可以将变量定义为局部静态变量,定义方式为在类型说明符前加上_______关键字。
答案: 【 static】
29、填空题:
下面程序的运行结果: 。#include <stdio.h>#include <ctype.h>void fun(char s[]){ int i, j; for(i=j=0; s[i];i++) if(isalpha(s[i])) s[j++]=s[i]; s[j]= '';}int main(){ char str[20]= "How are you!"; fun(str); puts(str); return 0;}其中,函数isalpha(ch)的功能是判断ch是否为字母,若是,函数值为1,否则为0。
答案: 【 Howareyou】
30、填空题:
下列程序的运行结果:_______。#define MOD(x,y) x%yint main(){ int z,a=15,b=100; z=MOD(b,a); printf("%dn",++z); return 0;}
答案: 【 11】
31、填空题:
下面程序的运行结果: 。#include <stdio.h>int a=200;void f(){ static a=20; a++; printf("%d,", a);}int main(){ int i; for(i=1;i<=3; i++) { a++; printf("%d ", a); f(); } return 0;}
答案: 【 201 21,202 22,203 23,】
11 指针一
第11次单元测验
1、单选题:
如有下面的语句说明, 则表达式 *(p+3) 的值是 ( )。 int a[]={2,3,4,5,6,7}; int *p=a;
选项:
A: 3
B: 4
C: 5
D: 6
答案: 【 5】
2、单选题:
如有下面的语句说明, 则执行语句for(i=0;*s++;i++); 后变量i的值是 ( )。 int i; char *s="an46b";
选项:
A: 5
B: 6
C: 7
D: 8
答案: 【 5】
3、单选题:
如有下面的语句说明, 则正确的赋值语句是 ( )。char a[10], *p=a;
选项:
A: a[10]=”VC++”;
B: a=”VC++”;
C: p=”VC++”;
D: *p=”VC++”;
答案: 【 p=”VC++”;】
4、单选题:
如有下面的语句说明, 则下面赋值表达式非法的是 ( )。 int i=0, j=0, *p=NULL,*q=NULL;
选项:
A: p=&i
B: *q=&j
C: i=*p++ + *q
D: i=(int) p
答案: 【 *q=&j 】
5、单选题:
若有以下语句,则&a[2]-p的值是( )。int a[3],*p=a;
选项:
A: 2
B: 3
C: 1
D: 不确定
答案: 【 2】
6、单选题:
若有程序段 int b[4],*p,*q; p=&b[1]; q=&b[3]; 则q-p表示的意义是( )。
选项:
A: 表达式错误
B: p与q之间数据个数
C: p占据的字节数
D: p与q之间的字节数
答案: 【 p与q之间数据个数】
7、单选题:
若有定义: float *p,m; , 则以下正确的表达式是( )。
选项:
A: p=&m
B: p=m
C: *p=&m
D: *p=*m
答案: 【 p=&m 】
8、判断题:
地址运算符”&”可作用于变量和数组元素,分别获得变量和数组元素的地址。
选项:
A: 正确
B: 错误
答案: 【 正确】
9、判断题:
只可以通过求地址运算”&”获得地址值。
选项:
A: 正确
B: 错误
答案: 【 错误】
10、判断题:
空指针p是指向地址为0的存贮单元的指针。
选项:
A: 正确
B: 错误
答案: 【 错误】
11、判断题:
如有变量的定义char *p=”abc”; 语句 *p=’X’;是合法的。
选项:
A: 正确
B: 错误
答案: 【 错误】
12、判断题:
如有变量的定义char s[]=”abc”; 语句char *p=s; 是合法的。
选项:
A: 正确
B: 错误
答案: 【 正确】
13、判断题:
如有变量的定义int *r; double x; 则语句 r=&x; 是合法的。
选项:
A: 正确
B: 错误
答案: 【 错误】
14、填空题:
若有定义:char ch;使指针p指向变量ch的定义语句是_______。
答案: 【 char *p=&ch;】
15、填空题:
若已定义char *p;,使指针p指向变量ch的赋值语句是______ 。
答案: 【 p=&ch;】
16、填空题:
若有定义:char ch,*p=&ch;通过指针p给变量ch读入字符的scanf调用语句是______。
答案: 【 scanf("%c",p);】
17、填空题:
若有定义:char ch,*p=&ch;通过指针p给变量ch赋字符'a'的语句是______。
答案: 【 *p='a';】
18、填空题:
若有定义:char ch,*p=&ch;通过指针p用格式输出函数输出ch中字符的语句是______。
答案: 【 printf("%c",*p);】
19、填空题:
如有变量的定义int i, *p=&i; 则表达式 p==&i的值是 。
答案: 【 1】
20、填空题:
将字符数组s1中的字符串拷贝到字符数组s2中,并输出s2,请完善程序。#include <stdio.h>int main( ){char s1[80],s2[80],*p1,*p2; gets(s1); p1=s1; p2=s2; while(*p2++=*p1++); printf("s2=%s",________); return 0; }
答案: 【 s2】
21、填空题:
将输入的字符串按逆序输出,例如输入abcd,则按dcba顺序输出出来,请完善程序。#include <stdio.h>#include <string.h>int main( ){ char *str, s[20]; int n; str=s; scanf("%s",str); n=strlen(str); while(--n>=0) { str=&s[____]; printf("%c",*str); } return 0;}
答案: 【 n】
22、填空题:
删除字符串的所有前导空格,请完善程序。#include <stdio.h>void f1(char *s){char *t; t=________; while(*s==' ') s++; while(*t++=*s++); }int main( ) {char str[80]; gets(str); f1(str); puts(str); return 0;}
答案: 【 s】
12 指针二
第12次单元测验
1、单选题:
如定义 int (*p)[10];, 则标识符p是( )。
选项:
A: 指向含有10个整型元素的一维数组的指针
B: 指向整型变量的地址
C: 含有10个整型元素的数组名
D: 含有10个整型指针元素的数组名
答案: 【 指向含有10个整型元素的一维数组的指针】
2、单选题:
以下与库函数strcpy(char *p, char *q)功能不相等的程序段是()。
选项:
A: void strcpy1(char *p, char *q) { while ((*p++=*q++)!='');}
B: void strcpy2( char *p, char *q) { while((*p=*q)!=''){p++; q++;} }
C: void strcpy3(char *p, char *q) { while (*p++=*q++);}
D: void strcpy4( char *p, char *q){ while(*p) *p++=*q++; }
答案: 【 void strcpy4( char *p, char *q){ while(*p) *p++=*q++; }】
3、单选题:
以下正确的程序段是()。
选项:
A: char s[]="12345", t[]="6543d21";strcpy( s,t);
B: char s[20], *t="12345"; strcat(s,t);
C: char s[20]=" ", *t="12345"; strcat(s, t);
D: char *s="12345", *t="54321"; strcat (s,t);
答案: 【 char s[20]=" ", *t="12345"; strcat(s, t); 】
4、单选题:
下面程序段的运行结果是()。 #include <stdio.h>int main() { char s[]="example!", *t; t=s; while( *t!='p') { printf("%c", *t-32); t++; } return 0; }
选项:
A: EXAMPLE!
B: example!
C: EXAM
D: example!
答案: 【 EXAM】
5、单选题:
若有定义: char d[15],*p=d; , 则以下正确的赋值语句是( )。
选项:
A: d[0]="I love China!";
B: d="I love China!";
C: *p="I love China!";
D: p="I love China!";
答案: 【 p="I love China!";】
6、单选题:
如定义 int *p[10];, 则标识符p是( )。
选项:
A: 指向10个整型元素的一维数组的指针
B: 整型指针变量
C: 含有10个整型指针元素的数组名
D: 指向二维数组的指针变量
答案: 【 含有10个整型指针元素的数组名】
7、判断题:
指向函数的指针变量的值是一个函数的入口地址。 ( )
选项:
A: 正确
B: 错误
答案: 【 正确】
8、判断题:
作为函数形式参数时,int x[ ][5]与int (*x)[5]两种写法等价。
选项:
A: 正确
B: 错误
答案: 【 正确】
9、判断题:
二维M*N数组的名字是一个指向N元数组的指针常量。
选项:
A: 正确
B: 错误
答案: 【 正确】
10、判断题:
如果一个变量的值是一级指针变量的地址,则称这个变量为二级指针变量。
选项:
A: 正确
B: 错误
答案: 【 正确】
11、判断题:
可以利用指针实现函数返回多个值。
选项:
A: 正确
B: 错误
答案: 【 正确】
12、填空题:
如有变量的定义int j, *q=&j; 则 表达式 q==&j的值是 。
答案: 【 1】
13、填空题:
如有变量的定义double a[2], *p=a,*q=p+1; 则表达式 q-p 的值是 。
答案: 【 1】
14、填空题:
以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。void exchange(int *x, int *y){ int t; ;}
答案: 【 t=*x;*x=*y;*y=t##%_YZPRLFH_%##t=*y;*y=*x;*x=t##%_YZPRLFH_%##t=*x,*x=*y,*y=t##%_YZPRLFH_%##t=*y,*y=*x,*x=t】
15、填空题:
下面程序的运行结果为:________。 #include<stdio.h> int main( ) { static char a[ ]=”Program”, *ptr; for(ptr=a;ptr<a+7; ptr+=2) putchar(*ptr); return 0; }
答案: 【 Porm】
16、填空题:
下面程序的运行结果是_________。#include<stdio.h>int main() {static int x[ ]={1,2,3,}; int s,i,*p;s=1;p=x; for(i=0;i<3;i++)s*=*(p+i); printf(“%d”,s); return 0;}
答案: 【 6】
17、填空题:
如有定义char y[4]= "321",则表达式 *y+2的值是 。
答案: 【 5##%_YZPRLFH_%##'5'##%_YZPRLFH_%##53】
18、填空题:
如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 。
答案: 【 'T'##%_YZPRLFH_%##84##%_YZPRLFH_%##T】
19、填空题:
如有定义char y[4]="321",*py=&y[0],则表达式*(py+2) 的值是 。
答案: 【 1##%_YZPRLFH_%##'1'##%_YZPRLFH_%##49】
20、填空题:
如有定义char z[2][4]={"MAT", "LAB"},*pz=&z[1][0];则表达式*pz+1 的值是 。
答案: 【 M##%_YZPRLFH_%##'M'##%_YZPRLFH_%##77】
13 结构与共用体
第13次单元测验
1、单选题:
下面结构体的定义语句中,错误的是()。
选项:
A: struct ord {int x; int y; int z;}struct ord a;
B: struct ord {int x; int y; int z;}; struct ord a;
C: struct ord {int x; int y; int z;}a;
D: struct {int x; int y; int z;}a;
答案: 【 struct ord {int x; int y; int z;}struct ord a; 】
2、单选题:
有以下的结构体变量定义语句:struct student { int num; charname[9];} stu;则下列叙述中错误的是( )。
选项:
A: 结构体类型名为stu
B: num是结构体成员名
C: struct是C的关键字
D: 结构体名为student
答案: 【 结构体类型名为stu】
3、单选题:
设有定义:struct complex{ int real, unreal;} data1={1,8},data2;则以下赋值语句中错误的是()。
选项:
A: data2=(2,6);
B: data2.real=data1.unreal;
C: data2=data1;
D: data2.real=data1.real;
答案: 【 data2=(2,6);】
4、单选题:
设有定义:struct {char mark[12]; int num1; double num2;} t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。
选项:
A: t2.mark=t1.mark;
B: t2.num2=t1.num2;
C: t2.num1=t1.num1;
D: t1=t2;
答案: 【 t2.mark=t1.mark;】
5、单选题:
有以下定义语句:struct student {int num; char name[9];};则不能正确定义结构体数组并赋初始值的是( )。
选项:
A: struct student stu[2]={1, "zhangsan",2,"li si"};
B: struct student stu[2]={{1,"zhangsan"},{2,"li si"}};
C: struct student stu[]={{1,"zhangsan"},{2,"li si"}};
D: struct stu[]={{1,"zhangsan"},{2,"li si"}};
答案: 【 struct stu[]={{1,"zhangsan"},{2,"li si"}};】
6、单选题:
有以下程序:#include<stdio.h>struct S{ int a,b;}data[2]={10,100,20,200};int main(){struct S p=data[1]; printf("%dn",++(p.a));return 0;}程序运行后的输出结果是()。
选项:
A: 11
B: 20
C: 10
D: 21
答案: 【 21】
7、单选题:
以下程序的输出结果是( )。#include <stdio.h>int main(){ struct cmplx { int x; int y; }cnum[2]={1,3,2,7}; printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x); return 0;}
选项:
A: 3
B: 1
C: 6
D: 0
答案: 【 6】
8、单选题:
有以下程序: #include <stdio.h> struct ord { int x,y; } dt[2]={1,2,3,4}; int main() { struct ord *p=dt; printf("%d,",++p->x); printf("%dn",++p->y);