搜索
查看: 4110|回复: 9
打印 上一主题 下一主题

照抄书上的例子,为什么编译失败了?

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-20 20:31:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
main()
{  int y,m,d,dete=0,flag=1;
   printf("input year,month,day:");
   scanf("%d,%d,%d",&y,&m,&d);      /*输入年、月、日存入变量y、m、d*/
   switch(m)                                        /*根据月份求出该月之前的天数*/
   {  case 1:dete=0;break;
    case 2:dete=31;break;
    case 3:dete=59;break;
    case 4:dete=90;break;
    case 5:dete=120;break;
    case 6:dete=151;break;
    case 7:dete=181;break;
    case 8:dete=212;break;
    case 9:dete=243;break;
    case 10:dete=273;break;
    case 11:dete=304;break;
    case 12:dete=334;break;
    default:printf("data error");flag=0;
   }
 if((m>2)&&((y%4==0)&&(y%100!=0)||(y%400==0))) dete++; /*2月以后且为闰年的则多加1天*/
 dete+=d;                                                                                     /*加上当月的天数*/
   if(flag==1)
     printf("year=%d month=%d sum=%d----NO.=%d\n",y,m,d,dete);
}

===================
以上是照抄书上的例子:输入一个日期,输出该日期是该年度的第几天。代码直接从啊哈里复制粘贴来的。

疑问一:在输入代码时,为什么这一行代码的 if 没有高亮:{ if((m>2)&&((y%4==0)&&(y%100!=0)||(y%400==0))) dete++; /*2月以后且为闰年的则多加1天*/  }

疑问二:是书上的例子有误,还是啊哈有误?



最佳答案

查看完整内容

answer1:if没有高亮的原因可能是在粘贴的过程中代码错位引起的,在if前添加一个“空格”就能恢复高亮。 answer2:代码没有错,啊哈C编译系统也没有错;错在这个代码是粘贴过来的,里面包含了若干的“全角字符”,这在编译系统进行编译的时候会提醒“stray'\161'in system”,这个时候要检查你的各个字符是否为全角,发现全角后更改为半角,修改后的代码可以运行,如图。
沙发
发表于 2012-7-20 20:31:52 | 只看该作者
answer1:if没有高亮的原因可能是在粘贴的过程中代码错位引起的,在if前添加一个“空格”就能恢复高亮。
answer2:代码没有错,啊哈C编译系统也没有错;错在这个代码是粘贴过来的,里面包含了若干的“全角字符”,这在编译系统进行编译的时候会提醒“stray'\161'in system”,这个时候要检查你的各个字符是否为全角,发现全角后更改为半角,修改后的代码可以运行,如图。

if.jpg (61.72 KB, 下载次数: 7)

if.jpg
板凳
 楼主| 发表于 2012-7-20 23:19:24 | 只看该作者
JokerC 发表于 2012-7-20 20:31
answer1:if没有高亮的原因可能是在粘贴的过程中代码错位引起的,在if前添加一个“空格”就能恢复高亮。
an ...

非常感谢您的解答!让我茅塞顿开,醍醐灌顶!

确实是这样的,我在网站上发现和书上差不多的例程,就粘贴过来,然后进行了修改,这其中可能有中文状态下的字符,导致编译失败,看样子,学习还是老老实实的好!

再次感谢您的解答!谢谢您!
地板
 楼主| 发表于 2012-7-20 23:52:46 | 只看该作者
JokerC 发表于 2012-7-20 20:31
answer1:if没有高亮的原因可能是在粘贴的过程中代码错位引起的,在if前添加一个“空格”就能恢复高亮。
an ...

#include <stdio.h>
int main()
{
        int y,m,d,dete=0,flag;
    printf("input year,month,day:");
    scanf("%d %d %d",&y,&m,&d);
    switch(m)
    {
       case 1:dete=0;break;
       case 2:dete=31;break;
       case 3:dete=59;break;
       case 4:dete=90;break;
       case 5:dete=120;break;
       case 6:dete=151;break;
       case 7:dete=181;break;
       case 8:dete=212;break;
       case 9:dete=243;break;
       case 10:dete=273;break;
       case 11:dete=304;break;
       case 12:dete=334;break;
       default:printf("data error");flag=0;
    }
    if((m>2)&&((y%4==0)&&(y%100!=0)||(y%400==0))) dete++;
    dete+=d;
    if(flag==1)
       printf("year=%d month=%d day=%d----NO.%d\n",y,m,d,dete);
        sleep(50000);
        return 0;
}
================
重新敲入代码,编译成功,但是功能不正确,不知道错在哪里?请指教!谢谢!
5#
发表于 2012-7-21 09:13:49 | 只看该作者
本帖最后由 JokerC 于 2012-7-21 09:19 编辑
天山雪 发表于 2012-7-20 23:52
#include
int main()
{

情况是这样的,这里的代码在第4行中“int y,m,d,dete=0,flag;"这个语句中,没有为flag赋值,按照你之前的代码,这里应该为1,即flag=1;,否则运行是没有结果的。那么修改之后再运行,比如输入:2012,7,21按回车,出现结果是203,就成功了,如图。

2.jpg (9.14 KB, 下载次数: 7)

2.jpg
6#
 楼主| 发表于 2012-7-21 16:42:47 | 只看该作者
JokerC 发表于 2012-7-21 09:13
情况是这样的,这里的代码在第4行中“int y,m,d,dete=0,flag;"这个语句中,没有为flag赋值,按照你之前的 ...

谢谢您热心解答!
可能是昨夜搞得太晚了,没有仔细看,晕。
编程是个细活,任何的疏漏,程序运行结果就和我们的目标相差千里了!
7#
发表于 2012-7-26 17:36:07 | 只看该作者
#include<stdio.h>
int main()
{
  int y,m,d,dete=0,flag;
printf("input year,month,day:");
scanf("%d %d %d",&y,&m,&d);
switch(m)
{
case 1:dete=0;break;
case 2:dete=31;break;
case 3:dete=59;break;
case 4:dete=90;break;
case 5:dete=120;break;
case 6:dete=151;break;
case 7:dete=181;break;
case 8:dete=212;break;
case 9:dete=243;break;
case 10:dete=273;break;
case 11:dete=304;break;
case 12:dete=334;break;
default:printf("data error");flag=0;
}
if((m>2)&&((y%4==0)&&(y%100!=0)||(y%400==0))) dete++;
dete+=d;
if(flag==1)
printf("year=%d month=%d day=%d----NO.%d\n",y,m,d,dete);
sleep(50000);
return 0;
}
  ==========================
我这样写为什么错了
8#
发表于 2012-7-26 22:05:56 | 只看该作者
本帖最后由 JokerC 于 2012-7-26 22:07 编辑
wo421107903 发表于 2012-7-26 17:36
#include
int main()
{

亲,你的代码我粘贴过去了,结果成功了,是不是你的编译系统或者操作系统设置有问题啊~如图,

嗯哼.jpg (69.32 KB, 下载次数: 9)

嗯哼.jpg
9#
发表于 2012-7-27 08:45:32 | 只看该作者
JokerC 发表于 2012-7-26 22:05
亲,你的代码我粘贴过去了,结果成功了,是不是你的编译系统或者操作系统设置有问题啊~如图,

亲,我郁闷的很啊,昨天一直报错,今天我又试了一次成功了。
10#
 楼主| 发表于 2012-7-29 09:17:56 | 只看该作者
wo421107903 发表于 2012-7-27 08:45
亲,我郁闷的很啊,昨天一直报错,今天我又试了一次成功了。

在复制粘贴中可能有中文字符,所以有时候会出现编译失败。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表