{
int i=5;
char c[6]=‖abcd‖; do {
c[i]=c[i-1]; }while(--i>0); puts(c);
}
4. 以下程序的输出是 。 fi
main( )
a: a b c {
e f g char a[3][4]={\
h i j int k;
k a[k][1] for(k=1;k<3;k++)
1 a11=f putchar(a[k][1]);
2 a21=i }
5. 以下程序的输出是 。(□表示空格,↙表示回车)AHaMA #include \main( ) {
char a[80],c='h'; int j=0;
scanf(\ a:AhaMA while(a[j]!='\\0')
{ if (a[j]==c ) 判断是否为小写的h
a[j]=a[j]-32; 小写变大写
else if ( a[j]==c-32 ) 判断是否为大写的H
a[j]=a[j]+32; 大写变小写
j++; }
puts(a); }
输入:AhaMA□Aha↙
6. 读下列C程序,若输入字符串Examination,请写出输出结果。
#include
char str[20]; int i=0;
int count[2]={ 0}; gets(str); do {
switch(str[i++])
36
c:abcd\\0 i c[i]=c[i-1] --i 5 c5=c4=\\0 abcd\\0\\0 4 4 c4=c3=d abcdd\\0 3 3 c3=c2=c abccd\\0 2 2 c2=c1=b abbcd\\0 1 1 c1=c0=1 aabcd\\0 0
{ case 'a': case 'A':
case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': count[0]++; default: count[1]++; }
} while(str[i]!='\\0');
printf(\
str:Examination\\0 count:0 0 i str[i] count[0]++ count[1]++ i++ 0 str0=E 1 1 1 str1=x 2 2 2 str2=a 1 3 是字母aeio的,count0+1且count1+1 不是的,count1+1 }
程序的输出结果为 。count[0]=6, count[1]=11 7. 以下程序的输出是 。GDABC
#include \main( ) {
char b[30];
strcpy (b,\ b:GH\\0
strcpy (&b[1],\ b:GDEF\\0 strcpy (&b[2],\ b:GDABC\\0
puts(b); }
8. 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 。
#include
char str1[ ]=\
strcpy(str1+strlen(str1)/2,\ str1+6=&str[6]=‘ ? printf(\ str1:How does she }
9. 以下程序的输出是 。LBLMNP
#include \main( ) {
char a[80]=\
j a[j] j++ b[j]=a[j] b int j=0;
0 a0 1 b1=a1=B LBNP\\0 strcat(a,b); a:ABLMNP\\0
1 a1 2 b2=a2=L LBLP\\0 while(a[j++]!='\\0')
2 a2 3 b3=a3=M LBLM\\0 b[j]=a[j];
.........b:LBLMNP\\0 puts(b);
}
10. 以下程序输出的结果是 。FGH
#include
37
#include
{
char w[ ][10]={\ for(k=1;k<3;k++)
k=1 w11:FGH printf(\
k=2 w22:KL }
11. 下面程序的运行结果是 。
7078 #include ―stdio.h‖
9198 #define LEN 4
main( ) {
int j,c;
char n[2][LEN+1]={―8980‖,‖9198‖}; for(j=LEN-1;j>=0;j--)
{ c=n[0][j]+n[1][j]-2*‘0‘; n[0][j]=c+‘0‘; }
for(j=0;j<=1;j++) puts(n[j]); }
三、程序填空题
1. 将数字变成所对应的字母,如:198变成字符串‖198‖。
main( ) {
int i=0,t,x; char a[10]; scanf(―%d‖,&x);
while( 错误!未找到引用源。 ) x!=0
{ t=x;
a[i++]= ② ; t+‘0‘ x=x/10; }
for(i=i-1;i>=0;i--)
printf(―%c‖,a[i]);
}
2. 用选择法对数组a[10]={5,7,8,9,0,3,2,1,6,4}由小到大的排序
main( ) {
int i,j,k,t,a[10]= {5,7,8,9,0,3,2,1,6,4}; for(i=0;i<9;i++)
{ ① ; k=i for(j=i+1;j<10;j++) if(a[k]>a[j])
38
w: A B C D\\0 E F G H\\0 I J K L\\0 M N O P\\0
k=j;
if( ② ) i!=k
{ t=a[k];a[k]=a[i];a[i]=t; }
}
for(i=0;i<10;i++)
printf(―M‖,a[i]);
}
3. 有10个人围成一圈,顺序排号,从第一个人开始报数,凡报到3的人退出
圈子,问留下来的是原来的第几号的那位。
main( ) {
int i,k=0,m=0,a[10]; for(i=0;i<10;i++)
a[i]=i+1;
i=0;
while( 错误!未找到引用源。 ) m<9 {
if(a[i]!=0)
k++;
if(k= =3)
{
a[i]=0;
k=0; m++;
} i++;
if(i= =10)
② ; i=0 } i=0;
while(a[i]= =0)
i++;
printf(―M‖,a[i]); }
4. 下面程序功能是检查一个4阶矩阵是否对称(即对所有的i,j,都有
num[i][j]=num[j][i] ,请填空。
#include
int num[4][4];
int i, j, flag=0; printf(\ for(i=0; i<4; i++) for(j=0; j<4; j++)
39
scanf(\ 错误!未找到引用源。 ); &num[i][j] for(i=0; i<4; i++) for(j=0; j<4; j++) if( 错误!未找到引用源。 ) num[i][j]!=num[j][i] {
flag=1; break; }
if(flag)
printf(\
else
printf(\
} 参考答案: ① &num[i][j] ②num[i][j]!= num[j][i] 第七章 函数
一、单项选择题
1. 以下函数调用语句中实参的个数是( )。B fun((exp1,exp2), (exp3,exp4,exp5)); A)1 B)2 C)4 D)5 2. 若有以下函数调用语句:
fun(a+b, (x,y), fun(n+k,d,(a,b)));
在此函数调用语句中,实参的个数是( )。A A)3 B)4 C)5 D)6
3. 若有以下调用语句,不正确的fun函数的首部是( )。D
main( ) { ……
int a[50],n; ……
fun(n, &a[9]); …… }
A)void fun(int m, int x[ ]) B)void fun(int s, int h[41]) C)void fun(int p, int *s) D)void fun(int n, int a) 4. 请读下面的程序
#include
int i; int r=1;
for(i=0; i<=n; i++)
r=r*b[i]; 将a数组中的内容累乘1*2*3*4*5*6*7*8*9
40