|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:请编写程序,输入一行字符(用回车符结束),输出每个字符以及与之对应的ASCII码值,要求每行输出三对。
程序1:
#include <stdio.h>
int main(void)
{
char ch;
int i=0;
while((ch=getchar())!='\n')
{
i++;
printf("字符为%c,对应地ASCII值为%d;",ch,ch);
if(i%3==0) printf("\n");
}
return 0;
}
输出结果正确:如:
输入:
ABCDEG
字符为A,对应地ASCII值为65;字符为B,对应地ASCII值为66;字符为C,对应地ASCII值为67;
字符为D,对应地ASCII值为68;字符为E,对应地ASCII值为69;字符为G,对应地ASCII值为71;
Press any key to continue
但是改为程序2(只进行了微调):
#include <stdio.h>
int main(void)
{
char ch;
int i=0;
ch=getchar();
while(ch!='\n')
{
i++;
printf("字符为%c,对应地ASCII值为%d;",ch,ch);
if(i%3==0) printf("\n");
}
return 0;
}
同样的输入,结果却一直循环输出,请问为什么?
3.若不用字符的专用输入函数getchar(),而改用scanf函数对字符进行同样的操作,程序应该怎样改呢?谢谢
程序1和程序2的主要区别在于程序1使用了while循环和getchar()函数来逐个读取输入的字符,而程序2在一开始就使用了getchar()函数来读取输入的字符,然后进入while循环。这样的设计导致了程序2无法在每次循环中获取新的输入字符,因此导致了无限循环输出。
要使用scanf函数对字符进行同样的操作,可以按照以下方式修改程序:
- #include <stdio.h>
- int main(void)
- {
- char ch;
- int i = 0;
- while (scanf("%c", &ch) != EOF && ch != '\n')
- {
- i++;
- printf("字符为%c,对应地ASCII值为%d;", ch, ch);
- if (i % 3 == 0)
- printf("\n");
- }
- return 0;
- }
复制代码
这样修改后,程序将能够正确地读取输入字符并输出相应的ASCII码值,同时按照每行三对的格式进行输出。
|
|