问题遇到的现象和发生背景
输入后没有反应
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
int ifright(int year,int month,int day){
int a[4],b[2],c[2];
a[0]=year/1000;
a[1]=year/100%10;
a[2]=year%100/10;
a[3]=year%10;
b[0]=month/10;
b[1]=month%10;
c[0]=day/10;
c[1]=day%10;
if((a[0]==a[2]==b[1]==c[1])&&(a[1]==a[3]==b[0]==c[0]))
return 1;//1是ABABBABA回文日期
if((a[0]==a[2]==b[1]==c[1])&&(a[1]==c[0])&&(a[3]==b[0]))
return 2;//2是普通回文日期
}
int main(int argc, char *argv[])
{
int n;
scanf("%d",&n);//输入八位数日期
int year,month,day;
year=n/10000;
month=n%10000/100;
day=n%100;
int i,j,k,p1,p2,q,m,flag1,flag2;
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))
{
k=31;
}
else if((month==4)||(month==6)||(month==9)||(month==11))
{
k=30;
}
else if(month==2)
{
k=28;
}
if((year%4==0)&&(year%100!=0))
{
k=29;
}
for(i=year;;i++){
for(j=month;j<12;j++)
{
for(k=day;k<q;k++)
{
m=ifright(i,j,k);
if((m==2)&&(flag1==1))
{
p1=10000*i+100*j+k;
flag1=1;
}
if((m==1)&&(flag2==1))
{
p1=10000*i+100*j+k;
flag2=1;
}
if((flag1==1)&&(flag2==1))
{
break;
}
}
}
}
printf("%d\n%d",p1,p2);
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
第一次刷题就遇到问题解决不了了,我看着语法好像也没出问题啊,求解答