当前位置:文档之家› C语言重修复习题

C语言重修复习题

《C语言程序设计》重修复习题一、单项选择题1.判断char型变量c1是否为大写字母的正确表达式为( B )。

A) (c1>='A' || c1<='Z') B) (c1>='A' && c1<='Z')C) ('a'>=c1 || 'z'<=c1) D) (c1>='a' && c1<='z')2.一个C程序的执行是从( A )A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后-个函数结束C)本程序的main函数开始,到本程序文件的最后-个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束3.C语言源程序的基本单位是(B )。

A 过程B 函数C 子程序D 标识符4.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为( A )A)char<int <1ong int<=float<doubleB)char=int<1ong int<=float<doubleC)char< int <1ong int=float=doubleD)char=int =1ong int<=float<double5.在C语言中,要求运算数必须是整型的运算符是( D ):A) / B) * C) + D)%6.若x,i,j和k都是int型变量,则执行下面表达式后x的值为( C )x=(i=4,j=16,k=32)A)4 B)16 C)32 D)527.假设变量a,b,c均为整型,则表达式(a=2,b=5,++a+b++)的值是( B ):A)7 B)8 C)6 D)28.下列程序的输出结果是()。

main( ){ int a=7,b=5;printf("%d\n",b=b/a);}A 5B 1C 0 D随机值9.下列程序的输出结果是()。

main( ){ int a=7,b=5;printf("%d\n",b=b%a);}A 5B 1C 0 D随机值10.若C语言中一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为:( C )A)0~255 B)0~32767 C)0~65535 D)0~214748364711.printf函数中用到格式符%8s ,其中数字8表示输出的字符串占用5列。

如果字符串长度小于8,则按方式( C )输出A)左对齐输出该字串,右边补空格B)居中齐输出该字串,两边补空格C)右对齐输出该字串,左边补空格D)输出错误信息12.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则( B )A)从左起输出该字串,右补空格B)原样输出字符串C)右对齐输出该字串,左补空格D)输出错误信息13.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是( C )A)int a=b=c= 5; B) int a,b, c= 5;C)int a= 5,b=5,c=5; D) a= b= c=5;14.已知学生记录描述为struct student{ int no;char name[20];char sex;struct{ int year;int month;int day;} birth;};struct student s;要求变量s的birth中的三个成员的值分别为2015、12、21,下列正确的赋值方式是( D )A) year= 2015;B) birth.year= 2015;month=12;birth.month=12;day=21;birth.day= 21;C) s.year= 2015; D) s.birth.year=2015;s.month=12;s.birth.month=12;s.day=21;s.birth.day=21;15.当说明一个结构体变量时系统分配给它的内存是( A )A)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量16.以下对结构体类型变量std1的定义中不正确的是( D )。

A)#dedine STUDENT struct student B) structSTUDENT { int num;{ int num; float age;float age; }student;}std1; struct student std1; C) struct D) struct{ int num;{ int num;float age;float age;}std1; }student;17.设有以下说明定义struct stu{ int a;float b;}stutype;则下面的叙述不正确的是( C )A)struct是定义结构体类型的关键字B)stutype是用户定义的结构体变量名C)stutype是用户定义的结构体类型名D)a和b都是结构体的成员名18.若有以下说明和语句:struct student{int age;int num;}std,* p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是( D ) A)std.age B)p->ageC)(*p).age D)*p.age19.当说明一个共用体变量时系统分配给它的内存是( C )A)各成员所需内存量的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量20.以下对C语言中共用体类型数据的叙述正确的是( C )A)可以对共有体变量名直接赋值B)一个共用体变量中可以同时存放其所有成员的值C)一个共有体变量中不能同时存放其所有成员的值D)共用体类型定义中不能出现结构体类型的成员21.在16位机上使用C语言,若有如下定义:union data{int i;char ch;double f;}b;则共用体变量b占用内存的字节数是( C )A)1 B )2 C)8 D)1122.使用typedef定义一个新的类型标识符的正确步骤是( A )A)2,1,4,3 B)1,3,2,4 C)2,3,4,1 D)4,2,3,11.把变量名换成新类型名。

2.按定义变量的方法写出定义体。

3.用新类型名定义变量。

4.在最前面加上关键字typedef。

23.下面对typedef的叙述中不正确的是( B )A)用typedef可以定义各种类型名,但不能用来定义变量B)用typedef可以增加新类型C)用typedef只是将已存在的类型用一个新的标识符来代表D)使用tvpedef有利于程序的通用和移植24.在16位系统中,以下程序的运行结果是( A )typedef union {1ong a[2];int b[4];char c[8];}TY ;TY our;main(){printf("%d\n",sizeof(our));}A) 8 B)16 C)24 D)3225.在16位系统中,以下程序的运行结果是( D )tvpedef struct {1ong a[2];int b[4];char c[8];}TY ;TY our;main(){printf("%d\n",sizeof(our));}A) 8 B)16 C)24 D)3226.请阅读以下程序:main(){int a=5,b=0,c=0;if(a=b+c) printf("111\n ");e1se if(b=c) printf("222\n");else printf("333\n");}以上程序( C ) :A)输出111 B)输出222C)输出333 D)有语法错不能通过编译27.设有以下定义,值为5的枚举常量是()。

enum week{sun,mon=4,tue,wed,thu,fri,sat} w;A tueB satC friD thu28.为了避免在嵌套的条件语句If-else中产生二义性,C语言规定else子句总是与( B )配对。

A)缩排位置相同的if B)其之前最近的未配对的ifC) 之后最近的if D)同一行上的if29.对for(表达式1;;表达式3)可理解为( B ):A) for(表达式1; 0;表达式3)B) for(表达式1;1;表达式3)C) for(表达式1;表达式1;表达式3)D) for(表达式1;表达式3;表达式3)30.以下正确的描述是( B )。

A)continue语句的作用是结束整个循环的执行B)可在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)使用break语句能从多层循环的内循环体中跳出到最外层循环之外31.若有说明:int a[10];则以下对a数组元素的表示中正确的是( D )A)a[10] B) a5 C) a(5) D) a[0]32.以下能正确定义二维数组a的是( C )A) int a[3,4]; B)float a(3,4);C) double a[3][4]; D)float a(3)(4)33.以下不能对二维数组a进行正确初始化的语句是( C )A) int a[2][3]={0};B) int a[][3」={{1,2},{0}};C) int a[2][4]={{1,2},{3,4},{5,6}};D) int a[][3」={1,2,3,4,5,6};34.对以下说明语句的说明正确是( B )int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确35.下面是定义字符数组s并对其初始化,其中不正确的是( D )A) char s[5」={"abc"} B)char s[5]={'a','b','c'};C) char s[]="abcd" D)char s[5]="abcdef";36.对两个数组a和b进行如下初始化char a[]="ABCDEF";char b[]={’A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是( C )A) a与b数组完全相同B) a与b长度相同C) a数组比b数组元素多D)a和b中都存放字符串"ABCDEF"37.以下判断字符串s1是否大于字符串s2正确的是( D )A) if (sl>s2) B) if (strcmp(s1,s2))C) if (strcmp(s2,sl)>0) D) if (strcmp(s1,s2)>0)38.下述对C语言字符数组的描述中错误的是( C )A)字符数组中可以存放字符串B)字符数组中的内容不一定能当做字符串使用C)可以用赋值的方式将一个字符串赋给一个已定义了的字符数组D)不可以用关系运算符对字符数组中的字符串直接进行比较39.在C语言函数中,以下说法正确的是( A )A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是不占用存储单元40.C语言中定义函数时,允许省略返回值类型,此时该函数值隐含的类型是( B )A)float型B)int型c)char型D)void型41.在C语言程序中,以下正确的描述是( B )A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套42.若用数组名作为函数调用的实参,传递给形参的是( A )A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数43.以下不正确的说法为( D )A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在主调函数中定义的变量在被调函数范围内有效44.C语言规定,函数返回值的类型是由( D )A) return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定45.C语言的编译系统对预编译命令的执行是( D )A)在程序运行时进行的B)在程序连接时进行的C)和C程序中的其它语句同时进行编译的D)在对源程序中其它成份正式编译之前进行的46.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( A )A)自动(auto) B)静态(static)C)外部(extern) D)寄存器(register)47.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( D )A)extern B)registerC)auto D)static48.若已定义int a=5;下面对(1),(2)两个语句的正确解释是( D )(1)int *p=&a; (2)*p=a;A)语句(1)和(2)中的*P含义相同,都表示给指针变量p赋值B)(1)和(2)语句的执行结果都是把变量a的地址值赋给指针变量pC)(1)是在对p进行说明的同时进行初始化,使p指向a,(2)是将变量a的值赋给指针变量pD)(1)是在对p进行说明的同时进行初始化,使p指向a,(2)是将变量a的值赋给指针变量p 指向的变量49.若已定义char s[10」;则以下表示元素s[1]的地址的表达式中错误的是( B )A)s+1 B)s++ C)&s[0]+1 D)&s[1]50.下面选项中正确的赋值语句是(设char a[5],*p=a;)(A )。

相关主题