//1.设变量已正确定义并赋值,以下正确的表达式是_____。
A.x=y*5=x+z
B.int(15.8%5)
C.x=25%5.0
D.x=y+z+5,++y D
//2.下列程序段中,非死循环的是( )。
A.int i=100;
while(1)
{ i=i%100+1;
if(i>=100)
break;
}
B.int k=0;
do{
++k; (++k是先加一再使用此时的值,k++是先使用当前值再加一)
}while(k>=0);
C.int s=10;
while(s)
s++; (没有判断语句)
for( ; ; ) (可以省略语句1,可以省略语句2,也可以省略语句3,但不能语句1,2,3一起省略,否则将会陷入死循环) A
//5. 已知字符'A'的ASCII码是65,分别对应八进制数101和十六进制数41,以下( )不能正确表示字符'A'。
A.'A'
B.'\101'
C.'\x41'
D.'\0x41' D( \ 后边不能跟十进制 )
6.若表达式sizeof(int)的值为2,则int类型数据可以表示的最大整数为()
A.
216-1
B.
215-1
C.
232-1
D.
231-1 B()
7.若有定义:int a=3,b=2;,则下面表达式中,值为真的选项是( )
A.!b||!a
B.!(a/b)
C.!(b/a)
D.!a&&!b C()
8.在C语言中,要求参加运算的数必须是整数的运算符是( )。
A./
B.*
C.%
D.= C
9.以下选项中,不合法的C语言常量是( )。
A..123
B.345L
C.2.5e-3
D.'no' D
10.
if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( )。
A.必须是逻辑值
B.必须是整数值
C可以是任意合法的数值
D.必须是正数 C
11.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是_______。
A.if((a>b)&&(b>c)) k=l; else k=0;
B.if((a>b)‖(b>c)) k=l; else k=0;
C.if(a<=b) k=0; else if(b<=c) k=1;
D.if(a>b) k=1; else if(b>c) k=l; else k=0; A(条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。)
12.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )
A.A%2= =1
B.!(A%2= =0)
C.!(A%2)
D.A%2 C()
13.switch 语句的case 后面______。
A.只能是常量
B.只能是常量表达式
C.可以是常量或变量
D.可以是任意表达式 B
14.C语言中while和do-while循环的主要区别是()。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句 A(while先判断后执行,do-while先执行后判断)
15.以下程序中,while循环的循环次数是______。
void main( )
{ int i=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
……
} 死循环,不能确定次数(continue语句可以跳过循环体中continue后面的语句,继续下一次循环)
16下列叙述中正确的是()。
A.break 语句只能用于 switch 语句体中 (break语句用于循环语句中)
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环 (continue语句可以跳过循环体中continue后面的语句,继续下一次循环)
C.break 语句只能用在循环体内和 switch 语句体内
D.在循环体内使用 break语句和 continue 语句的作用相同 C
17.以下描述正确的是
A.while,do_while,for循环中的循环体语句都至少被执行一次 (while最少不执行)
B.do_while语句中while(表达式)后面的分号可以省略
C.while循环体中,一定要有能使while后面表达式变为假的操作
D.do_while循环中,根据情况可以省略while C
18.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算每位学生的平均分并输出,但运行后结果不正确,调试中发现有一条语句出现的位置不正确。这条语句是 @A
int main(void)
{ int n,k;
float score, sum, ave;
sum=0.0;
for(n=1; n<=10; n++)
{ for(k=1; k<=4; k++)
{ scanf("%f",&score);
sum+=score;
}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}
return 0;
}
A.sum=0.0;
B.sum+=score;
C.ave=sun/4.0;
D.printf("NO%d:%f\n",n,ave); A
19.(27.37.)struct teacher{
int num;
char sex;
int age;
}m;
A.m是结构体类型名
B.num,sex,age都是变量teacher1的成员
C.teacher 是用户定义的结构体类型
D.struct是定义结构体类型的关键字 A
20.结构体类型声明如下,设每个int类型数据占4个字节,则s占用的内存字节数是( )。
struct Stu{
int score[50];
float average;
}s;
A.104
B.204
C.208
D.108 B
21.结构体类型声明如下,sizeof(a)的结果为( )。
struct A{
double x;
float f;
}a[3];
A.36
B.24
C.12
D.6 A()
22.若有定义“int *p; ”且使“q=&p; ”,则q的定义应该是 ( )。
A.int q;
B.int *q;
C.int **q;
D.int &q; C()
23.若有语句int x, *p1=&x,*p2; 要使p2也指向x,正确语句的是( )。
A.p2=p1;
B.p2=**p1;
C.p2=&p1;
A()
24.若有语句“int a[3][4]={{1,3,5,7},{2,4,6,8}};”,则 *(*a+1) 的值为( ) 。
A.1
B.2
C.3
D.4 C()
25.若有语句“int a[10]; int *p=a; ”,则以下错误的表达式是( ) 。
A.p=a+5;
B.a=p+a;
C.a[2]=p[4];
D.*p=a[0]; B
26.以下对结构体变量stu中成员age的正确引用是( )。
struct Student{
int age;
int num;
} stu,*p=&stu;
A.Student.age
B.stu.age
C.stu->age
D.(*p)->age B()
27.(19. 37.)若有以下说明语句,
struct birthday
{
int year;
int month;
int day;
}day1;
则下面叙述正确的是( )。
A.day1为结构体类型名
B.struct birthday为结构体变量名
C.month为结构体变量名
D.day1为结构体变量名 D()
28.有以下结构体说明、变量定义和赋值语句:
struct SID
{
char name [10];
int age;
char sex;
}s[5],stu;
则以下 scanf函数调用语句有错误的是( )。
A.scanf("%s", s[0].name);
B.scanf("%d", &s[0].age);
C.scanf("%s", &stu.name);
D.scanf("%c", &stu.sex); C
29.设有如下定义
struct ss
{
char name[10];
int age;
char sex;
}std[3],*p=std;
下列各输入语句中错误的是____。
A.scanf("%d", &(*p).age);
B.scanf("%s", &std.name);
C.scanf("%c", &std[0].sex);
D.scanf("%c", &(p->sex)); B
30.对于以下结构定义,(*p)->str++中的++加在()。
struct
{
int len;
char *str
} *p;
A.指针str上
B.指针p上
C.str指向的内容上
D.语法错误 D
31.设有如下定义,则对data中的a成员的正确引用是()。
struct sk
{
int a;
float b;
} data, *p=&data;
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a B
32.若有下列定义,则以下不合法的表达式是( )。
struct student{
int num;
int age;
};
struct student stu[3] = {{101, 20}, {102, 19}, {103, 20}}, *p = stu;
A.(p++)->num
B.p++
C.(*p).num
D.p = &stu.age D
33.在单向链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的( )。
A.直接前趋
B.直接后继
C.开始结点
D.终端结点 B
34.若程序有以下的说明和定义:
struct abc
{
int x;
char y;
}
struct abc s1,s2;
则会发生的情况是()
A.编译时错
B.程序将顺序编译、连接、执行
C.能顺序通过编译、连接、但不能执行
D.能顺序通过编译、但连接出错 A
35.链接存储的存储结构所占存储空间( )。
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B.只有一部分,存放结点值
C.只有一部分,存储表示结点间关系的指针
D.分两部分,一部分存放结点值,另一部分存放结点所占单元数 A
36.若有定义
union data
{
char ch;
int x;
} a;
下列语句中( )是不正确的。
A.a={'x',10}
B.a.x=10;a.x++;
C.a.ch='x';a.ch++;
D.a.x=10;a.ch='x'; A
37.(19. 27.)若有定义
typedef struct {
int n;
char ch[8];
} PER;
以下叙述中正确的是( )。
A.PER是结构体变量名
B.PER是结构体类型名
C.typedef struct 是结构体类型
D.struct 是结构体类型名 B
38.若以“a+”方式打开一个已存在的文件,则以下叙述正确的是( )。
A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
C.文件打开时,原有文件内容被删除,只可作写操作
D.以上各种说法都不正确 A
39.函数fscanf()的正确调用形式是( ) 。
A.fscanf(fp, 格式字符串, 输出表列);
B.fscanf(格式字符串, 输出表列, fp);
C.fscanf(格式字符串, 文件指针, 输出表列);
D.fscanf(文件指针, 格式字符串, 输入表列); D
40.下面的程序执行后,文件file.txt中的内容是
void fun(char *fname, char *st);
int main(void)
{
fun("file.txt", "How are you!");
fun("file.txt", "Fine, thank you!"); return 0;
}
void fun(char *fname, char *st) {
FILE *fp;
int len, i;
fp = fopen(fname, "w");
if (NULL == fp) { printf("file open error!"); exit(1); }
len = strlen(st);
for (i=0; i<len; i++) fputc(st[i], fp);
fclose(fp) ;
}
A.file.txt
B.How are you!
C.How are you!Fine, thank you!
D.Fine, thank you! D
41.已知有定义,FILE *fp; char str[] = "Good!"; fp = fopen("filename.dat", "wb"); 将数组str中存放的字符串写到名为filename.dat的二进制文件中。需要的语句是
A.fwrite(str[0], sizeof(char), 1, fp);
B.fread(str, sizeof(char), 5, fp);
C.fwrite(fp, sizeof(char), 5, str);
D.fwrite(str, sizeof(char), 5, fp); D
42.在C语言中,下面关于文件的存取方式正确的叙述是
A.可以顺序存取,也可以随机存取
B.不可以顺序存取,但可以随机存取
C.可以顺序存取,但不可以随机存取
D.只能从文件的开头存取 A
43.在C语言中,下面关于文件操作正确的叙述是
A.对文件操作时需要先关闭文件
B.对文件操作时需要先打开文件
C.对文件操作时,必须先检查文件是否存在,然后再打开文件
D.对文件操作时打开和关闭文件的顺序没有要求 B
44.按照文件的存储方式,文件可以分为
A.数据文件与程序文件
B.文本文件与字符文件
C.二进制文件与文本文件
D.格式文件与流式文件 C
45.当下面什么情况下,文件打开方式“w+”和“a+"有同样的效果。
A.打开文件既写又读
B.要打开的文件存在且为空
C.要打开的文件存在且不为空
D.打开文件只写不读 B
46.为写文本文件my.txt而打开其的正确写法是( )。
A.fp=fopen("my.txt","r")
B.fp=fopen("my.txt","rb")
Cfp=fopen("my.txt","wb")
D.fp=fopen("my.txt","w") D
47.有如下定义,下面说法正确的是()。
FILE *fp;
fp=fopen("a.txt","w");
A.若文件不存在,则无法将其打开
B.文件打开后,初始读写位置取决于文件内有无内容,如有,则在文件最后
C.可以对文件进行读写操作
D.会打开一个空的文本文件 D
48.对于以下递归函数f,调用函数f(27)的输出结果是( )。
void f(int n)
{
if (n < 5){
printf("%d", n);
}else{
printf("%d", n%5);
f(n/5);
}
}
A.102
B.201
C.21
D.20 B
49.以下描述错误的是( )。
A.函数调用可以出现在执行语句中
B.函数调用可以出现在一个表达式中
C.函数调用可以作为一个函数的实参
D.函数调用可以作为一个函数的形参 D
50.变量存储类别
寄存器变量使用 ▁▁▁▁▁ 关键字。
A.auto
B.extern
C.register
D.static C
51.数组名作为参数时,以下叙述正确的是( )。
A.函数调用时是将实参数组的所有元素值传给形参。
B.函数调用时是将实参数组的第一个元素值传给形参。
C.函数调用时是将实参数组的首地址传给形参。
D函数调用时是将实参数组的所有元素的地址传给形参。 C
52.关于递归函数以下叙述错误的是( )。
A.递归函数是自己调用自己。
B.递归函数的运行速度很快。
C.递归函数占用较多的存储空间。
D.递归函数的运行速度一般比较慢。 B
53.当一个函数无返回值时,函数的返回类型应为( ) 。
A.任意
B.void
C.int
D.char B (void为空函数,无返回值,int 类型的最多一个返回值)
54.以下( )函数,没有返回值。
A.int a(){ int a=2; return a*a; }
B.void b(){ printf("c\n"); }
C.int c(){ int a=2; return aaa;}
D.以上都是 B
55.被调函数返回给主调函数的值称为( ) 。
A.形参
B.实参
C.返回值
D.参数 C
56.有
void f(int a){ a=3;},
则
int n=1;
f(n);
cout<<n<<endl;
的结果是()
A.3
B.1
C.0
D.不确定 B
57.递归函数的二个要素是( )。
A.函数头、函数体
B.递归出口、边界条件
C.边界条件、递归方程
D.递归表达式、递归方程 C
58.函数定义如下:
void f(int b[]) { b[1]=9;}
实参数组及函数调用如下:
int a[5]={1};
f(a);
则以下输出语句的结果为( )。
cout<<a[1]<<endl;
A.0
B.1
C.9
D.以上都不对 C
59.变量存储类别
局部变量使用 ▁▁▁▁▁ 关键字。
A.auto
B.extern
C.register
D.static A
60.变量存储类别
全局变量使用 ▁▁▁▁▁ 关键字。
A.auto
B.extern
C.register
D.static B
61.若有说明: char *language[]={“FORTRAN”,“BASIC”,“PASCAL”,“JAVA”,“C”}; 则以下不正确的叙述是 ( )。
A.language+2表示字符串"PASCAL"的首地址
B.*language[2]的值是字符P
C.language是一个字符型指针数组,它包含5个元素,每个元素是一个指向字符串变量的指针
D.language是一个字符型指针数组,它包含5个元素,其初值分别j : "FORTRAN","BASIC","PASCAL","JAVA","C"
D
62.有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则表达式language[1]>language[3]
A.字符B和字符J
B.字符串FORTRAN和字符串PASCAL
C.字符F和字符P
D.字符串BASIC和字符串JAVA D
63.若有定义char *str[]={“Python”, “SQL”, “JAVA”, “PHP”, “C++”}; 则表达式*str[1] > *str[3]比较的是:
A.字符P和字符J
B.字符串SQL和字符串PHP
C.字符串Python和字符串JAVA
D.字符S和字符P D
//64.若有定义:int a[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为( )。
A.0
B.{1,2}
C.1
D.3 A
//65.若有定义int a[2][3]; 则对数组元素的非法引用是( )。
A.a[0][1/2]
B.a[1][1]
C.a[4-4][0]
D.a[0][3] D
//66.设int a[2][3]={0,0};,则下列描述错误的是( )。
A.数组a有6个元素
B.只有元素a[0][0]和a[0][1]的值为0,其余元素的值不确定
C.数组a的每个元素的值为0
D.二维数组a的第一维大小为2 B
67.设有定义语句“char s[12] = "string" ;”,则语句“printf("%d\n",strlen(s));”的输出是( )。
A.6
B.7
C.11
D.12 A
//68.有初始化语句“int a[3][4]={1,3,5,7,9};”,则a[1][2]的值为( )。
A.0
B.3
C.5
D.9 A
//69.语句“int a[3][4]={0};”的作用是( )。
A.仅使得元素a[0][0]为0
B.仅使得元素a[1][1]为0
C.使得所有元素都为0
D.仅使得元素a[3][4]为0 C
//70.有数组初始化语句“int a[3][2]={1,2,3,4,5,6};”,则值为6的数组元素是( )。
A.a[3][2]
B.a[2][1]
C.a[1][2]
D.a[2][3] B
————————————————
版权声明:本文为CSDN博主「莫名其_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_63455002/article/details/122532312