安徽工业大学2003年专升本真题
一、选择题(每小题各 1.5 分,共 15 分)
1. 若 x,y 均定义为 float 型变量,则以下不合法的赋值语句是 。
A ) ++x ; B ) y= ( x%4 ); C ) x*=y+5 ; D ) x=y=0 ;
2. 设有以下程序段
x=0 ;
while ( printf (“ * ”))
{ x++ ;
if ( x<10 ) break ;
}
下面描述正确的是 。
A )其中循环控制表达式与 0 等价 B )其中循环控制表达式与 ’0’ 等价
B )其中循环控制表达式是不合法的 D )以上说法都不对
3. 设有两个字符数组 a 、 b ,以下正确的输入语句是 。
A ) gets ( a , b ); B ) gets (“ a ” ), gets (“ b ” );
C ) scanf (“ %s%s ”, &a , &b ); D ) scanf (“ %s%s ”, a , b );
4. 下列程序段的运行结果是 。
char a[]= “ university ” , *p ;
p=a ;
while ( *p ! =’e’ )
{ printf (“ %c ” , *p-‘a’+’A’ ); p++ ; }
A ) UNIVERSITY B ) university C ) UNIV D ) univERSITY
5. 有以下说明和语句,则对 stu 中 sex 域的正确引用方式是 。
struct student
{ char name[20] ;
int sex ;
}stu , *p ;
p=&stu ;
A )( *p ) .sex B ) p-> stu.sex C )( *p ) .stu.sex D ) p.stu.sex
6. 下列程序的运行结果是 。
#include<stdio.h>
void cal ()
{extern int a, b ; int x =15 , y =10 ;
a=x-y ;
b=x+y ;
}
int a, b ;
main ()
{ int x=7 , y=5 ;
a=x+y ;
b=x-y ;
cal ();
printf (“ %d , %d\n ”, a , b );
}
A ) 5 , 25 B ) 12 , 2 C ) 1 , 12 D )不确定
7. 下段程序要能对两个整型变量 a 、 b 的值进行交换,正确的说法是 。
main ()
{ int a=50 , b=100 ;
swap ( &a , &b );
printf (“ a=%d , b=%d\n ”, a , b );
}
swap ( int x , int y )
{ int t ;
t=x ; x=y ; y=t ; }
A )该程序完全正确
B )该程序有错,只要将语句 swap ( &a , &b );中的参数改为 a , b 即可
C )该程序有错,只要将 swap ()函数中的形参 x 和 y 以及变量 t 均定义为指针即可
D )以上说法都不正确
8. 设 a 、 b 、 c 为整型变量, a=30 , b=40 , c=50 ,则下列表达式中值为 0 的是 。
A ) !(( a<b ) && !c||1 ) B ) a||b+c && b-c
C ) a<=b D ) ’a’ && ‘b’
9. 下列程序段的输出结果是 。
int a=3 ;
do { printf (“ %d\n ”, a-=2 ); } while (!( --a ));
A ) 3 和 0 B )死循环,没有输出 C ) 1 和 -2 D ) 1
10.C 语言中以下说法正确的是 。
A )实参和与其对应的形参共占用一个存储单元
B )形参是虚拟的,不占用存储单元
C )只有当实参和与其对应的形参同名时才共占用存储单元
D )实参和与其对应的形参各占用独立的存储单元
二、填空题(每小题各 1.5 分,共 15 分)
1. 下列程序每行输出 3 个数据,请填空。
#define N 50
main ()
{ int a[N] , i ;
for ( i=0 ; i<N , i++ ) scanf (“ %d ”, ) ;
for ( i=0 ; i<N , i++ )
{ if ( ) printf (“ \n ” );
printf (“ %5d ”, a[i] );
}
}
2. 下面程序实现在字符串 a 中下标值为偶数的元素由小到大排序,其它元素不变,请填空。
#include<stdio.h>
main ()
{ char a[]= “ labchmfye ” ,t ;
int i , j ;
for ( i=0 ; i<7 ; i+=2 )
for ( j=i+2 ; j<9 ; )
if ( )
{t=a[i] ; a[i]=a[j] ; a[j]=t ; j++ ; }
puts ( a );
}
3. 要使下列程序输出 5 ,请填空。
#include<stdio.h>
fun ( char *s )
{ char *t=s ;
while ( ) t++ ;
return ( t-s );
}
main ()
{ char *a= “ china ” ;
printf (“ %d ” , fun ( a )):
}
4. 下列程序段将输出 students ,请填空。
char ch[]= “ we are students ” ;
int i , j ;
for ( i=0 ; ; i++ )
{j=i+7 ; printf (“ %c ”, c[j] ); }
5. 下列程序段的运行结果是 。
char ch[]= “ \t\v\\\0good\n ” ;
printf (“ %d ” ,strlen ( ch )) ;
6. 下列程序段是输出两个字符串中对应相等的字符,请填空。
char x[]= “ sfieugvsdasdfsad ” ;
char y[]= “ usidbhfsrygvvses ” ;
int i ;
while ( x[i]!=’\0’ && y[i]!=’\0’ )
if ( x[i] = = y[i] ) printf (“ %c ”, );
else i++ ;
7.
能正确表示“当
x
的取值在
[200
,
210]
和
[300
,
310]
范围内为真,否则为假”的
表达式是
。
8.
若
int
型变量
a=21
,则执行以下语句后
a
的值是