一、单项选择题(本题共10小题,每小题2分,满分20分)
1.下列运算符中,结合方向为“自右至左”的是:[ ]
A. 算术运算符 + - * / B.左移运算符 <<
C. 赋值运算符= D. 关系运算符 < <= > >=
2.用以下语句从键盘接收两个整型值并赋值给整型变量a,b:scanf(“%d,%d”,&a,&b),则以下输入正确的是:
A. 5,6(回车) B.5(空格)6(回车)
C. 5(回车)6 (回车) D. 5(空格)6(空格)
3. 以下程序的输出结果是:
main( )
{ int a=7,b=5;
printf(“%d\n”,b=b/a);
}
A. 不确定值 B. 5 C. 1 D. 0
4.以下程序的输出结果是:
main()
{ char s1[20]=“China”,s2[20]=“for”,s[10];
if(strcmp(s1,s2)) printf(“%s\n”, strcat(s2,s1));
else printf(“%d\n”,strlen(s1));
}
A. Chinafor B. 5 C.forChina D. 3
5.C语言中函数调用的方式有:
A. 函数调用作为语句1种 B. 函数调用作为函数表达式1种
C. 函数调用作为语句或函数表达式2种
D.函数调用作为语句、函数表达式或函数参数3种
6.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是:
struct worker
{ int no; char name[20]; char sex;
structbirth{ int day; int month; int year;}a;
};
struct worker w;
A. day=25; month=10; year=1993;
B. w.birth.day=25; w.birth.month=10;w.birth.year=1993;
C. w.day=25; w.month=10; w.year=1993;
D. w.a.day=25; w.a.month=10; w.a.year=1993;
7.若有下面的变量定义,以下语句中合法的是:
int i,a[10],*p;
A. p=a+2; B. p=a[5]; C. p=a[2]+2; D. p=&(i+2);
8.以下程序的输出结果为:
main( )
{ int i=010,j=10,*pi,*pj;
pi=&i; pj=&j;
printf("%d,%d\n",*pi,*pj);
}
A. 10,10 B. 8,10 C.010,10 D. 8,8
9.要打开一个已存在的非空文本文件"file"用于修改,选择正确的语句:
A. fp=fopen("file","r"); B.fp=fopen("file","w");
C. fp=fopen("file","r+"); D. fp=fopen("file","w+");
10.以下的 for 循环 for(x=0,y=0;(y!=123)&&(x<4);x++);中,x++执行的次数:
A. 执行 3 次 B. 执行 4 次
C. 循环次数不定 D. 是无限循环
二、填空题(本题共10小题,每题2分,满分20 分)
1.C语言表达式 5>2>7>8 的值是_______________。
2.当执行完以下语句后,变量a的值为_________,d的值为________,e的值为_________。
a=6; b=++a; c=--a; d=a++; e=a--;
3.设有以下宏定义,则执行赋值语句 a=PP+20;(a为int型变量)后,a的值是________。
#define PR 8
#define PP PR*40
4.定义结构体类型时,应使用关键字________,定义枚举类型时,应使用关键字_________。
5.若有char a[3]=“as”;则*a=________,*(a+2)=____________。
6.已知职工记录描述如下,在Turbo C中(int占两个字节),系统为变量w分配_______字节的空间。
struct worker
{ int no;
char name[20];
char sex;
union { int day; int month; int year;}birth;
} w;
7.C语言中的文件类型有_____________和__________________两种。
8.以下程序的输出结果为__________________。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case 'a':
case 'b':
case'c':printf("%c,",c);break;
default:printf("end");}
}
}
9.下面程序段的输出结果是( )。
char a=111; a=a^0; printf(“%d %o\n”,a,a);
10.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是___________。
三、写出下列程序的运行结果(每题4分,共12分)
1.invert(int*s,int i,int j);
main( )
{ int a[6]={10,6,23,-90,0,3},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“\n”);
}
invert(int *s,int i,int j)
{ int t;
if(i
{ invert(s,i+1,j-1);
t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;
}
}
2.#include
#include
f1(int a)
{ int b=0; static int c=3;
b+=1; c++;
return(a+b+c);
}
main()
{ int a=1,i;
char s1[10]=”java”,s2[10]=”basic”,s[10];
for(i=0;i<3;i++) printf("%d ",f1(a));
printf(“\n”);
if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);}
printf(“%d,%s\n”,strlen(s2),strcat(s2,s1));
}
3.#include
#define MAX 100
main()
{ intf[MAX],i,j,k=2,m=5;
for(i=0;i<=m;i++) f[i]=1;
f[k-1]=2;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)
f[i]+=f[j];
printf("%d%5d%5d\n",k,m,f[m]);
}
四.阅读下列程序,在______处填入适当内容,使程序完整(每空2分,共28分)。
1.求100~200间的全部素数。
#include
(1)
main()
{ int m,k,i,;
for(m=101;m<=200;m+=2)
{
k=sqrt(m);
for(i=(2);i<=k;i++) if(m%i==0)(3);
if(i==(4))
printf("%d ",m);
}
}
2.用选择法对数组中的10个字符按由大到小排序。
#include
void sort((1))
{ int i,j,k;
char t;
for (i=0;i
{ (2);
for(j=i+1;j
if ((3)) k=j;
t=a[k]; a[k]=a[i]; a[i]=t;}
}
main( )
{ char s[10];
int i;
for(i=0;i<10;i++) scanf(“%c”,&s[i]);
(4) ;
printf(“thesorted array:\n”);
for(i=0;i<10;i++)
printf(“%3c”, (5));
printf(“\n”);
}
3.输入3×4数组,用指针方法实现将每行中的最小数与第0列元素互换。
#include
swap(int(1))
main()
{ int a[3][4], i, j,*p=a[0];
for(i=0;i<3;i++)
for(j=0;j<4;j++) scanf(“%d”,p++);
for(p=&a[0][0];p
swap(p);
(3);
for(i=0;i<3;i++)
{ for(j=0;j<4;j++) printf(“%3d”,*p++);
printf(“\n”);
}
}
swap(int(1))
{ int min, i, *p2=p1,*p3;
(4) ;
for(i=0;i<4;i++)
{ if(*p2
(5) ;
}
min=*p1;*p1=*p3;*p3=min;
}
五、 编程题 (本题共2小题,每小题10分,共20分)
1. 求1+2!+3!+...+20!的和。
2、用指针作函数参数,编程序求一维数组中的最大和最小的元素值。