鱼C论坛

 找回密码
 立即注册
查看: 1496|回复: 4

[已解决]有没有一种方法可以输入数字和字母是不同的走向

[复制链接]
发表于 2021-4-22 18:17:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小小心心 于 2021-4-22 18:17 编辑

老师布置了作业;
然后不会写了TAT

第一题

要求输入大写字母得小写字母,然后输入数字得数字字符。
怎么样才能输入数字得到数字,输入字母得到字母……

1
#include<stdio.h>
main()
{
    char x;
    printf("请输入大写字母\n");
    x = getchar() + 32;
    putchar(x);
}

2
#include<stdio.h>
main()
{
    int x;
    printf("请输入0~9的一个数字\n");
    scanf_s("%d", &x);
    putchar(x+'0');
}   
   

这两个怎么整到一个程序里……





第二题
#include<stdio.h>
void main()
{
    int x, y=0;
    printf("请输入x\n"); scanf_s("%d", &x);
  
   
     if (x > -5 && x < 10)
         printf("y=%d", y = x);
       if (0 == x)
            printf("y=%d", y = --x);
       if (x > 0 && x < 10)
            printf("y=%d", y = ++x);

        else printf("???");
        
} 这算的是一个简单数学题,但是我输入“-0-0-00--”还能得到y值,而不是”???“
最佳答案
2021-4-22 20:02:11
本帖最后由 yuxijian2020 于 2021-4-22 20:04 编辑

第一题整合判断就行了
大写字母  0x4a ~ 0x5a  输入这个区间的就转小写
小写字母  0x61 ~ 0x7a  输入这个区间的就转大写
数字字符  0x30 ~ 0x39 输入1 ~ 9  直接加 0x30就转成字符了
void ChangerAndPrint()
{
    printf_s("请输入字符或数字:");
    char c = getchar();

    if (c >= 'A' && c <= 'Z')
    {
        c += 0x20;
        printf_s("输入的是大写字母!\n");
    }
    else if (c >= 'a' && c <= 'Z')
    {
        c -= 0x20;
        printf_s("输入的是小写字母!\n");
    }
    else if (c <= '0' || c >= '9')
    {
        printf_s("输入的是数字\n");
    }
    else
    {
        printf_s("输入的不是数字也不是字母!\n");
    }

    printf_s("转换后为: %c", c);
}

第二题   是因为你限定了 %d   就是说 scanf 只读取整数
你输入"-0-0-00--"   scanf 只读取了 -0   后面的字符因为不是整数了  还存在于缓冲区
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-22 20:02:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yuxijian2020 于 2021-4-22 20:04 编辑

第一题整合判断就行了
大写字母  0x4a ~ 0x5a  输入这个区间的就转小写
小写字母  0x61 ~ 0x7a  输入这个区间的就转大写
数字字符  0x30 ~ 0x39 输入1 ~ 9  直接加 0x30就转成字符了
void ChangerAndPrint()
{
    printf_s("请输入字符或数字:");
    char c = getchar();

    if (c >= 'A' && c <= 'Z')
    {
        c += 0x20;
        printf_s("输入的是大写字母!\n");
    }
    else if (c >= 'a' && c <= 'Z')
    {
        c -= 0x20;
        printf_s("输入的是小写字母!\n");
    }
    else if (c <= '0' || c >= '9')
    {
        printf_s("输入的是数字\n");
    }
    else
    {
        printf_s("输入的不是数字也不是字母!\n");
    }

    printf_s("转换后为: %c", c);
}

第二题   是因为你限定了 %d   就是说 scanf 只读取整数
你输入"-0-0-00--"   scanf 只读取了 -0   后面的字符因为不是整数了  还存在于缓冲区
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 21:31:56 | 显示全部楼层
yuxijian2020 发表于 2021-4-22 20:02
第一题整合判断就行了
大写字母  0x4a ~ 0x5a  输入这个区间的就转小写
小写字母  0x61 ~ 0x7a  输入这个 ...

哇,看不明白主函数是什么,然后改成了main(),就可以运行了,

输入ffff可以得到f,
输入F也是得到f
输入90得到9
输入++可以显示出“输入的是数字”哈哈哈哈哈然后输出+
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 21:44:23 | 显示全部楼层
yuxijian2020 发表于 2021-4-22 20:02
第一题整合判断就行了
大写字母  0x4a ~ 0x5a  输入这个区间的就转小写
小写字母  0x61 ~ 0x7a  输入这个 ...

我改了一下else if (c <= '0' || c >= '9')改成&&,但是这样输入数字也会导致显示"输入的不是数字也不是字母!\n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-22 22:53:59 | 显示全部楼层
小小心心 发表于 2021-4-22 21:44
我改了一下else if (c = '9')改成&&,但是这样输入数字也会导致显示"输入的不是数字也不是字母!\n
else if (c <= '0' || c >= '9')

条件错了 不好意思
else if (c >= '0' || c <= '9')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 15:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表