一、选择题(1-10每题1分,11-30每题1.5分,共40分)
1. 以下选项中,可以作为用户标识符的是
A) void    B) 8_8    C) _a_0  D) a*b
2. 假设有定义:float a=22;int i=0,k=18; 那么不符合C语言规定的赋值语句是
A〕k=i++;  B〕i =〔i*k〕>=〔i-k〕;  C〕i=a%11;  D〕k=!a;
3. 假设执行了语句:float x=1008; int a=15; 那么表达式(int)(x+y)%7/17的值为
A) 23        B) 1        C) 0      D) 无法确定
4. 假设有定义语句:int a=1;double b=3.14;,那么表达式‘X’+a+b的结果的类型是
A)char B)int C)double D)float
5. 如有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y,那么z的值为
A)1.9 B)1 C)2 D)2.4
6. 以下是if语句的一种形式:
if(表达式) 语句
其中关于“表达式〞的说明正确的选项是:
A) 必须是逻辑表达式                              B) 必须是关系表达式
C) 必须是逻辑表达式或关系表达式      D) 可以是任意合法的表达式
7. 假设有定义:int a,b;,通过语句scanf(“%d;%d〞,&a,&b);,能把整数3赋
给变量a,5赋给变量b的输入数据是
A)3  5  B)3,5        C)3;5 D)35
8. 假设有定义语句:int k1=10,k2=20;,执行表达式
〔k1=k1>k2〕&&(k2=k2>k1)后,k1和k2的值分别为
A)0和1 B)0和20 C)10和1 D)10和20
9. 以下语句中正确的选项是:
A) char str[10];  str = “Hello〞;          B) char *str;  str = “Hello〞;
C) char str[10];    str = {“Hello〞};      D) char *str;  str = {“Hello〞};
10. 设有定义 int a[10], *p=a;  以下能够代表数组元素a[4]的是:
A) a+4    B) *(p+4)      C) *a+4    D) *p + 4
11. 有以下程序
#include <stdio.h>
int main()
{
int a=1,b=0;
if(--a)
b++;
else  if(a==0)
b+=2;
else
b+=3;
p rintf(“%d\n〞,b);
return 0;
}
程序运行后的输出结果是
A)0 B)1                C)2        D)3
12. 以下条件语句中输出结果与其他语句不同的是
A)if(a) printf(“%d\n〞,x);  else printf(“%d\n〞,y);
B)if(a==0) printf(“%d\n〞,y);  else printf(“%d\n〞,x);
C)if(a!=0) printf(“%d\n〞,x);  else printf(“%d\n〞,y);
D)if(a==0) printf(“%d\n〞,x);  else printf(“%d\n〞,y);
13. 有以下程序:
#include <stdio.h>
void main()
{  int a=7;
while(a--);
p rintf(“%d\n〞,a);
}
程序运行后的输出结果是
A) -1 B)0  C)1  D)7
14. 以下不能输出字符A的语句是〔注:字符A的ASCII码值为65,
字符a的ASCII码值为97〕
A)printf(“%c\n〞,’a’-32); B)printf(“%d\n〞,’A’);
C)printf(“%c\n〞,65);            D)printf(“%c\n〞,’B’-1);
15. 有以下程序〔注:字符a的ASCII码值为97〕
#include <stdio.h>
void main()
{ char *s={“abc〞};
do
{printf(“%d〞,*s%10);++s;}
while(*s);
}
程序运行后的输出结果是
A)abc B)789        C)7890      D)979898
16. 假设有定义语句:double  a,*p=&a;以下表达中错误的选项是
A)定义语句中的*号是一个地址运算符
B)定义语句中的*号是一个说明符
C)定义语句中的p只能存放double类型变量的地址
D)定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p
17. 有以下程序:
#include <stdio.h>
double f(double x);
void main()
{ double a=0; int i;
for(i=0; i<30; i+=10) a+=f((double)i);
p rintf(“%5.0f\n〞,a);
}
double f(double x)
{return x*x+1;}
程序运行后的输出结果是
A)503 B)401 C)500 D)1404
18. 假设定义语句:int year=2021,*p=&year;,以下不能使变量year中的值增
至2021的语句是
A)*p+=1;      B)(*p)++;      C)++(*p); D)*p++;
19. 以下定义数组的语句中错误的选项是
A)int num[]={1,2,3,4,5,6};
B)int num[][3]={{1,2},3,4,5,6};
C)int num[2][4]={{1,2},{3,4},{5,6}};
D)int num[][4]={1,2,3,4,5,6};
20. 有以下程序
#include <stdio.h>
void fun(int *p)
{printf(“%d\n〞,p[5]);}
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
}
程序运行后的输出结果是
A)5 B)6      C)8 D)9
21.有以下函数
int fun(char *x,char *y)
{int n=0;
while((*x==*y)&&*x!=’\0’){x++;y++;n++;}
return n;
}
函数的功能是
A)查x和y所指字符串中是否有‘\0‘
B)统计x和y所指字符串中最前面连续相同的字符个数
C)将y所指字符串赋给x所指存储空间
D)统计x和y所指字符串中相同的字符个数
c++中字符串数组怎么定义
22. 数学上的式子 1<x≤10怎么用C语言的表达式来表示:
A) 1<x≤10    B) 1<x<=10    C)x>1 && x<=10    D) 以上都不对
23. 假设有定义语句:char *s1=〞OK〞;*s2=〞ok〞;,以下选项中,能够输
出“OK〞的语句是
A)if(strcmp(s1,s2)==0)  puts(s1);
B)if(strcmp(s1,s2)!=0)  puts(s2);
C)if(strcmp(s1,s2)==1)  puts(s1);
D)if(strcmp(s1,s2)!=0)  puts(s1);
24. 以下程序的主函数中调用了在其前面定义的fun函数
#include<stdio.h>
void main()
{double a[15],k;
k=fun(a);
}
那么以下选项中错误的fun函数首部是
A)double  fun(double  a[15])
B)double  fun(double  *a)
C)double  fun(double  a[])
D)double  fun(double  a)
25. 有以下程序:
#include<stdio.h>
int f(int m)
{ static  int n=0;
n+=m;
return n;
}
void main()
{ int n=0;
p rintf(“%d,〞,f(++n));
p rintf(“%d\n〞,f(n++));
}
程序运行后的输出结果是
A)1,2 B)1,1      C) 2,3 D) 3,3
26. 假设有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3;                B)a=b=c+1;
C)a=(b=4)+c;                D)a=1+(b=c=4);
27. 有以下程序
#include
void main()
{  int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,假设输入1 2 3 4 5 0<;回车>,那么输出结果是
A)6566456    B)66656      C)66666      D)6666656
28. 有以下程序
#include
#define S(x) 4*(x)*x+1
void main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序运行后的输出结果是
A)197    B)143    C)33    D)28
29. 有如下程序,其中k的初始值为八进制数
#include <stdio.h>
void main()
{  int k=011;
k++;
printf(“%d\n〞, k);
}
那么程序运行后的输出结果是:
A) 12            B) 11          C) 10            D) 9
30. 设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,假设变
量均已正确赋初值,那么以下语句中错误的选项是
A)t1=t2;                                B)t2.num1=t1.num1;
C)t2.mark=t1.mark;              D)t2.num2=t1.num2;
二、填空题〔【1】-【10】每空1分,【11】-【20】每空2分,共30分〕
1、以下程序实现两个字符串的连接。不用strcat函数,填空请将程序补充完整
void str_cat(char S1[80],S2[40])
{
int i=0,j=0;
while (【1】)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。