| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 329 人关注过本帖
标题:scanf的问题
只看楼主 加入收藏
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:4 
scanf的问题
程序代码:
# include <stdio.h>

int main(void)
{
    char a;
    printf("输入一个大写字母,程序将它转换为小写:");
    do
    {
        scanf("%c%*c", &a);
        if (a < 'A' || a > 'Z')
            printf("输入错误
");
        else
        {
            a += 32;
            printf("转换字母为:%c
", a);
        }
    } while(a < 'A' || a > 'Z');
    
    return 0;
}



如何做到输入错误后再让客户输入一次而且输入正确时不需要再输入?
2015-02-27 11:12
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:4 
#include <stdio.h>
#include <string.h>

char getAToZ(void) {
    char input, ch;

    while(scanf("%c", &input) != 1 ||
            !(isalpha(input)) ||
            islower(input)) {
        while((ch = getchar()) != '\n');

        puts("输入的不是大写字母\n"
             "请重新输入一个大写字母\n"
             "比如 A, B, C ...");
    }

    return input;
}

int main(void) {
    printf("输入一个大写字母,程序将它转换为小写:\n");
    printf("%c\n", tolower(getAToZ()));
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-02-27 12:33
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:4 
肯定是一个循环判断呗。

授人以鱼,不如授人以渔
2015-02-27 12:56
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
收藏
得分:0 
以下是引用longwu9t在2015-2-27 12:33:32的发言:

#include <stdio.h>
#include <string.h>

char getAToZ(void) {
    char input, ch;

    while(scanf("%c", &input) != 1 ||
            !(isalpha(input)) ||
            islower(input)) {
        while((ch = getchar()) != '\n');

        puts("输入的不是大写字母\n"
             "请重新输入一个大写字母\n"
             "比如 A, B, C ...");
    }

    return input;
}

int main(void) {
    printf("输入一个大写字母,程序将它转换为小写:\n");
    printf("%c\n", tolower(getAToZ()));
    return 0;
}

谢谢~
2015-02-27 21:13
lmlm1001
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:4
帖 子:107
专家分:550
注 册:2015-3-1
收藏
得分:4 
do {
    scanf ("%c%*c", &a);
    printf ("输入错误\n");
} while (a < 'A' || a > 'Z');
2015-03-01 15:30
快速回复:scanf的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012286 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved