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%y‍‍int 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

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注