程序设计是信息类和其他理工科一门重要的基础性课程。《C语言程序设计》面向低年级学生,内容包括:C语言概述、数据类型、运算符、表达式、结构化程序设计的三种基本结构、数组、函数、指针、结构体等。通过课程内容的讲解和编程训练,使学生具备用C语言开发应用软件的基本能力,为今后的软件开发工作奠定坚实的基础
学堂在线云南大学C语言程序设计(2022春)自测题答案
第1章 绪论
- C语言保留了指针的用法
- C语言能够直接访问寄存器,所以它是一种低级语言。
- 以下不是C语言特点的是:() A低级的高级程序设计语言 B允许直接访问物理地址,对硬件进行操作 CC语言运…
- 最早的C语言标准是( )。 AANSI C BK&R C CC99 DC11
- C语言中被调用的函数只能是库函数
- 函数是C程序的主要组成部分
- C语言允许两种注释:单行注释和块式注释
- C程序总是从main 函数的第一条语句开始执行的。
- 以下叙述错误的是( )。 A一个C程序可以包含多个不同名的函数 B一个C程序只能有一个主函数 CC程序在…
- 一条指令由操作码和地址码构成
- 对C程序修改后,不需要重新编译程序。
- 代码“ADD AL,10”使用的编程语言是( )。 A高级语言 BC语言 C汇编语言 D机器语言…
- 结构化程序设计中的基本结构不包括( ) A顺序结构 B选择结构 C递归结构 D循环结构…
- C 语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。…
- C语言编写的源程序,其文件名后缀是 .C 。
- C语言的编辑器是唯一的。
- 不能处理C语言源程序的基础开发环境是( )。 APowerBiulder BTurbo C 3.0 CCodeblocks DMicrosoft V…
- 以下叙述中正确的是( ) AC程序中注释部分可以出现在程序中任意合适的地方 B花括号“{”和“}”只能…
- 下列叙述中正确的是( ) A在C程序中main()函数的位置是固定的 B每个C程序文件中都必须要有一个mai…
- 计算机能直接执行的程序是( ) A源程序 B目标程序 C汇编程序 D可执行程序…
- 以下叙述中正确的是( ) AC程序中的注释只能出现在程序的开始位置和语句的后面 BC程序书写格式严…
第2章 算法
- 算法最终必须由计算机程序实现
- 算法的确定性,是指一个算法应包括有限的操作步骤,能在执行有穷的操作步骤之后结束…
- 计算机算法指的是( )。 A计算方法 B排序方法 C解决问题的步骤序列 D调度方法…
- 计算机算法必须具备输入、输出和( )等5个特征。 A可行性、确定性和有限性 B稳定性、安全性和确定性…
- 一个算法只能用一种程序设计语言来实现
- 程序是算法用某种程序设计语言的具体实现
- 计算思维的本质是抽象和( )。 A递归 B循环 C分支 D自动化
- 下棋体现了哪种算法( )。 A贪心算法 B人工智能算法 C数据挖掘算法 D回溯算法…
- 下面关于算法说法错误的是( )。 A算法不能由计算机程序实现 B解决某问题的算法可以是无穷的 C算法…
- 下面关于结构化程序说法错误的是( )。 A程序是算法用某种程序设计语言的具体实现 B程序可以不满足…
- 下列关于人类和计算机解决实际问题说法错误的是( )。 A人类计算速度慢而计算机快 B人类大脑存贮的…
- 流程图中表示判断框的是( )。 A矩形框 B菱形框 C平行四边形框 D椭圆形框…
- 由“上车—掏钱—投币”所描述的问题是( ) 。 A无人售票车投币过程 B乘公交车过程 C上车过程 D下车…
第3章 用C语言编写程序
- C语言的每个语句最后必须有一个分号。
- C语言书写格式不允许一行内写几个语句。
- 以下选项中合法的标识符是( ) A1_1 B1—1 C_11 D1_ _
- 结构化程序由三种基本结构组成,三种基本结构组成的算法( ) A可以完成任何复杂的任务 B只能完成部…
- C语言整型常量只有十进制一种表示形式。
- 字符常量是用双引号括起来的一个字符。
- 若函数中有定义语句:int k; 则( ) A系统将自动给k赋初值0 B这时k中值不确定 C系统将自动给k赋初值…
- 以下选项中可作为 C 语言合法整数的是( )。 A10110B Bs0386 C0Xffa Dx2a2
- 算术运算优先于关系运算
- 算术运算符的结合方向为“自右向左”。
- 若变量均已正确定义并赋值,以下合法的C语言赋值语句是( ) Ax=y==5; Bx=n%2.5; Cx+n=i; Dx=5=4+1;…
- 若有定义语句:int x=10; ,则表达式x-=x+x的值为( ) A-20 B-10 C0 D10
- 条件运算符具有右结合性
- C语言不允许将实型数据赋给整型变量。
- 设有定义:int x=2; ,以下表达式中,值不为6的是( ) Ax*=x+1 Bx++,2*x Cx*=(1+x) D2*x,x+=2…
- 己定义c为字符型变量 , 则下列语句中正确的是( )。 Ac='97'; Bc="97"; Cc=97; Dc="a";…
- putchar函数的作用是向终端输出一个字符串。
- getchar函数没有参数。
- printf一次可以输出多个数据。
- 有以下程序 #include<stdio.h> main() { int a=1,b=0; printf("%d,",b=a+b); printf(…
- printf函数的%d,用来输出带符号十进制整数。
- printf函数的%f,用来以指数形式输出实数。
- 以下程序运行后的输出结果是____。 int main(void) { char m; m='B'+32; printf("%c…
- 以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97) Aprintf("%cn",'a'-32…
- scanf函数的%s,用来输入一个字符。
- scanf函数的%f,用来输入小数形式的单精度实型数
- 若有定义:int a,b;,通过语句scanf("%d;%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是( )。 A3 5 …
- 若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf("____",x/y);补充完整,使其输出…
- 空类型不是C语言的数据类型。
- C语言中对所用的所有变量都必须指定其数据类型。
- 有以下程序 main() { char c1,c2; c1='A'+'8'-'4'; c2='A'+'…
- 有以下程序 #include main{} { int s,t,A=10; double B=6; s=sizeof(A); t=sizeof(B); printf(…
- 有以下程序 #include <stdio.h> int main(void) { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=…
- 若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。 Ax=y==5; Bx=n%2.5; Cx+n=i; Dx=5=4+1…
- 有以下程序,其中K的初始值为八进制数。 #include int main(void) { int k=011; print…
- 设变量均已正确定义,若要通过 scanf("%d%c%d%c",&a1,&c1,&a2,&c2); 语句为变量a1和a2赋数值1…
- 已定义 ch 为字符型变量, 以下赋值语句中错误的是( )。 Ach=‘’; Bch=62+3; Cch=NULL; Dch=‘…
- 有以下程序 #include <stdio.h> int main(void) { char a,b,c,d; scanf("%c%c",&a,&b); …
- 下列符号中,不属于转义字符的是( )。 A BxAA Ct D
第4章 选择结构
- if语句的条件表达式必须是关系表达式。
- if语句中又包含一个或多个if语句称if语句的嵌套。
- 若有int a=2,b=4,x=1,y=2;则执行表达式 (x=a>b) || (y=b>a)后,y的值为____
- 若有int a=2,b=4,x=1,y=2则执行表达式(x=a>b) && (y=b>a)后,x的值为____
- switch语句是多分支选择语句。
- switch语句中每一个case的常量表达式的值必须互不相同。
- 已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是( …
- 以下选项中与 if(a==1)a=b; else a++; 语句功能不同的switch语句是( )。 Aswitch(a) { ca…
- if语句的条件表达式必须是逻辑表达式。
- switch语句中多个case可以共用一组执行语句。
- 执行下列程序,输入为3的输出结果是( ) #include ”stdio.h” main() { int k; scanf("…
- 若有如下程序段 , 其中 s、a、b、c均已定义为整型变量 , 且 a 、c 均已赋值 (c 大于 0 ) s=a; fo…
- 设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是( )。 Aif(a>b) c=a,a=b,b=c; B…
- 以下选项中,当x为大于1的奇数时,值为0的表达式( )。 Ax%2==1 Bx/2 Cx%2!=0 Dx%2==0…
- 以下程序运行后的输出结果是 ____ 。 int main(void) { int p=30; printf("%d n"…
- 以下程序运行后的输出结果是 ____ 。 #include<stdio.h> int main(void) { int x=20; …
第5章 循环结构
- do- while 语句先执行循环体再判断条件,循环体至少执行一次
- while 语句和do- while 语句功能完全相同
- 若变量已正确定义,有以下程序段 i=0; do printf("%d, ",i); while(i++); printf(…
- 有以下程序 main () {int a=1,b=2; while (a<6) {b+=a; a+=2; b%=10;} print…
- for循环语句中的3个表达式都可能省略。
- 循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现。…
- 有以下程序 main() { int a=1, b=2; for( ;a<8;a++) {b+=a; a+=2;} pri…
- 设有条件表达式: (EXP)?i++:j--, 则以下表达式中,与(EXP)完全等价的是( ) A(EXP==0) B(EXP!=0) C(EX…
- 一个循环体内允许又包含另一个完整的循环结构。
- break语句不能用于循环语句和switch语句之外的任何其他语句中。
- 有以下程序: int main(void) { int a=1,b; for(b=1;b<=10;b++) { if(…
- break语句的作用是终止break所在的整个循环的执行。
- for循环语句中的3个表达式,只能省略第一个和第三个表达式。
- 若有以下程序: int main(void) { int y=10; while (y--); printf(“y=%dn”,…
- while和do while语句功能相同
- for循环语句中的3个表达式,省略第二个表达式时表示循环条件为真
- 当执行以下程序段时 ( )。 x=-1; do { x=x*x;} while (!x); A循环体将执行一次 B循环体将执行两…
- 有以下程序 main() {int s=0,a=1,n; scanf("%d",&n); do {s+=1; a…
- 以下不构成无限循环的语句或者语句组是( ) An=0; do{++n;} while(n<=0); Bn=0; while(1) {n++;} Cn…
- 在以下给出的表达式中,与while(E)中的“(E)”不等价的表达式是( ) A(!E=0) B(E>0 || E<0) C(E==0) D…
- 以下程序的输出结果是____ 。 #include int main (void) { int n=12345,d; while(n!=0) { d=n%10…
- 有以下程序,若运行时从键盘输入18,11<回车>,则程序的输出结果是____ 。 #include int main (void) …
第6章 利用数组处理批量数据
- C数组中的每一个元素都必须属于同一个数据类型。
- C数组不必先定义后使用。
- 以下对一维整型数组a的正确说明是( )。 Aint a(10); Bint n=10,a[n]; Cint n; scanf(“%…
- 以下能对一维数组a进行正确初始化的语句是( )。 Aint a[10]=(0,0,0,0,0); Bint a[10]={}; Cint a[]…
- 定义数组时的下标可以是整型常量或整型表达式。
- 在定义一维数组时可以只给一部分元素赋初值。
- 若有定义语句: int m[]={5,4,3,2,1},i=4; 则下面对m数组元素的引用中错误的是( ) Am[--i] …
- 以下关于数组的描述正确的是( ) A数组的大小是固定的,但可以有不同的类型的数组元素 B数组的大小…
- 对二维数组初始化,可以分行给数组赋初值。
- 不允许对二维数组的部分元素赋初值。
- 以下不能正确定义二维数组的选项是( ) Aint a[2][2]={{1},{2}}; Bint a[][2]={1,2,3,4}; Cint a[…
- 若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是( ) Aa[2][!1] Ba[2][3] Ca[0][3] Da[1>…
- 在定义二维数组并初始化时可以省略列的长度。
- 二维数组的元素在内存中是按行存放的。
- 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( ) Aa[0][4] Ba[1][3] Ca[0…
- 有以下程序 main() { int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;…
- 字符数组中的每一个元素只存放一个字符。
- 若一个字符数组中包含一个以上’’,则遇到第一个’’输出就结束。…
- 有数组定义: char array [ ]="China"; 则数组 array所占的空间为( ) A4个字节 B5个字节 C6个字节…
- 有定义和语句: char s[10];s="abcd";printf("%sn",s); 则结果是(以下└┘代表空格) ( ) A输出a…
- 可以用下面语句定义数组。char c[10]; c="abc";
- 对字符串str1和str2比较大小,必须用字符串比较函数strcmp(str1,str2),不能用str1<=str2。…
- 有以下程序 main() { char A[10]="abcd"; printf("%d,%dn",strlen(A),sizeof(A)); …
- 以下关于字符串的叙述中正确的是( ) AC语言中有字符串类型的常量和变量 B两个字符串中的字符个数…
- 二维数组可以存储多个字符串
- 若字符串str1<字符串str2,则 strcmp(str1,str2)>0
- 对C语言字符数组的描述中错误的是 ( ) A字符数组可以存放字符串 B字符数组中的字符串可以整体输…
- 有以下程序 main() { char s[]={"012xy"}; int i,n=0; for(i=0;s[i]!=0;i++) …
- 若有说明int a[][3]={1,2,3,4,5,6};则a数组第一维的大小是( )。 A2 B3 C4 D无确定值…
- 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。 for(k…
- 下面是对s的初始化,其中不正确的是( )。 Achar s[5]={"abc"}; Bchar s[5]={'a','b','c&…
- 下面程序段的运行结果是( )。 char a[7]={"abcdef"}; char b[4]={"ABC"}; strcpy(a,b); printf(&qu…
- 若有定义: int a[3][4]={{1,2},{0},{4,5,8,12}}; 则初始化后,a[1][2],a[2][2]得到的初值分别是:__…
第7章 用函数实现模块化程序设计
- 一个C语言源程序可由一个主函数和若干个其他函数构成。
- 一个C语言程序由一个或多个源程序文件组成。
- C语言是由( )构成。 A主程序和子程序 B主函数和若干子函数 C一个主函数和一个其他函数 D主函数和子…
- 有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是( …
- C函数间可以互相调用,也可以调用main函数。
- 在调用有参函数时,主调函数和被调用函数之间有数据传递关系。
- 以下所列的各函数首部中,正确的是( ) Avoid play(var a:integer,var b:integer) Bvoid play(int a…
- 一个函数返回值的类型是由( )决定的。 Areturn语句中表达式的类型 B在调用函数时临时指定 C定义函…
- 函数不能嵌套定义。
- 被调函数只能定义在main()函数之前。
- 以下函数值的类型是( ) fun (float x) { float y; y= 3*x-4; return y; } Aint B不确…
- 有以下程序 int f(int x,int y) { return ((y-x)*x); } main() { int a=3,b=4,c=5,d; …
- 在调用一个函数的过程中又出现直接或间接地调用该函数本身称为函数的重复调用。…
- 有的问题只能通过函数的递归调用才能解决
- 有以下程序 int fun(int a,int b) { if(b==0) return a; else return(fun(--a,-…
- 数组元素作函数实参,传递的是数组的首地址
- 数组名也可以作函数的实参和形参。
- 有以下程序 #define N 4 void fun(int a[][N], int b[]) { int i; for…
- 有以下程序 void fun( int a, int b) { int t; t=a; a=b; b=t; }…
- 在C语言的函数中,数组名不能作形参
- 函数调用可以作为一个函数的实参
- 阅读程序: f(int b[], int n) { int i, r; r=1; for(i=0; i<=n; i++) r=r*b[i];…
- 在一个函数内部或复合语句内部定义的变量是内部变量,称为局部变量。…
- 函数的形参,是全局变量。
- 如果一个函数只能被本文件中其他函数所调用,称为内部函数。
- 以下程序的输出结果是( ) int a, b; void fun() { a=100; b=200; } …
- 从变量的作用域角度来分,可以分为静态变量和动态变量。
- 全局变量全部存放在静态存储区中
- 在C语言中,形参的缺省存储类别是( ) Aauto Bregister Cstatic Dextern
- 以下程序的输出的结果是( ) int x=3; main() { int i; for (i=1;i<x;i++) …
- 对全局变量用static声明,则该变量的作用域只限于本文件模块
- 全局变量都是存放在动态存储区中的
- 在一个源程序文件中定义的全局变量的有效范围是( ) A本源程序文件的全部范围 B一个C程序的所有源…
- 下列函数调用中,不正确的是( )。 Amax(a,b); Bmax(3,a+b); Cmax(3,6); Dmax(3,6);…
- 执行下列程序后,变量a的值为( )。 fuc1(float x) { return x+1.5; } int main(void) { float a; a=f…
- 有以下函数定义: void fun(int n,double x) {…} 若以下选项中的变量都已经正确定义且赋值,则对函…
- 在C语句中,形参的默认存储类型是( )。 Aauto Bregister Cstatic Dextern
- 如果一个函数位于C程序文件的上部,在该函数体内的说明语句后的复合语句中定义了一个变量,则该变量( …
第8章 指针
- 地址形象化地称为“指针”
- 存放变量地址的变量是指针变量。
- 若有int a,b; int *pointer_1,*pointer_2; float *pointer_3; 下面赋值正确的是( ) Apointer_3=2000…
- 有以下程序 main() { int m=1,n=2,*p=&m,*q=&n,*r; r=p; p=q; q=r; printf("%d,%d,%d…
- 函数的参数可以是整型、实型和字符型,但不允许是指针类型。
- 指针变量作函数参数可以传递地址
- 有以下程序 void fun(int *a,int *b) { int *c; c=a; a=b; b=c; } main()…
- 引用数组元素可以用下标法(如a[3]),也可以用指针法。
- 指针变量可以指向变量,但不可以指向数组元素。
- 如果p的初值为&a[0],则p+i和a+i就是数组元素a[i]的地址
- 若有以下定义 int x[10],*pt=x; 则对x数组元素的正确引用是( ) A*&x[10] B*(x+3) C*(pt+10) Dpt+…
- 数组名作函数参数时,传递的是数组首元素的值
- 数组名代表该数组首元素的地址
- 下列函数的功能是( ) fun(char *a,char *b) { while((*b=*a)!='') { a+…
- 若有int a[3][4]; 则 a+1代表a[0][0]的地址(列地址)
- 若有int a[3][4]; 则 a[0]+3代表a[0][3]的地址 ;
- 若有定义int (*pt)[3];则下列说法正确的是( ) A定义了基类型为int的三个指针变量 B定义了基类型…
- int fun(int (*s)[4],int n, int k) { int m,i; m=s[0][k]; for(i=1;i…
- 可以用“%c”输出一个字符串。
- 指针变量也可以指向一个字符串。
- int x[5]; 可以用数组名输出一个数值型数组的全部元素,如printf("%s",x);…
- 有以下程序 main() { char *s={"ABC"}; do {printf("%d",*s%10); s++; …
- 把一个字符串从一个函数“传递”到另一个函数,只能用字符数组名作实参和形参…
- 字符指针变量中存放的是地址(字符串第1个字符的地址)
- 下列语句组中正确的是( ) Achar *s;s="Olympic"; Bchar s[7];s="Olympic"; Cchar *s;s={"Ol…
- 用指针变量也可以指向一个函数。
- 如有 int (*p)(int,int); int max(int,int); 则p=max(a,b); 正确
- 设有定义语句int (*f)(int);,则以下叙述正确的是( ) Af是基类型为int的指针变量 Bf是指向函数的…
- char (*subcut)(char *,int,int); 定义返回值为指针的函数。
- 一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,…
- 以下程序中函数 scmp 的功能是返回形参指针 s1 和 s2 所指字符串中较小字符串的首地址。 char *…
- int *p[4]; 定义一维指针数组
- 指针不可以指向指针变量。
- 指针数组的元素也可以不指向字符串,而指向整型数据或实型数据
- 若有定义:int *p[3];, 则以下叙述中正确的是( ) A定义了一个基类型为 int 的指针变量 p, 该变量具…
- malloc作用是在内存的动态存储区中分配一个长度为size的连续空间
- calloc,free等函数的声明在stdio.h头文件中
- 若指针p已正确定义(在VC++上运行),要使p指向两个连续的整型动态存储单元,不正确的语句是( ) Ap=2*(…
- 若有语句int a=4, *pt=&a;下面均代表地址的一组选项是( )。 Aa , pt ,*&a B&*a, &a, *pt C*&pt, *p…
- 有以下程序 #include int main(void) { int m=1,n=2,*p=&m,*q=&n,*r; r=p; p=q; q=r; printf("%…
- 若有以下定义int a[10], *p=a;,则p+5表示( )。 A元素a[5]的地址 B元素a[5]的值 C元素a[6]的地址 D元…
- 程序的运行结下面果是( )。 #include #include int main(void) { char *s1="AbDeG"; char *s2="A…
- 已定义以下函数fun(int *p) { return *p; } 该函数的返回值是( )。 A不确定的值 Bp中存放的值 Cp所…
第9章 结构体
- 相同结构体类型的结构体变量可以相互赋值
- 结构体变量的成员不可以是结构体变量
- 若a是结构体变量,可以用scanf(“%ld,%s,%c,%sn”,&a); 整体输入一个结构体变量的值。…
- 有以下定义和语句 struct workers { int num; char name[20]; char c; st…
- 对结构体数组不可以赋初值,即不可以对数组初始化。
- 结构体数组的每个元素都是一个结构体类型的数据。
- 根据下面的定义,能打出字母M的语句是 ( ). struct person { char name[9]; int age;…
- 指针变量不可以用来指向结构体数组中的元素。
- 指针变量的基类型必须与结构体变量的类型相同。
- 设有如下定义: struct sk { int a; float b; } data,*p; 若有p=&data; 则对data中的a域的正确引…
- 若系统为int类型分配2个字节,char类型分配1个字节,double类型分配8个字节,则如有以下说明语句,则变量…
- 已知学生记录描述为: struct student { int no; char name[20]; char sex; struct { int year; in…
- 设有定义: struct complex { int real,unreal;} data1={1,8},data2; 则以下赋值语句中错误的是( )…
- 以下程序的输出结果是____ # include void main() { char *s1,*s2,m; s1=s2=(char*)malloc(sizeo…
- 若有以下语句 typedef struct S {int g; char h; }T; 以下叙述中正确的是( ) A可用S定义结构体变量…