c语言:用getchar函数读入两个字符给c1,c2,用putchar和printf输出。思考问题 | 您所在的位置:网站首页 › 0到9对应的ascii码值 › c语言:用getchar函数读入两个字符给c1,c2,用putchar和printf输出。思考问题 |
用getchar函数读入两个字符给c1,c2,分别用putchar和printf输出这两个字符。思考以下问题: (1)变量c1和c2定义为字符型还是整型?或二者皆可? (2)要求输出c1和c2的ASCII码,应如何处理? (3)整形变量和字符变量是否在任何情况下都可以互相代替?char c1, c2;和int c1, c2;是否无条件等价? 程序: #include int main() { char c1, c2; printf("请输入两个字符c1,c2:");//输入的两个字符之间没有空格,连续输入 c1 = getchar(); c2 = getchar(); printf("用putchar输出结果为:"); putchar(c1); putchar(c2); printf("\n"); printf("用printf输出结果为:"); printf("%c %c\n",c1,c2); /*printf("%d,%d\n", c1, c2);*/ return 0; } 结果: 请输入两个字符c1,c2:ab 用putchar输出结果为:ab 用printf输出结果为:a b 请按任意键继续. . . 注意:输入的两个字符之间没有空格,连续输入。 如果分两行输入a,b,则: 请输入两个字符c1,c2:a 用putchar输出结果为:a
用printf输出结果为:a
请按任意键继续. . . 输入a后按回车键,结果还未来得及输入b,程序马上输出了其下4行结果(包括2个空行)。用putchar输出c1,就输出了字符a,在输出c2时,就把换行符转换为回车和换行两个操作,输出一个换行,后面的printf("\n");又输出一个换行,所以就相当于输出一个空行,此行不显示任何字符。后面用printf函数输出c1和c2,同样也输出了字符a和一个空行。 下面回答问题: (1)c1和c2可以定义为字符型或整型,二者皆可。 (2)用printf函数输出,使用%d格式符,即: printf("%d,%d\n", c1, c2); 结果为:97,98 (3)字符变量占1个字节,整型变量占2或4个字节。故整型变量在可输出字符的范围内(ASCII码为0到127之间的字符)是可以与字符型数据互相转换的。如果整数在此范围外,不能代替。 拓展延伸: 程序1: #include int main() { int c1, c2; printf("请输入两个整数c1,c2:"); scanf("%d,%d", &c1, &c2); printf("按字符输出结果为:\n"); printf("%c,%c\n", c1, c2); printf("按ASCII码输出结果为:\n"); printf("%d,%d\n", c1, c2); return 0; } 结果: 请输入两个整数c1,c2:97,98 按字符输出结果为: a,b 按ASCII码输出结果为: 97,98 请按任意键继续. . . 程序2: #include int main() { char c1, c2; int i1, i2; printf("请输入两个字符c1,c2:"); scanf("%c,%c", &c1, &c2); i1 = c1; i2 = c2; printf("按字符输出结果为:\n"); printf("%c,%c\n", c1, c2); printf("按整数输出结果为:\n"); printf("%d,%d\n", c1, c2); return 0; } 结果: 请输入两个字符c1,c2:a,b 按字符输出结果为: a,b 按整数输出结果为: 97,98 请按任意键继续. . . 程序3: #include int main() { char c1, c2; int i1, i2; printf("请输入两个整数i1,i2:"); scanf("%d,%d", &i1, &i2); c1 = i1; c2 = i2; printf("按字符输出结果为:\n"); printf("%c,%c\n", c1, c2); printf("按整数输出结果为:\n"); printf("%d,%d\n", c1, c2); return 0; } 结果: 请输入两个整数i1,i2:289,330 按字符输出结果为: !,J 按整数输出结果为: 33,74 请按任意键继续. . . 整型变量i1和i2在内存中占2或4个字节,而字符变量c1,c2只占一个字节,unsigned char类型可存放0到255的范围内整数,signed char类型可存放-128到127的范围内整数,现在输入的i1和i2的的值已经超过0到255的范围,i1和i2在内存中的存储情况如下表所示:(为简单起见,用两个字节表示) 高8位 低8位 i1 00000001 00100001 i2 00000001 01001010 数据是整数74,是字符i1低8位的数据是整数33,是字符’!’的ASCII码值,故用字符输出c1得到字符’!’,i2低8位的’j’的ASCII码值,故用字符输出c1得到字符’j’。 本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1740275 |
CopyRight 2018-2019 实验室设备网 版权所有 |