1樓:匿名使用者
如果test為你輸入的時間資訊用
test.indexof("-")
判斷是否是要求的格式
2樓:月光下的狼
1,判斷第5,8個是否為-
2,月份是否<13
3,號是否 滿足 13578十臘 < 32, 46911<31 如果是閏年2<30。如果不是閏年2<30
3樓:匿名使用者
char str[100];
memset(str,0,100);
strcpy(str,"1995-12-06")int year,month,day;
自己除錯下就好了
4樓:
#include
static int is_valid_date(int y, int m, int d)
;if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
month[1] = 29;
return m > 0 && m <= 12 && d > 0 && d <= month[m - 1];
}int main(void)
c語言中 求解如何判斷輸入的年月日是否合法
5樓:匿名使用者
似乎沒有現成的函式可以用。
年月好檢查,在範圍內就成;日初查也是查範圍,範圍沒問題再細查。
細查一般這樣,你用年月和當月的1日生成乙個日期,加上你輸入的(日-1)(要消除定位在1號的差),然後取這個日期變數的日,如果和輸入日相等就沒問題,不等就是輸入日期不合法。
c語言中,如何驗證輸入日期的正確性!~
6樓:匿名使用者
主要驗證三個資訊:
a.驗證月數是否在1~12,m > 0 && m <= 12
b.驗證日數是否超過當月,d > 0 && d <= month[m - 1]
c.對平閏年的判斷,if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)month[1] = 29
例程:#include
static int is_valid_date(int y, int m, int d)
;if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
month[1] = 29;
return m > 0 && m <= 12 && d > 0 && d <= month[m - 1];
}int main(void)
7樓:可愛的壞男孩
#include
void main()
8樓:匿名使用者
很簡單吶
年份確定乙個範圍
月份乙個範圍
日份確定乙個範圍
9樓:受傲之心思
就這麼寫的,沒除錯,你自己調一下
#include
void
main()
else
if(date>28||date<1)
printf("error!");
break;
case
3:if(date>31||date<1)printf("error!");break;
case
4:if(date>30||date<1)printf("error!");break;
case
5:if(date>31||date<1)printf("error!");break;
case
6:if(date>30||date<1)printf("error!");break;
case
7:if(date>31||date<1)printf("error!");break;
case
8:if(date>31||date<1)printf("error!");break;
case
9:if(date>30||date<1)printf("error!");break;
case
10:if(date>31||date<1)printf("error!");break;
case
11:if(date>30||date<1)printf("error!");break;
case
12:if(date>31||date<1)printf("error!");break;}}
c語言:從鍵盤上輸入乙個日期,判斷輸入的日期是否正確
10樓:匿名使用者
int isleapyear(int iyear)
判斷閏年的條件
else
}int datecheck(int iyear,int imonth,int iday)
if (imonth==4||imonth==6||imonth==9||imonth==11)
}else if (imonth==2)
}else}}
return 1;
}核心**就是這些,另外你自己寫主函式,呼叫datecheck函式就可以了。
c語言中 求解如何判斷輸入的年月日是否合理
11樓:匿名使用者
**裡面的主要問題時:
if((month==1,3,5,7,8,10,12)這樣的判斷語句是有問題,應該使用||運算子的;
if和else語句沒有配合好,主要是你的**巢狀比較多,一定要注意**縮排,否則自己可能都沒有發現那個地方else沒有寫的。。
下面的**,是修改後,執行結果附在後面:
#include
#include
int main()
else if(((month==4)||(month==6)||(month==9||11))&&(day<0||day>30))
else if(month==2)
else}}
else
sum+=day;
>2))
else} }
system("pause");
return 0;
}執行結果為:
12樓:匿名使用者
#include
#include
void main( ) ;
int year, month, day, sum, leap, i;
printf("輸入年月日(例如:2013-4-5):");
if(year < 1 || month < 1 || month > 12) {
printf("不合理的年或月!\n");
return;
leap = (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
if((day < 1 || day > mon[month]) && ((month != 2) || ((month == 2) && (day > mon[month] + leap)))) {
printf("不合理的日期\n");
return;
for(sum = 0, i = 1; i < month; i++)
sum += mon[i];
sum += day + leap;
printf("%d-%d-%d是%d年的第%d天!", year, month, day, year, sum);
system("pause");
c語言中怎樣輸入和讀取方向鍵,C語言怎麼輸入方向鍵左?
那你先要熟悉鍵盤編碼和asc碼,然後跟值比較啊!在貪吃蛇中定義了intokey 函式 你也可以改成別的 整個函式體中的 就是獲取鍵盤 的方向鍵值,倒數第2 5行是獲取回車鍵值,用於起暫停作用。這裡用direction表示方向,程式中up down left right分別固定代表1 2 3 4這四個...
c語言中如何輸入雙引號,C語言 如何輸出 good ,是帶引號輸出
聽不清啊 c語言中用 表示乙個雙引號。char s he says,ok.最前和最後的雙引號是定界符,中間的兩處 表示雙引號 puts s 就可以輸出he says,ok.轉義字元 所有的ascii碼都可以用 加數字 一般是8進製數字 來表示。而c中定義了一些字母前加 來表示常見的那些不能顯示的as...
c語言用scanf輸入字串,C語言中用scanf函式輸入字元時,為什麼要在輸入控制符 c前面加空格?用scanf還有哪些要注意?
有了char a 10 那麼a就是這個陣列的第乙個元素的指標,a就是這個陣列的指標 因為一維陣列的第乙個元素的指標和這個陣列的指標是同乙個位址,區別是a 1指向a 1 而 a 1就指向a 10 了 這裡已越界了 但 a和a的 值 是相同的,只是型別不同。c呼叫函式時,實參的型別都會被強制為形參的型別...
c語言怎麼判斷輸入的是不是數字,c語言裡 輸入時 怎麼判斷是字元還是數字
你的意思是輸入的如果不是數字,就提示輸入不對,然後接著之前的重新輸入嗎?isnumeric函式是判斷是不是數字的 是數字返回true string.h裡面包含 isdigit 就是你要找的函式 int isnum,h do isnum scanf d h if isnum 1 while isnum...
c語言輸入年月日判斷該日期是當年的第幾天
include int run int year 判斷閏年 int jisuan int year,int month 計算當月之前度過的日子,x run year for i 1 i 注釋部分存在問題,測試結果 include int main sum sum day 2 sum printf 這...