2003年上海市高等学校计算机等级考试试卷
二级 (C程序设计)
(120分钟)
试题一(28分,每小题4分)
设有变量说明:
int a=5, b=4, c=3, r1, r2;
请写出执行下列语句後r1和r2的值。
r1=a>b>c;
r2=ac;
试写出下列算式的C语言表达式。
执行下列语句後,i, j, k的值是多少?
for(i=k=0, j=6; i
执行下列程序後,b和c的值各为多少?
#include
void main()
{
int *a[10], b, c;
a[0]=&b;
*a[0]=5;
c=(*a[0])++;
printf(“%d %d\n”, b, c);
}
设有如下程序:
#include
void main()
{
int clock; float f; char cpu[20];
scanf(“%4d%f%s”, &clock, &f, cpu);
printf(“%d %.0f %s\n”, clock, f, cpu);
}
假设输入数据流为200015.0 P4 is GOOD!,请写出执行该程序後的输出结果。
下列程序的输出结果是什么?
#include
main()
{
int c1=0, c2=0, c3=0, c4=0;
char *p=”12395632123378”;
while(*p) {
switch(*p) {
case ‘1’: c1++; break;
case ‘2’: c2++;
case ‘3’: c3++; break;
default: c4++;
}
p++;
}
printf(“c1=%d c2=%d c3=%d c4=%d\n”, c1, c2, c3, c4);
}
执行下列程序後,s的值为多少?
#define sq(X) X*X
void main()
{
int s=15, a=2, b=1;
printf(“s=%d\n”, sq(a+b)/sq(a+b));
}
试题二(12分,每小题6分)
阅读下列程序,写输出结果。
(1)#define N 6
void main()
{
int i, j, a[N];
for(i=1; i
a[i]=1;
for(j=i-1; j>1; j--)
a[j]+=a[j-1];
for(j=1; j<=i; j++)
printf(“%4d”, a[j]);
printf(“\n”);
}
}
(2)#include
void fun(char *s)
{ while(*s){
*s=(*s-‘0’+3)%10+’0’;
++s;
}
}
void main()
{
char a[]=”314762985”; int i;
fun(a+3);
for(i=0; i<3; ++i)
printf(“%c\n”, a[3*i+1]);
}
试题三(12分,每小题6分)
改错。下列程序各有三个错误,请纠正。
以下程序的功能是输入一个字符串,并将其中的字符 ’a’ 用字符串’shu’替代後输出。如输入为“123abcaHello”,则输出为“123shubcshuHello”。
#01 #include
#02 void main()
#03 {
#04 int i; char line[81];
#05 scanf(“%s”, &line);
#06 for(i=0; line[i]!=’\n’; i++)
#07 if(line[i]==’a’)
#08 printf(“shu”);
#09 else
#10 printf(“%s”