C初学者向各位高手请教关于FOR循环的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 04:37:14
现编写一个简单示例时,遇到了意外的结果,例子如下:
# include <stdio.h>
void main()
{

int i=0;
for(i;i <100;++i)
{
char a ;

printf("put the lower char \n");

scanf("%c",&a);

a=a+'A'-'a';

printf("the heigher char is %c \n",a);

}

}

只是个小例子,实现循环输入,把输入的小写字母改成大写。比如说输入 a ,但得到的结果是

put the lower char
a
the heigher char is A
put the lower char
the heigher char is ?
put the lower char

相当于循环了两次,这是为什么呢,在程序本身看来不应该是这样的结果,有些糊涂了,望各位高手不吝赐教,谢谢!

给你修改了。
char a ; 声明放到循环体外面

for(i=0;i<100;i++) -- 这样写正规,你那样也可以,因为你并不打算精确输入100个字符

if (a >= 'a' && a <= 'z') a=a+'A'-'a';
这个条件是说“如果读入的是小写字母”,则变大写字母,其它符号不变,例如空白,大写字母,数字,回车。

# include <stdio.h>
void main()
{
char a ;
int i=0;
printf("input the lower chars will output upperchars \n");
for(i=0;i <100;i++)
{
scanf("%c",&a);
if (a >= 'a' && a <= 'z') a=a+'A'-'a';
printf("%c",a);
}
}

这样,你可以输任意100个字符,例如:
abc ABC 567 (输入)
ABC ABC 567 (输出)
x (输入)
X (输出)
......(输入)
......(输出)

用 Ctrl+C 结束程序运行

++i 换成i++看看
C语言都差不多忘了

scanf("%c",&a);

a=a+'A'-'a';
在这两行中间加一句getchar();就行了。系统把你的回车也输入了。还有,把那个char a;放到外面去,读起来方便。