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

int main(void)             编译的时候提示执行不到的代码
{
    unsigned int month = 0u;
    unsigned int data = 0u;
    unsigned int years = 0u;

    printf("输入三个整数: ");
    scanf("%u %u %u\n",&month,&data,&years);
      
    if(data <=31 && data >= 1)
        {if(data == 1 || data == 21 || data == 31)
            printf("%u st\n",data);
         if(data == 2 || data == 22)
            printf("%u nd\n",data);
         if(data == 3 || data == 23)
            printf("%u rd\n",data);
         if(data >=4 && data <= 31)
            printf("%u th\n",data);
        }
    else
      printf("请输入1到31之间的整数");


    if(month >= 1 && month <= 12)
                {if(month==1)
                    printf(" January");
                 else if(month==2)
                    printf(" Februar");
                 else if(month==3)
                    printf(" March");
                 else if(month==4)
                    printf(" April");
                 else if(month==5)
                    printf(" May");
                 else if(month==6)
                    printf(" June");
                 else if(month==7)
                    printf(" July");
                 else if(month==8)
                    printf(" August");
                 else if(month==9)
                    printf(" September");
                 else if(month==10)
                    printf(" October");
                 else if(month==11)
                    printf(" November");
                 else if(month==12)
                    printf(" December");
                }
     else
       printf("请输入1到12之间的整数");

    if(years <= 1900 && years >= 2099)
       printf("%u\n",years);
    else
      printf("请输入1900到2099之间的整数");

   return 0;
}
2015-12-26 21:20
码程小伙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:81
注 册:2015-12-11
收藏
得分:5 
你的输入里面加个换行干嘛。。。。。。
2015-12-26 22:07
码程小伙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:81
注 册:2015-12-11
收藏
得分:0 
把它去掉试试
2015-12-26 22:07
pytao1991
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2015-8-26
收藏
得分:0 
回复 3楼 码程小伙
知道了
2015-12-26 22:08
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:5 
1. scanf("%u %u %u",&month,&data,&years);
多了\n
2. if(years >= 1900 && years <= 2099)
3. else if(data == 2 || data == 22)
            printf("%u nd\n",data);
         else if(data == 3 || data == 23)
            printf("%u rd\n",data);
         else if(data >=4 && data <= 31)
            printf("%u th\n",data);
    假如data是21或22或23,會同時符合if(data >=4 && data <= 31),所以除了會輸出上面的st,nd或rd外,還會再輸出多一次th

[此贴子已经被作者于2015-12-26 22:29编辑过]

2015-12-26 22:08
码程小伙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:81
注 册:2015-12-11
收藏
得分:0 
而且你看最后那个年的判断你写的什么意思呀。。。
2015-12-26 22:08
pytao1991
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2015-8-26
收藏
得分:0 
回复 5楼 ms268el8
反了
2015-12-26 22:11
pytao1991
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2015-8-26
收藏
得分:0 
回复 6楼 码程小伙
反了
2015-12-26 22:12
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
第一个,scanf()函数最好不要出现"\n"
scanf("%u %u %u\n",&month,&data,&years);


你的代码不是不工作,而是你输入的时候你蒙圈了,不知道该怎么处理"\n"了,"\n"在scanf()中用来过滤空格,制表,回车之类的字符的,因此你输入完需要的数据后还要输入一个非空格,制表,回车的字符才行.

第二个:
程序代码:
   {if(data == 1 || data == 21 || data == 31)//这里
            printf("%u st\n",data);
         if(data == 2 || data == 22)
            printf("%u nd\n",data);
         if(data == 3 || data == 23)
            printf("%u rd\n",data);
         if(data >=4 && data <= 31)     //这里
            printf("%u th\n",data);
        }


两处对date和31的关系做了两次处理,尽管程序运行能够得到你想要的结果,但后面的那次比较,"="还是不要的好.

第三:  
if(years <= 1900 && years >= 2099)
       printf("%u\n",years);
    else
      printf("请输入1900到2099之间的整数");

不论你输入什么,第一个printf()都不会执行,  具体原因去查一下逻辑运算的顺序和优先级问题.  这种时候最好是加(), 除了多敲两下键盘外, 也让人更容易明白你的代码,即使对优先级不熟悉的人也能快速明白. 括号"()"的一个好处就是可以让你不必掌握优先级的问题.

代码测试环境:  WinXP+C-Free5.0.
2015-12-26 22:23
pytao1991
Rank: 1
等 级:新手上路
帖 子:55
专家分:4
注 册:2015-8-26
收藏
得分:0 
回复 9楼 vvvcuu
虚心接受
2015-12-26 22:28
快速回复:代码不工作
数据加载中...
 
   



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

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