【C 语言】 这个代码错在哪了?我用的是Dev C++

问题描述

【C 语言】 这个代码错在哪了?我用的是Dev C++

/*题目:输入某年某月某日,判断这一天是这一年的第几天?*/
#include
#define MONTH 12
struct date{
int Day;
int Month;
int Year;
};
int main()
{
int count,days,month;
struct date today;
int daysPerMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

printf("请输入日期(如:2015.10.1):");
scanf("%i.%i.%i", &today.Year, &today.Month, &today.Day);
printf("您输入的日期是:%i.%i.%in", today.Year, today.Month, today.Day);

while ( today.Month > MONTH || today.Day > daysPerMonth[today.Month + 1]
|| today.Month < 1 || scanf("%i.%i.%i", &today.Year, &today.Month, &today.Day) != 3)      // 输入:2015.11.6.3 为什么会出错!
{
    printf("请输入正确的日期(如:2015.10.1):");
    scanf("%i.%i.%i", &today.Year, &today.Month, &today.Day);
}

if ((today.Year%4 == 0 && today.Year%100 != 0 ) || today.Year%400 == 0)
{
    daysPerMonth[1]=29;
}

for ( month=1; month <= today.Month; month++)
{
    for ( days=1,count=1; days <= daysPerMonth[today.Month+1]; days++)
    {
        count ++;
    }
}
printf("今天是今年的第%d天", count);
return 0;

}

运行以后的界面:

本人刚学编程不久,希望各位可以解答详细点,拜托各位了!非常感谢!

问:
1.代码问题出在哪里了,怎么修改这个代码?

2.在输入2015.11.6.3(最后一位任意值都可)为什么会出错?怎样解决这个问题?

解决方案

为什么多输入呢,必须对应的

解决方案二:

把while里面的scanf去掉,在前面定义一个ret = scanf

然后在while里用ret来判断是否为3

时间: 2024-09-11 06:52:18

【C 语言】 这个代码错在哪了?我用的是Dev C++的相关文章

c语言-不知道代码错在哪里?

问题描述 不知道代码错在哪里? main() { int j; sqlist *l; void initlist(sqlist *l); void listinsert(sqlist *l,int i,int e); initlist(l); printf("please input your number:n"); for(j=0;j scanf("%d",l->a+j); scanf("%d",&(l->length));

c语言-求这道C语言题目代码的错误

问题描述 求这道C语言题目代码的错误 #include int main(){ int a,b=0,i=0; int c[100]; while((a=getchar())!=EOF){ while(a!='n'||'t'||' '){ b++;} c[i]=b; i++; printf("%dn",c[i]); } } 解决方案 你include后面是不是什么都没写... 解决方案二: a 应该用char来定义 解决方案三: a!='n'||'t'||' ' while里面不能这样写

c语言-C语言编译报错出现C2143

问题描述 C语言编译报错出现C2143 void Linelinktoarray(EdgePoint____* edgePoint,int *arrayx,int *arrayy,int &number,int GradMain,int &Sumx,int &Sumy); EdgePoint已定义,为嘛会出现:error C2143:语法错误:缺少")"(在"&"的前面) 解决方案 下划线呢?难道就不算定义的不部分??? 难道是你的输

c语言编程报错,简单程序

问题描述 c语言编程报错,简单程序 题目是输出a,b.c中最小数值 自学c语言,求帮忙看看哪里不对呀 #include #include int min(int a,int b,int c ) { int z; if(a<b) z=a; { if(a<c) z=a; else z=c; return (z); } else z=b; { if(b<c) z=b; else z=c; return(z); } } main () { int x,y,m; printf("Inpu

国际C语言混乱代码大赛作品分析!

#include <stdio.h> main(t,_,a)char *a;{return!0<t?t<3? main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13? main(2,_+1,"%s %d %dn"):9:16:t<0?t<-72? main(_,t,"@n'

数据-matlab 代码错在哪 求解决

问题描述 matlab 代码错在哪 求解决 想要用12个数据去预测1个数据 P=[2.97 3.02 3.29 3.35 5.6 5.41 4.82 3.61 2.92 2.03 1.95 1.94 3.01 3.18 3.45 3.51 5.82 5.58 4.95 3.95 3.01 2.21 2.13 2.13 3.2 3.31 3.56 3.72 6.01 5.73 5.2 4.11 3.21 2.33 2.3 2.3 3.4 3.42 3.8 3.88 6.21 5.88 5.41 4

java源码-求这段c语言的代码换成java的代码

问题描述 求这段c语言的代码换成java的代码 #include #define P 3.1415927#define toFeet(x) x/12.0#define toMiles(x) x/5280.0int main(){ double diameter;//直径 int revolutions;//转数 double time;//香蕉 double s; int count=1; while(scanf("%lf%d%lf",&diameter,&revolu

xmlentities-在xml文档中插入图片总是失败,请大家帮我看看这段代码错在哪里了?

问题描述 在xml文档中插入图片总是失败,请大家帮我看看这段代码错在哪里了? <?xml version="1.0" encoding="GB2312"?> <!DOCTYPE photos[ <!ELEMENT photos (photo*)> <!ELEMENT photo EMPTY> <!ATTLIST photo Sources ENTITIES #REQUIRED> <!ENTITY ic1 S

mysql-求帮我看看代码错在哪里?

问题描述 求帮我看看代码错在哪里? 准备用mysql做一个表,建表语句如下: create table tv_play( name varchar(40) not null, country of origin varchar(40) not null, production company varchar(40) not null, genre varchar(40) not null); 结果显示语法错误,求指明错误所在. 解决方案 country of origin 可以空格吗 解决方案二