c语言的程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:35:59
从键盘上输入一行字符(不多于40个 ,以回车换行符作为输入结束标记),将其中的大写字母改成小写字母,其他字符不变,然后逆序输出。
main()
{char a[40];
int n=0;
do{
scanf("%c",&a[n]);
if(________)a[n]+=32;
n++;}
while(________!='\n');
n=n-2;
while(n>0)
printf("%c",a[n--]);
}
填 a[n]>='A'&&a[n]<='Z'和 a[n-1]
请问第2个空为什么要填a[n-1] 而不能填a[n]


又是你啊
刚才我第二空搞错了,不好意思
a[n]暂时还没输入,要用a[n-1]
但第一空我那也可以,'A'的ASII码是65,'Z'的ASII码是90
我帮你在vc6.0上运行了,可以输出正确结果

if(a[n]>='A'&&a[n]<='Z')a[n]+=32;
n++;} 过后.因为n++...n从0变为1了..装的字符串是从n=0开始的..所以要全部输出就要n-1,,如果填a[n]的话就会漏一个字符

因为n++使a[n]成为一个没有赋值的元素(也就是下一个要读取的字符保存的位置),而a[n-1]才是刚才读取的字符。