一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
A.C语言程序将从源程序中第一个函数开始执行
B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D.main可作为用户标识符,用以命名任意一个函数作为主函数
A. float
B.-fx_1
C._4sum
D.ia%b
3,下列选项中不会引起二义性的宏定义是()。
A. #define POWER(x) xx
B. #define POWER(x) (x)(x)
C. #define POWER(x)(xx)
D. #define POWER(x) ((x)(x)
4,以下选项中不正确的整型常量是()
A. 12L
B.-10
C.012
D. 2,900
5.若变量x、y都是int型数,以下表达式中不能正确表示数学关系lx-yl<10的是( )。
A. abs(x-y)<10
B. x-y>-10 && x-y<10
C. (x-y)<-1011!(y-x)>10
D. (x-y)*(x-y)<100
6,逻辑运算符两侧运算对象的数据类型()
A.只能是0或者1。
B.只能是0或者非0正数
C.只能是整型或者字符型数据
D.可以是任何类型的数据
7.若有定义int x=3,y=2和floata=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是()。
A.0
B.2
C. 1.5
D.1
8.设x、y均为float型变量,则以下不合法的赋值语句是()
A. y=1+x;。
B. y=(x%2)/10;
C. x*=y+8;
D. x=y=0;
9.设字符型变量x的值是064,表达式~x"x<<2&x的值是()。
A.0333
B.333
C. 0x333
D.020
10.若x是double型变量,n是int型变量,执行以下语句(),并输入3 1.25后,x的值是1.25,n的值是3
A. scanf(“%d%r, &n, &x);
B. scanf(”%lf%d", &o, &n);
C. scanf(“%1%d”, &n,
D. scanf(“%d, %lf”, &n, &x);
11.以下if-else语句语法正确的是()。
A. if(x>0) printf(“%f”,x) else printf(“%f”,-x);
B. if(x>0) {x=x+y;printf(“%f”,x);} else printf(“%f”,-x);
C. if(x>0) {x=x+yprintf(“%f”,x); else printf(“%f”,-x);
D. if(x>0) (x=x+y;printf(“%f”,x)} else printf(“%f”,;
A. for(i=0; i<10, j<10; i++);
B. for(i=0; j=0; i<10; i++);
C. for(i=0; i<10; i–);D. for(i=0; j<10; j++);
#include
int main(){
int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
for(i=1;i<3;i++)
s=s+a[b[i]];
printf("%d\n",s);
return 0;
}
A.5
B. 10
C. 11
D. 15
14.有说明语句int a[4][5];,则a[2]+3表示()。
A.a数组行下标为2、列下标为3的元素的地址
B.a数组行下标为2、列下标为3的元素的值
C. a 数组第2行的首地址
D. a数组第3行的首地址
15,不能把字符串Hello!赋给数组b的语句是()。
A. char b[10]=(‘H’,‘e’,‘l’,‘l’,‘o’,‘!’);
B. char b[10];b="Hello! ";
C.char b[10];strcpy(b,“Hello!”).
D. char b[10]=“Hello!”;
void fun (int a, int b, int c)
{a=456; b=567; c=678; }
int main()
{ int x=10, y=20,z=30;
fun (x, y, z);
printf("%d,%d,%d\n", x, y, z);
return 0;
}
A. 30,20,10
B. 10,20,30
C.456,567,678
D.678,567,456
A. fun(int y,double m);
B. k=fun(10,12.5);
C. fun(x, n);
D. void fun(n,x);
A. float f, *pf = f;
B. float f, *pf=&f;
C. float *pf = &f, f;
D. float f, *pf=0.0;
19,设有如下定义,下面各输入语句中错误的是
struct ss
{char name[10];
int age;char sex;} std[3],*p=std;
A. scanf(“%d”,&(*p).age);
B. scanf(“%d”,p->&age);
C.scanf(“%c”,&std[0].sex);
D. scanf(“%c”,&(p->sex));
A.0
B.3B
C.不确定
D.程序无法正常运行。
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。
1_______
#include
void main()
{
char c= 'b';
int k= 4;
switch(c)
{ case 'a':k=k+1;break;
case 'b': k=k +2;
case 'c': k=k+3;}
printf("%d\n",k);
}
2_______
#include
int F(int x){
int p= 1;
p*=x;
return p;
}
int G(int x)
{
static int p = 1;
p*=x;
return p;
}
void main(){
int a, b, c, d;
a=F(2);
b=F(3);
c=G(2);
d=G(3);
printf("%d%d%d%d\n", a, b, c, d);
}
3________
#include
int x=10;
void main()
{
int y=20;
printf("x=%d,y=%d\n",x,y);
{
int x=30; y=y+x;
printf("x=%d,y=%d\n",x,y);
}
printf("x=%d,y=%d\n",x,y);
}
4________
#include
int fun()
{
auto int x=1;
static int y=1;
x+=3;
y+=3;
return x+y;
}
void main()
{
int a,b;
a=fun();
b=fun();
printf("%d,%d\n",a,b);
}
5_______
#include
#include
struct student
{
int num; char name[20]; float score[3];
};
int main()
{
void print(struct student);
struct student stu;
stu.num=12345; strcpy(stu.name,"LiLin");
stu.score[0]=67.5; stu.score[1]=89; stu.score[2]=78.6;
print(stu);
printf("%sln",stu.name);
}
void print(struct student stu)
{
printf("%d\n%s\n",stu.num,stu.name);
printf("%f\n%f\n%f\n",stu.score[0],stu.score[1],stu.score[2]);
strcpy(stu.name, "chen");
}
三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)1,输入一个正整数,判断其是否为素数。
#include
#include
int main(){
int = m,i,is_prime, limit;
scanf ("%d", &m);
if ( m == 1) {
is_prime = 0;
}else if (m == 2) {
__________;
}else if (m % 2 == 0) {
is_prime = 0;
}else{
_________;
}
limit=sqrt(m)+1;
for(i=3;i<=limit,i+=2){
if(m % i == 0}{
________;
________;
}
}
if(______){
( printf("Yes\n");
}else{
printf("Noln");
}
}
2.下面invert函数的功能是将一个字符串str的内容颠倒过来。请填空。
void invert(char str)
{
int i,j, k;
for(i=0,j=________.i<j;i++________)
{
k=str[i];
str{i]=str[j];
str[j]=k;
}
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。且保证除法和求余的分母非零。
当运算符为+、-、* 、/ 、%时,输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
2.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),a和几个数相加由键盘输入。
3.编写函数void swap(int *a,int *b),(该函数功能是实现变量交换),主函数实现对输入的n个整数数据进行升序排序。