一、单选题
1、以下符号可以作为变量名的是(B)。
A.intx
B.01class
C.add()
D.x.id
2、C语言编译预处理命令中,下列说法错误的是(B)。
A.#include <stdio.h>是编译预处理命令
B.C编译器对预处理命令的处理是在程序执行中进行的
C.预处理命令都必须以#号开始
D.#define M 10是编译预处理命令
3、若定义int x=2; 则语句x*=x+=2; 执行后x的值是(D)。
A.2
B.4
C.8
D.16
4、关于选择语句的说法,错误的是(B)。
A.if语句可以没有else语句与之配对
B.break和continue都可以用在switch语句中
C.switch语句中,case标签的值不能是变量
D.else语句总是与在它之前、和它作用域相同的、最近的尚未匹配的if语句配对
5、在C语言中,关于函数形式参数的描述,错误的是(D)。
A.形式参数是局部变量
B.不同的函数中,形式参数名字可以相同
C.形式参数类型由调用时传入的实际参数类型决定
D.函数可以没有形式参数,也可以有多个形式参数
6、关于return语句,以下说法正确的是(D)。
A.return语句只能出现在main函数中
B.一个函数可以有多个return语句
C.所有函数都不能没有return语句
D.while循环中的return语句,其作用是退出当前循环
7、假设有变量int x=1,sum=0; 以下循环语句执行后,sum的值是(B)。
for(;x<5;x++){
if(x%3==0)
x=x+1;
sum+=x;
}
A.10
B.4
C.7
D.8
8、定义并初始化数组int a[][3]={1,2,3,4,5,6,7,8};则值为0的元素是(C)。
A.a[1][1]
B.a[2][2]
C.a[3][3]
D.不存在
9、已知变量x被定义为int型变量,以下定义并初始化指针p的语句正确的是(C)。
A.int p=&x;
B.int *p=&x;
C.int *p=*x;
D.int p=x;
10、关于字符串的描述,错误的是(C)。
A.字符数组可以存放字符串
B.字符串不能用关系运算符直接比较
C.不能修改字符串常量的内容
D.可使用赋值运算符=对字符数组进行整体赋值
11、关于变量,以下说法错误的是(C)。
A.全局变量生存期与程序相同
B.静态变量的值只能读取,不能修改
C.静态变量只初始化一次
D.全局变量的值既可以读取,也可以修改
12、假设有#define M 1+2 则定义int x=M*M;后,x的值是(D)。
A.3
B.6
C.9
D.5
13、执行下程序,输出结果是 (C)。
#include<stdio.h>
int Func(int a,int b){
static int n=0;
if(a%2)
n=n+a;
else
n=n+b;
return n;
}
int main(){
printf("%d", Func(7,Func(6,5)));
return 0;
}
A.10
B.11
C.12
D.13
14、假设为存储10名学生的学号和姓名,结构体模板定义如下:
struct student{
int id;
char name[100];
}stu[10],*pstu=&stu[3];
则以下语句中,不能输入下标为3的学生的名字的是(A)。
A.scanf(“%c”,stu[3].name);
B.scanf(“%s”,(*pstu).name);
C.scanf(“%s”,stu[3].name);
D.scanf(“%s”,pstu->name);
15、以可读写方式打开当前目录下的文本文件1.txt,且要求该文件必须存在的语句是(C)
A.fopen(“1.txt”,“w+”);
B.fopen(“1.txt”,“r”);
C.fopen(“1.txt”,“r+”);
D.fopen(“1.txt”,“rb”);
16、以下程序的输出结果是(D)。
#include <stdio.h>
int main(){
int i=1,j=2;
switch(i){
case 0: j+=1;
case 1: j+=2;
i=2;
default: j=1;
}
printf("%d,%d",i,j);
return 0;
}
A.1,2
B.2,3
C.2,1
D.2,4
17、以下循环程序的输出结果是(B)。
#include <stdio.h>
int main(){
int i, j=0;
for (i=1; i<10; i++){
if(i%2) j+=i;
}
printf("j=%d",j);
return 0;
}
A.j=10
B.j=20
C.j=25
D.j=55
18、以下程序在主函数退出之前,变量x的值是(B)。
#include <stdio.h>
int Function(int n){
if (n)
return n+ Function (n-1);
else
return n;
}
int main(){
int x = Function (5);
printf("%d",x);
return 0;
}
A.0
B.5
C.10
D.15
19、以下关于字符串的程序,输出是(B)。
#include <stdio.h>
int main(){
char a[]={"abcdefg"},t;
char* p = a;
int i=0;
for(;i<4;i++){
t = *(p+i);
*(p+i) = *(p+6-i);
*(p+6-i) = t;
}
puts(a);
return 0;
}
A.abcdefg
B.gfedcba
C.abcde
D.abcdabc
20、以下关于结构体的程序,运行结果是(B)。
#include<stdio.h>
struct People{
int id;
char name[10];
};
int main(){
struct People a = {'0', "name"};
struct People b = a;
a.id = 20;
printf("%d,%s", b.id, b.name);
return 0;
}
A.0,name
B.编译错误
C.20,name
D.48,name
二、填空题
- C语言源程序中,有且只能有一个
main
函数。 - C语言多行注释符号是
/* */
。 - 若函数void Func()定义在主函数之后,想在主函数调用此函数,需要在调用前对Func函数进行
定义
,以保证编译器能够找到这个函数。 - 若定义double d=10.0;int x=10;则语句d=x/4*d;执行后d的值是
25
。 - 能够表示"整数x是大于10的偶数"的C语言表达式是
x>10||x%2==0
。 - 在while循环中,可以使用
break
语句主动结束并跳出整个循环,继续从循环语句后的第一个语句开始执行。 - 字符串的末尾必须以字符
'/0'
结束。 - 用来保存变量地址的变量叫做
指针
变量。 - C语言中,给数据类型定义别名时使用的关键字是
typedef
。 - 若整型变量m是一个三位数,则表示它的十位数字的表达式是
m/10%10
。 - 以下程序求解"鸡兔同笼"问题,即:鸡和兔子在一个笼子里,共有head个头,foot只脚,求笼子里有多少只鸡,多少只兔子,并保存结果到二进制文件d:\record.dat中。
#include<stdio.h>
int main(){
int head,foot,a[2]={0};
FILE* fp = NULL;
printf(“请输入头和脚的数量:”);
scanf(“%d%d”,&head,&foot);
while(a[0]<=head){
a[1]=head-a[0]
;
if(a[0]*2+a[1]*4==foot){
fp = fopen("d:\record.dat","a+"
);
if(fp!=NULL){
fwrite(&a[0],&a[1]
,sizeof(int),2,fp);
fclose(fp);
break;
}
}
a[0]++;
}
return 0;
}
- 下列程序的功能是输入10个整数到数组a,统计其中非负整数的个数并输出。
#include<stdio.h>
int main(){
int i,count=0,a[10];
printf(“输入10个整数\n”);
for(i=0;i<10;i++)
scanf(“%d”,&count
);
for(i=0;i<10;i++){
if(count<0
) count++;
}
printf(“非负整数个数为:%d”,count);
return 0;
}
C语言、C++相关问题欢迎留言询问。