一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
A.计算机不能直接执行用C语言编写的源程序
B.C程序经C编译程序编译后,生成扩展名为obj的文件是一个二进制文件
C.扩展名为obj的文件,经连接程序生成扩展名为exe的文件是一个二进制文件
D.扩展名为obj和exe的二进制文件都可以直接运行
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到“见名知意”
C.用户所定义的标识符必须以字母或下划线开头
D.用户定义的标识符中、大、小写字母代表不同标识
A.宏替换不占用运行时间,只占用编译时间
B.在程序的一行中可以出现多个有效的预处理命令行
C.使用带参数宏定义时,参数的类型应与宏定义时一致
D.宏定义不能出现在函数内部
4.下面正确的字符串常量是()
A. ‘a’
B. ‘376’
C. “\n”
D. 376
A.若int a=3, b=2,c=1;f=a>b>c;则f值为真
B.若int m=0, n=1, a=1, b=2,c=3;(m=a>b)&&(n=c>4),则n值为真
C.若int a=2,b=3,c=1;c=a/b;则c的值为真
D.若int a=2,b=3;表达式a>b?a:0的值为真
6.对于变量定义:int a,b=0;下列叙述中正确的是()
A.a的初始值是0,b的初始值不确定。
B.a的初始值不确定,b的初始值是0。
C.a 和b的初始值都是0。
D.a 和b的初始值都不确定。
7,判断变量x、y中有且只有1个值为0的表达式为()
A.!(xy)&&x+y
B. (xy)&&x+y
C.x*y0
D.x0&&y!=0
8·假定w、x、y、z、m均为int型变量,有如下程序段:
int w=1,x=2,y=3,z=4,m;
m=(w
A.4
B.3
C. 2
D. 1
9,设字符型变量x的值是064,表达式~x^x<2&x的值对应的8进制值是()。
A.333
B. 0333
C.x333
D.020
10.若变量已正确定义并赋值,表达式()不符合C语言语法。
A.5&&3
B. int(5.5)
C. +a
D. a=b=c=3
11.阅读以下程序段,如果从键盘上输入1234567<回车>,则程序的运行结果是()
int i,j;
scanf(“%3d%2d”,&i,&j);
printf(“i = %d, j = %d\n”,i,j);
A. i = 123, j= 4567
B. i = 1234, j= 567
C. i=1, j=2
D. i=123, j=45
A.有语法错误不能通过编译
B.可以通过编译但是不能通过连接
C.输出 Not Equal!
D.输出Equal!
A.执行 3 次
B.执行4次
C.循环次数不定
D.是无限循环
A. int a=“string”;
B. int a[5]={0,1,2,3,4,5};
C. char a=“string”;
D. char a[]=“string”;
15.下列程序的运行结果是( )。
int main()
{
int a[3][3]={{1,2,3}, {4,6,2}, {9,3,6}}, s=0;
int i, j, k=1;
for (i=0; i<3; i++){
for (j=0; j<3; j++)
a[i][i]=a[i][j] /k;
k++;
}
for (i=0; i<3; i++)
s+=a[i][i];
printf ("%d", s);
return 0;
}
A.3
B.6
C.7
D.14
16.判断字符串a和b是否相等,应当使用()
A. if (a==b)
B. if (a=b)
C. if (strcpy(a,b))
D. if (stremp(a,b)==0)
17,以下描述错误的是()。
A.函数调用可以出现在执行语句中
B.函数调用可以出现在一个表达式中
C.函数调用可以作为一个函数的实参
D.函数调用可以作为一个函数的形参
18.以下哪个定义中的p不是指针,请选择恰当的选项()
A. char **p;
B. char (*p)[10);
C. char *p[6);t
D.给出的三项中,p都是指针
19,若程序中有下面的说明和定义
struct abc
{
int x;
char y;
}
struct abc s1,s2;
A.编译出错,结构体定义完要加分号。
B.程序将顺利编译连接执行
C.能顺利通过编译连接但不能执行
D.能顺利通过编译但连接出错
20·已知字符0的ASCI码为十六进制的30,下面程序的输出结果是()。
#include
int main()
{
union{
unsigned char c;
unsigned int i[4];}z;
z.i[0]=0x46;
z.i[1]=0x56;
printf("%d",z.i[1]);
return 0;
}
Α.6
B9
C.70
D.86
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。
1__________
#include
void main(){
int i,score;
char grade;
for(i=1;i<7;i++){
scanf("%d", &score);
score = score/10;
switch(score) {
case 10: case 9: case 8: case 7: case 6:
grade = 'P'; break;
default:
grade = 'F'; break;
putchar(grade);
}
}
printf("Thanks");
}
#输入100 90 50 82 72 69
2__________
#include
int x;int f(int n) {
int x=1; return x;}
void main(){ printf("%d %d", f(3),x);}
3_______
#include
int main()
{
int i,s=0;
for(i=0;i<=10;i++)
{
int s=2*i;
s=s+i;
}
printf("s=%d\n",s);
printf("i=%d\n",i);
return 0;
}
4_______
#include
int main()
{
int i,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=2*i-1;j++)
printf("*");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
return 0;
}
5_________
#include
f(int b[],int n)
{
int i,r=1;
for(i=0; i<=n; i++)
r=r*b[i];
return r;
}
int main()
{
int x,a[] ={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
return 0;
}
三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)1. 求100—999之间的水仙花数之和(水仙花数是指一个三位数的各位数字的立方和是这个数本身,如:153=13+53+3^3)。
#include
int main(){
int d1,d2,d3;
int n;
int sum;
sum = 0;
for(_____){
for(_____){
for (_____){
n=dl*100 +d2*10+d3;
if(_____)){
sum += n;
}
}
}
}
printf("%dn",sum);
return 0;
}
2,将给定的n个整数存入数组后,再按逆序输出数组中的元素。
#include
#define MAXN 10
int main(){
int i, first, n;
int num[MAXN];
scanf("%d", &n);
for(i = 0; i <n; i++)
scanf("%d", &num[i]);
first = 1;
for(_______){
if(_______){
printf("%d", num[i);
_________;
}else{
printf(" %d", num[i]);
}
}
printf("\n");
return 0;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)1.编写程序,计算下列分段函数f(x)的值:
![在这里插入图片描述](https://img-blog.csdnimg.cn/77380ea06b9244c39beb847c79ad177c.png)
2.编写程序输出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1^3 + 5^3 + 3^3。
3,编写程序:给定某个正整数n,求其素因子分解结果。所谓素因子分解就是找这个数的所有约数并且约数是素数。