一、选择题(每小题各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中***域的正确引用方式是 。
struct student
{ char name[20];
int ***;
}stu,*p;
p=&stu;
A)(*p).*** B)p-> stu.*** C)(*p).stu.***
D)p.stu.***
6.下列程序的运行结果是 。
#include
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
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
for(i=0;i
{ if ( ) printf(“\n” );
printf(“%5d”,a );
}
}
2.下面程序实现在字符串a中下标值为偶数的元素由小到大排序,其它元素不变,请填空。
#include
main()
{ char a[]=“labchmfye” ,t;
int i,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9; )
if( )
{t=a;a=a[j];a[j]=t;j++;}
puts(a);
}
3.要使下列程序输出5,请填空。
#include
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!=’\0’ && y!=’\0’)
if (x = = y) printf(“%c”, );
else i++;
7.能正确表示“当x的取值在[200,210]和[300,310]范围内为真,否则为假”的
表达式是 。
8.若int型变量a=21,则执行以下语句后a的值是 。
a+=a-=a+a;
三、阅读下列程序,写出运行结果(每题3分,共30分)
1.下列程序的运行结果是 。
#include
main ()
{ int i;
for(i=1;i<=5;i++)
{if(i%2) printf(“*” );
else continue;
printf(“#” );
}
printf(“$\n” );
}
2.在输入18并回车后,下列程序的运行结果是 。
main()
{ int x,y,i,j,u,v,a[8];
scanf(“%d”,&x);
y=x;i=0;
do
{ u=y/2;
a=y%2;
i++;y=u;
}while(y>=1);
for(j=i-1;j>=0;j--)
printf(“%d”,a[j]);
}
3. 下列程序的运行结果是 。
#include
main()
{ char str[]=“ASWWLIAHIRXNQ”,c;
int k;
for(k=2;(c=str[k])!=’\0’;k++)
{ switch(c)
{ case ‘L’:continue;
case ‘I’:++k;break;
default:putchar(c);continue;
}
putchar(’*’);
}
}
4. 下列程序的运行结果是 。
main ( )
{ int i, j;
static int a[10]={1,1,1,1,1,1,1,1,1,1};
for (i=0;i<10;i++)
for (j=0;j
a=a+a[j];
for (i=0;i<10;i++)
printf(“%d,”,a);
}
5. 下列程序的运行结果是 。
main ( )
{ int a=0, n=5;
for( ; ; )
{ a++; n--;
printf(“%d,”,a);
a=n;
if (n==0) break; }
printf(“%d” ,a); }
6. 下列程序的运行结果是 。
main ( )
{ static int a[10],i;
for (i=0;i<10;i++)
a=i+1;
for (i=0;i<10;i=i+2)
printf(“%d” ,*(a+i));
}
7.下列程序的运行结果是 。
#include
function(int a,int b)
{ static int t=0,i=2;
i+=t+1;
t=i+a+b;
return(t);
}
main()
{ int s=4,t=1,p;
p=function(s,t);printf(“%d,” ,p);
p=function(s,t);printf(“%d\n” ,p);
}
8. 下列程序的运行结果是 。
#include
x(char *p)
{ int i,j;
for(i=j=0;*(p+i)!=’\0’;i++)
if(*(p+i)>=’j’)
{ *(p+j)=*(p+i);j++;}
*(p+j)=’\0’;
}
main()
{ char ch[]=“dgfhjgyuhgf” ;
x(ch);
puts(ch);
}
9.以下函数经编译、连接后得到的执行文件为abc.exe,若在系统的命令状态下输入命令行:
abc anhui maanshan,则输出是 。
main(int argc,char *argv[])
{ while(argc>1)
{++argv;
printf(”%s\n”,*argv);
--argc;
}
}
10. 下列程序的运行结果是 。
struct a
{ double i;
char array[25];
};
main()
{ struct a b;
printf(“%d\n” ,sizeof(struct a));
}
四、编程题(共15分)
1.用递归法将一个位数不确定的整数n转换成字符串(如输入数字12345,应输出字符串“12345”
)。(
7分)
2.利用指向结构体的指针编制一个程序,实现输入五个学生的学号(num)、计算机期中成绩(mid)和期
末成绩(end),
然后计算其平均成绩(ave)并输出其成绩表。(8分)
一、选择题(每小题各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中***域的正确引用方式是 。
struct student
{ char name[20];
int ***;
}stu,*p;
p=&stu;
A)(*p).*** B)p-> stu.*** C)(*p).stu.***
D)p.stu.***
6.下列程序的运行结果是 。
#include
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
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
for(i=0;i
{ if ( ) printf(“\n” );
printf(“%5d”,a );
}
}
2.下面程序实现在字符串a中下标值为偶数的元素由小到大排序,其它元素不变,请填空。
#include
main()
{ char a[]=“labchmfye” ,t;
int i,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9; )
if( )
{t=a;a=a[j];a[j]=t;j++;}
puts(a);
}
3.要使下列程序输出5,请填空。
#include
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!=’\0’ && y!=’\0’)
if (x = = y) printf(“%c”, );
else i++;
7.能正确表示“当x的取值在[200,210]和[300,310]范围内为真,否则为假”的
表达式是 。
8.若int型变量a=21,则执行以下语句后a的值是 。
a+=a-=a+a;
三、阅读下列程序,写出运行结果(每题3分,共30分)
1.下列程序的运行结果是 。
#include
main ()
{ int i;
for(i=1;i<=5;i++)
{if(i%2) printf(“*” );
else continue;
printf(“#” );
}
printf(“$\n” );
}
2.在输入18并回车后,下列程序的运行结果是 。
main()
{ int x,y,i,j,u,v,a[8];
scanf(“%d”,&x);
y=x;i=0;
do
{ u=y/2;
a=y%2;
i++;y=u;
}while(y>=1);
for(j=i-1;j>=0;j--)
printf(“%d”,a[j]);
}
3. 下列程序的运行结果是 。
#include
main()
{ char str[]=“ASWWLIAHIRXNQ”,c;
int k;
for(k=2;(c=str[k])!=’\0’;k++)
{ switch(c)
{ case ‘L’:continue;
case ‘I’:++k;break;
default:putchar(c);continue;
}
putchar(’*’);
}
}
4. 下列程序的运行结果是 。
main ( )
{ int i, j;
static int a[10]={1,1,1,1,1,1,1,1,1,1};
for (i=0;i<10;i++)
for (j=0;j
a=a+a[j];
for (i=0;i<10;i++)
printf(“%d,”,a);
}
5. 下列程序的运行结果是 。
main ( )
{ int a=0, n=5;
for( ; ; )
{ a++; n--;
printf(“%d,”,a);
a=n;
if (n==0) break; }
printf(“%d” ,a); }
6. 下列程序的运行结果是 。
main ( )
{ static int a[10],i;
for (i=0;i<10;i++)
a=i+1;
for (i=0;i<10;i=i+2)
printf(“%d” ,*(a+i));
}
7.下列程序的运行结果是 。
#include
function(int a,int b)
{ static int t=0,i=2;
i+=t+1;
t=i+a+b;
return(t);
}
main()
{ int s=4,t=1,p;
p=function(s,t);printf(“%d,” ,p);
p=function(s,t);printf(“%d\n” ,p);
}
8. 下列程序的运行结果是 。
#include
x(char *p)
{ int i,j;
for(i=j=0;*(p+i)!=’\0’;i++)
if(*(p+i)>=’j’)
{ *(p+j)=*(p+i);j++;}
*(p+j)=’\0’;
}
main()
{ char ch[]=“dgfhjgyuhgf” ;
x(ch);
puts(ch);
}
9.以下函数经编译、连接后得到的执行文件为abc.exe,若在系统的命令状态下输入命令行:
abc anhui maanshan,则输出是 。
main(int argc,char *argv[])
{ while(argc>1)
{++argv;
printf(”%s\n”,*argv);
--argc;
}
}
10. 下列程序的运行结果是 。
struct a
{ double i;
char array[25];
};
main()
{ struct a b;
printf(“%d\n” ,sizeof(struct a));
}
四、编程题(共15分)
1.用递归法将一个位数不确定的整数n转换成字符串(如输入数字12345,应输出字符串“12345”
)。(
7分)
2.利用指向结构体的指针编制一个程序,实现输入五个学生的学号(num)、计算机期中成绩(mid)和期
末成绩(end),
然后计算其平均成绩(ave)并输出其成绩表。(8分