| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 695 人关注过本帖
标题:关于二次输入的问题
只看楼主 加入收藏
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:10 
关于二次输入的问题
程序要求如下:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
我的思路是,输入一个字母,如果是M,W,F的话可以直接输出结果,如果要是T,S需要二次判断,也就是在输入第二个字母来确认结果,可是第二次就输入不了,程序如下,求大能解答,这种方法可行吗
程序代码:
#include<stdio.h>
void main()
{
    char letter;
    printf("输入第一个字母:");
    if((letter=getchar())=='t')
    {
        printf("输入第二个字母:");
        letter=getchar();
        if(letter=='u')
            printf("Tuesday!\n");
        else if(letter=='h')
            printf("Thursday!\n");
        else printf("ERROR!\n");
    }
    else if(letter=='s')
    {
        printf("输入第二个字母:");
        letter=getchar();
        if(letter=='u')
            printf("Sunday!\n");
        else printf("Saturday!\n");
    }
    else if(letter=='m')
        printf("Monday!\n");
    else if(letter=='w')
        printf("Wednesday!\n");
    else if(letter=='f')
        printf("Friday!\n");
    else printf("ERROR!\n");
}
搜索更多相关主题的帖子: letter 字母 
2012-11-01 08:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:19 
清空缓冲区
在下一个getchar()之前
fflush(stdin);

DO IT YOURSELF !
2012-11-01 08:58
宸虞熙
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-11-1
收藏
得分:1 
回复 楼主 核晴核理
你那个char letter;定义的是字符,只能接收一个之母,而你第二再接收就会覆盖之前的赋值,你再定义一个字符变量接收试下,应该没问题了。
2012-11-01 09:05
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:0 
回复 2楼 wp231957
果然好用,通过了,大能威武,能帮忙剖析一下吗?为什么要清缓冲区呢?
2012-11-01 09:05
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我摘抄的 :

让我们看看 MSDN 对于 getchar() 的说明:   从 stdin 读取单个字符,并让相关的文件指针增加使其指向下一个字符。   即是说,getchar() 并不是用户输入一个字符就读取那一个字符,而是把用户的输入一次性放到内存中的一个缓冲区中,再逐个读取。

具体的还有很多  可以去百度一下

DO IT YOURSELF !
2012-11-01 09:10
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:0 
回复 3楼 宸虞熙
刚刚试过了,输入第一次之后再输入第二次直接退出了
2012-11-01 09:11
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:0 
回复 5楼 wp231957
ok,了解~
2012-11-01 09:13
宸虞熙
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2012-11-1
收藏
得分:0 
回复 楼主 核晴核理
我知道,在printf("输入第二个字母:");
后写入char letter2;重新定义一个变量,把那个循环里的letter都改为letter2
2012-11-01 09:20
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:0 
回复 8楼 宸虞熙
1,我试试


[ 本帖最后由 核晴核理 于 2012-11-1 09:36 编辑 ]
2012-11-01 09:35
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
收藏
得分:0 
回复 8楼 宸虞熙
#include<stdio.h>
void main()
{
    char letter;
    printf("输入第一个字母:");
    if((letter=getchar())=='t')
    {
        printf("输入第二个字母:");
        char letter1;
        letter1=getchar();
        if(letter1=='u')
            printf("Tuesday!\n");
        else if(letter1=='h')
            printf("Thursday!\n");
        else printf("ERROR!\n");
    }
    else if(letter=='s')
    {
        printf("输入第二个字母:");
        char letter1;
        letter1=getchar();
        if(letter1=='u')
            printf("Sunday!\n");
        else if(letter1=='a')
            printf("Saturday!\n");
        else printf("ERROR!\n");
    }
    else if(letter=='m')
        printf("Monday!\n");
    else if(letter=='w')
        printf("Wednesday!\n");
    else if(letter=='f')
        printf("Friday!\n");
    else printf("ERROR!\n");
}

E:\vc++6.0,\Microsoft Visual Studio\Myproject\31 第一个字母星期\判断日期.c(9) : error C2143: syntax error : missing ';' before 'type'
E:\vc++6.0,\Microsoft Visual Studio\Myproject\31 第一个字母星期\判断日期.c(10) : error C2065: 'letter1' : undeclared identifier
E:\vc++6.0,\Microsoft Visual Studio\Myproject\31 第一个字母星期\判断日期.c(20) : error C2143: syntax error : missing ';' before 'type'
执行 cl.exe 时出错.
2012-11-01 09:39
快速回复:关于二次输入的问题
数据加载中...
 
   



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

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