上海市二级考C语言真题
2004年上海市高等学校计算机等级考试试卷
二级 (C程序设计)
(本试卷答卷时间为120分钟)
试题一(28分,每小题4分)
#include
void main(){
char s[]="2473",c,i;
for(i=0;c=s[i];i++){
switch(c -'0'){
case 2:
case 3: putchar(c+4); continue;
case 4: putchar(c+4); break;
case 5: putchar(c+3);
default: putchar(c+2);
}
putchar('\n');
}
}
(4)分别写出下列4个指针变量p1,p2,p3,p4的含义。
int *p1, *p2[5], (*p3)( ) , (*p4)[5];
(5)写出程序的输出结果(假定类型unsigned int的字长为16位)。
#include
void main(){
unsigned int u1=0x958, u2,u3;
u2 = (u1 & 0xFF) << 4 ;
u3 = (u1 & 0xFF00) >> 4;
printf(“%x %x %x\n”, u2,u3,u2|u3);
}
(6)阅读如下程序段, 把其中的switch语句改写成等价的条件语句。
int x,y;
scanf(“%d”,&x);
switch( x!=0 ){
case 0: y=0; break;
case 1: switch( x>0) {
case 1: y=1; break;
case 0: y=-1;
}
}
(7) 描述函数conv()的功能,并写出下列程序的输出结果。
void conv(int m){
if( m>=2)
conv(m/2);
printf("%d",m%2);
}
void main(){
conv(13);
}
试题二(12分,每小题6分)
阅读下列程序并回答问题,把答案写在答卷纸的对应栏内。
(1)【程序2.1】
#include
void sort(int a[],int n){
int i,j,t;
for(i=0;i
for(j=i+1;j
if(a[i]>a[j]) t=a[i], a[i]=a[j], a[j]=t;
}
void delsame (int x[], int n){
int i, j, m=n;
for(i=0;i < m ;i++){
while (x[i] = = x[i+1]){
for ( j = i ; j < m ; j++ )
x[ j ] = x[ j + 1 ];
m -- ;
}
}
return m;
}
void main( ){
int x[ ]= {74,4,35,4,65,65,72,74,35 }, i, m, n;
n = sizeof(x)/sizeof(x[0]);
sort(x,n);
m=delsame (x, n);
for (i = 0; i < m; i++) printf("%3d", x[i]);
printf("\n");
}
(a)函数sort()的功能是什么?(b)函数delsame()的功能是什么?(c)程序的输出是什么?
(2)【程序2.2】
#include
#define M 4
void main( ) {
int i,j,k,m,a[4];
printf("Enter 4 numbers: ");
for(i=0; i
for(i=M;i>0;i--){
k=a[M-1];
for(j=M-1;j>0;j--)
a[j]=a[j-1];
a[0]=k;
for(m=0; m
printf("%d ",a[m]);
printf("\n");
}
}
设一维数组a的4个输入整数