编程从键盘输入一个大写英文字符,将其转换为小写字符显示并显示出它的十进制,十六的 ASCI码。
前言:
练习c语言
本来想写高级一点,奈何.,.......
本来想判断不是大写,就让用户重新输入的, 我记得比特老师讲过,要不嗯
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//1.编程从键盘输入一个大写英文字符,将其转换为小写字符显示并显示出它的十进制,十六的 ASCI码。(10分)
int main()
{
char upper = '\0'; // 初始化为空字符
char lower = '\0'; // 初始化为空字符
scanf("%c", &lower);
if (lower > 'a' && lower < 'z')
{
//则判断为小写字母,则输出错误,提示重新输入
printf("请输入小写字母\n");
}
else if (lower >= 'A' && lower < 'Z')
{
//转换为小写字母
upper = lower + 32;
}
else
printf("输入错误,请重新输入");
printf("大写字母为:%c \n", upper);
printf("十进制为:%d \n", upper);
printf("十六进制为:%x \n", upper);
return 0;
}
好了,加了一个判断条件
!judge 不等于0就为真,就继续执行
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//1.编程从键盘输入一个大写英文字符,将其转换为小写字符显示并显示出它的十进制,十六的 ASCI码。(10分)
int main()
{
char upper = '\0'; // 初始化为空字符
char lower = '\0'; // 初始化为空字符
int judge = 0;
while (!judge)
{
scanf("%c", &lower);
if (lower >= 'a' && lower <= 'z')
{
//则判断为小写字母,则输出错误,提示重新输入
printf("请输入小写字母\n");
judge = 0; //让条件为为假,就是判断为真,继续执行当前循环
}
else if (lower >= 'A' && lower <= 'Z')
{
//转换为小写字母
upper = lower + 32;
judge = 1; //跳出循环
}
else
{
printf("输入错误,请重新输入\n");
judge = 0; //让条件为为假,就是判断为真,继续执行当前循环
}
}
printf("大写字母为:%c \n", upper);
printf("十进制为:%d \n", upper);
printf("十六进制为:%x \n", upper);
return 0;
}
出现了这个错误,就是有两个字符,有一个字符,还有一个\n,所以需要清空缓存区
改进
加一个清空缓存区的操作
while (getchar() != '\n');
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//1.编程从键盘输入一个大写英文字符,将其转换为小写字符显示并显示出它的十进制,十六的 ASCI码。(10分)
int main()
{
char upper = '\0'; // 初始化为空字符
char lower = '\0'; // 初始化为空字符
int judge = 0;
while (!judge)
{
scanf("%c", &lower);
if (lower >= 'a' && lower <= 'z')
{
//则判断为小写字母,则输出错误,提示重新输入
printf("请输入大写字母\n");
judge = 0; //让条件为为假,就是判断为真,继续执行当前循环
}
else if (lower >= 'A' && lower <= 'Z')
{
//转换为小写字母
upper = lower + 32;
judge = 1; //跳出循环
}
else
{
printf("输入错误,请重新输入\n");
judge = 0; //让条件为为假,就是判断为真,继续执行当前循环
}
// 清空输入缓冲区,防止回车键影响下次输入
while (getchar() != '\n');
}
printf("大写字母为:%c \n", upper);
printf("十进制为:%d \n", upper);
printf("十六进制为:%x \n", upper); //%x指的是16进制的数字
return 0;
}