どこがおかしいか教えてください(;_;)
#include <stdio.h>
void main()
{
typedef struct kokyaku_data
{
int k_code; // 顧客コード
short h_nen,h_tsuki,h_hi; // 発行年月日
short k_nen,k_tsuki,k_hi; // 使用期限
}KOKYAKU;
KOKYAKU kokyaku;
printf("顧客コードを入力してください\n");
scanf("%d",&kokyaku.k_code);
// 顧客構造体へ日付をセットする
printf("今年の西暦入力してください(YYYY MM DD):");
scanf("%d %d %d",&kokyaku.h_nen,&kokyaku.h_tsuki,&kokyaku.k_hi);
if(kokyaku.h_tsuki == 4 || kokyaku.h_tsuki ==6 || kokyaku.h_tsuki == 9 || kokyaku.h_tsuki == 11){
kokyaku.k_hi=30;
kokyaku.h_tsuki=1;
}
kokyaku.k_tsuki=kokyaku.h_tsuki;
}else
if((kokyaku.h_tsuki==3) && (kokyaku.h_hi==1)){
if((kokyaku.k_nen) % 400 ==0 || (kokyaku.k_nen)%4==0 && (kokyaku.k_nen)%100!=0){
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=29;
}else{
kokyaku.k_tsuki=kokyaku.h_tsuki-1;
kokyaku.k_hi=28;
}
}else{
kokyaku.k_hi=30;
if(kokyaku.h_tsuki = 1){
kokyaku.k_tsuki=12;
}
}
printf("%d %d %d",kokyaku.k_nen,kokyaku.k_tsuki,kokyaku.h_hi);
}
FILE *ds;
ds=fopen("../datafile/d_stock","w");
無題
Re:無題
#include <stdio.h> // 年月日格納用構造体 typedef struct tag_YMD { short Year; short Month; short Day; } YMD; // 顧客管理用構造体 typedef struct tag_KOKYAKU { int Code; // 顧客コード YMD Public; // 発行日 YMD Limit; // 使用期限 } KOKYAKU; // メイン関数 void main() { KOKYAKU Kokyaku; // 顧客コードの入力 printf("顧客コードを入力してください"); scanf("%d",&Kokyaku.Code); // 発行年月日の入力 printf("今年の西暦入力してください(YYYY MM DD):"); scanf("%d %d %d",&Kokyaku.Public.Year, &Kokyaku.Public.Month, &Kokyaku.Public.Day); // 使用期限年の計算 Kokyaku.Limit.Year = Kokyaku.Public.Year + 1; // 発行日が1日だった場合の処理 if (Kokyaku.Public.Day == 1) { // 末日の計算 if (Kokyaku.Public.Month == 5 || Kokyaku.Public.Month == 7 || Kokyaku.Public.Month == 10 || Kokyaku.Public.Month == 12) { // 入力された月が、5、7、10、12月だった場合、1ヶ月前の末日は30日となる Kokyaku.Limit.Day = 30; } else if (Kokyaku.Public.Month == 3) { // 入力された月が3月だった場合は、前月が2月なので閏年の計算を行う if ((Kokyaku.Limit.Year % 400 == 0 || Kokyaku.Limit.Year % 4 == 0) && Kokyaku.Limit.Year % 100 != 0) { Kokyaku.Limit.Day = 29; } else { Kokyaku.Limit.Day = 28; } } else { Kokyaku.Limit.Day = 31; } // 使用期限月の計算 if (Kokyaku.Public.Month == 1) { // 1月だった場合の処理 Kokyaku.Limit.Year--; Kokyaku.Limit.Month = 12; } else { Kokyaku.Limit.Month = Kokyaku.Public.Month - 1; } } else { Kokyaku.Limit.Month = Kokyaku.Public.Month; Kokyaku.Limit.Day = Kokyaku.Public.Day - 1; } printf("使用期限 : %04d年 %02d月 %02d日\n", Kokyaku.Limit.Year, Kokyaku.Limit.Month, Kokyaku.Limit.Day); }