主题:关于C程序与打印ASCII码
<C Primer Plus>这本书中有一题,题目如下:
编写一个程序,要求输入一个ASCII码值(如65),然后输出相应的的字符。
题我是做出来了,然后我又想增加点东西进去程序中。比如,我运行后,按提示输入A,然后屏幕输出65,之后便不能再输入了。
意思就是我加了暂停函数,只能输入一次,程序不是很理想。我希望程序可以无限次的输入/输出,于是我想到循环,可是怎么循环?
我找什么条件来判断?我如何控制程序是否结束?其二:
我输入两个字符,如A和B,我事先知道ASCII码分别是65和66,但程序只是打印了我输入的第一个字符A的结果是65,可是我输入了两个呀。B呢?
然后我又想,如果我连续输入两个字符(这不是书中题目的本意,但那又怎样),能不能先打印第一个字符的ASCII码紧接着再打印第二个的
ASCII码?难道我要定义两个变量?如果我想输入3个字符,那得定义3个变量?100个呢?定义100个?明显不太现实。我仍然希望,程序可以
无限次接收输入(也许不能也不会,无限次的输入)。因为,程序的制作者知道他自己的程序是怎么回事。。但如果没看过源码的人,他们怎么知道?
就算我在程序一开始就用printf()提示用户可以输入几次,但这样的结果,仍然让人感觉缺少灵活性。其三:
仍然是我的程序中,什么都不键入直接按回车,屏幕输出ASCII码为10。这是为何?我查过,有这么一种回答,我只复制部分
“ASCII码值从32(空格)到128(€)之间的是可见字符,其它的都是不可见字符,如果你想根据ASCII码值打印字符,你要控制输入值必须在32-128之间,其它的都算越界。”
以上就是。值为10的字符在ASCII码表中为^Jcarriage return。算是不可见吧,但按回车偏偏就输出了,还是Tab键,也能输出对应的009,为什么?
然后是,那个人说“ASCII码值从32(空格)到128(€)之间的是可见字符”可我只找到32到126的,127和128呢?键盘上怎么打出来?
以上的,其一、二、三就是我现在暂时遇到的问题,不是我不想百度,只是不知道该怎样描述,所以还是选择发帖。我已经发过问问,可是被我选为满意答案的那个人的源码不能运行,我以为他写的源码没错。我的环境是Dev-c++.
请大神帮帮忙,按照意思,写出能在我的环境下顺利运行的程序,只要程序能运行,我会努力试图理解思想。为了方便,我把一、二两个问题结合起来出个题目.以下:
编写一个程序,要求输入ASCII码值(如65),然后输出相应的的字符。可以重复输入/输出,如果同时输入两个ASCII码值(包括两个),则统计输入的个数并按顺序打印各个ASCII码值对应的字符,如同时输入32,则屏幕输出:输入两个ASCII值,3为51 2为50。
另外,我只是一个新手,一个什么都不懂的新手,刚刚看完数据类型,很多仍然不懂,请尽可能多些注释。请不要喷我,更不要拿砖拍我~~。如果看不明白我的问题,
请指明,我会重新说明看不明白的地方,谢谢。另外,我附上我写的源码,可以的话,给些建议,谢谢。小弟无以回报,唯有感谢再感谢。以下便是:
#include <stdio.h>
#include <stdlib.h>
main(void)
{
printf("输入单个数字、字母、符号,按下回车键将显示所输入字符的ASCII码\n");
char cha;
scanf("%c",&cha);
printf("输入字符的ASCII码是 %d \n",cha);
system("pause");
}
小弟刚来这论坛.一来就求助,见谅见谅啊~~
编写一个程序,要求输入一个ASCII码值(如65),然后输出相应的的字符。
题我是做出来了,然后我又想增加点东西进去程序中。比如,我运行后,按提示输入A,然后屏幕输出65,之后便不能再输入了。
意思就是我加了暂停函数,只能输入一次,程序不是很理想。我希望程序可以无限次的输入/输出,于是我想到循环,可是怎么循环?
我找什么条件来判断?我如何控制程序是否结束?其二:
我输入两个字符,如A和B,我事先知道ASCII码分别是65和66,但程序只是打印了我输入的第一个字符A的结果是65,可是我输入了两个呀。B呢?
然后我又想,如果我连续输入两个字符(这不是书中题目的本意,但那又怎样),能不能先打印第一个字符的ASCII码紧接着再打印第二个的
ASCII码?难道我要定义两个变量?如果我想输入3个字符,那得定义3个变量?100个呢?定义100个?明显不太现实。我仍然希望,程序可以
无限次接收输入(也许不能也不会,无限次的输入)。因为,程序的制作者知道他自己的程序是怎么回事。。但如果没看过源码的人,他们怎么知道?
就算我在程序一开始就用printf()提示用户可以输入几次,但这样的结果,仍然让人感觉缺少灵活性。其三:
仍然是我的程序中,什么都不键入直接按回车,屏幕输出ASCII码为10。这是为何?我查过,有这么一种回答,我只复制部分
“ASCII码值从32(空格)到128(€)之间的是可见字符,其它的都是不可见字符,如果你想根据ASCII码值打印字符,你要控制输入值必须在32-128之间,其它的都算越界。”
以上就是。值为10的字符在ASCII码表中为^Jcarriage return。算是不可见吧,但按回车偏偏就输出了,还是Tab键,也能输出对应的009,为什么?
然后是,那个人说“ASCII码值从32(空格)到128(€)之间的是可见字符”可我只找到32到126的,127和128呢?键盘上怎么打出来?
以上的,其一、二、三就是我现在暂时遇到的问题,不是我不想百度,只是不知道该怎样描述,所以还是选择发帖。我已经发过问问,可是被我选为满意答案的那个人的源码不能运行,我以为他写的源码没错。我的环境是Dev-c++.
请大神帮帮忙,按照意思,写出能在我的环境下顺利运行的程序,只要程序能运行,我会努力试图理解思想。为了方便,我把一、二两个问题结合起来出个题目.以下:
编写一个程序,要求输入ASCII码值(如65),然后输出相应的的字符。可以重复输入/输出,如果同时输入两个ASCII码值(包括两个),则统计输入的个数并按顺序打印各个ASCII码值对应的字符,如同时输入32,则屏幕输出:输入两个ASCII值,3为51 2为50。
另外,我只是一个新手,一个什么都不懂的新手,刚刚看完数据类型,很多仍然不懂,请尽可能多些注释。请不要喷我,更不要拿砖拍我~~。如果看不明白我的问题,
请指明,我会重新说明看不明白的地方,谢谢。另外,我附上我写的源码,可以的话,给些建议,谢谢。小弟无以回报,唯有感谢再感谢。以下便是:
#include <stdio.h>
#include <stdlib.h>
main(void)
{
printf("输入单个数字、字母、符号,按下回车键将显示所输入字符的ASCII码\n");
char cha;
scanf("%c",&cha);
printf("输入字符的ASCII码是 %d \n",cha);
system("pause");
}
小弟刚来这论坛.一来就求助,见谅见谅啊~~