C语言阅读题2道

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:23:44
1. 输入7 3 0 3 0 3 1 2 9 7 6 0 <回车>后,下列程序的输出结果是_______。
#include <stdio.h>
void main( )
{
int j, k, sub, x;
int a[5];

for(j=1; j<=2; j++){
for(k=0; k<5; k++)
scanf(“%d”, &a[k]);
scanf(“%d”, &x);
sub=-1;
for(k=0; k<5; k++)
if(a[k]==x) sub=k;
printf("%d#", sub);
}
}
我算出来是1#3#-1# 答案是3#-1#,为什么呐?

2.输入how are you?<回车>后,下列程序的输出结果是_______。
#include <stdio.h>
void main( )
{
int word;
char ch;

word=0;
while((ch=getchar())!='?'){
if(ch==' ') word=0;
else if(word==0){
word=1;
if(ch<='z'&&ch>='a')
ch=ch-'a'+'A';
}
putchar(ch);
}
}
为什么我觉得答案是HOW ARE YOU?我错在

第一题从 for(k=0; k<5; k++) if(a[k]==x) sub=k; 可以看出.因为不是到k=1就停止循环,而是一直到k=4.

第二题关键:if(ch==' ') word=0; 和 word=1; 意思是如果读的这个字母前面已经有一个字母的话,就不把它变为大写.如果前面是个空格,就变.而第一个字母也会变,因为一开始word=0

for(k=0; k<5; k++)
if(a[k]==x) sub=k;
虽然说a[1]也是等于x,但是a[3]也等于x
所以sub=1被覆盖为3

while((ch=getchar())!='?')

while的判断条件是ch不为'?',所以‘?’没有被putchar
答案是HAO ARE YOU

初学C++。路过。
不过看楼上好像很对哦。