#include<stdio.h>
int main(){
int n=8113,y,i,count=0;
int x[8]={31,30,31,31,30,31,30,31};
int j=0,sum=0,sum1=0,m,day,year,month;
int d;//天数
y=n/365;//年数
for(i=1;i<=y;i++){
if((1777+i)%40&&(1777+i)%100!=0||(1777+i)%4000)//判断闰年
count++;
}
d=n%365-count;
do{
sum=sum+x[j];
j++;
}while(d>sum);
month=j+4-1;
for(m=0;m<j-1;m++){
sum1=sum1+x[m];
}
day=d-sum1;
year=1777+y;
printf("%4d-%02d-%02d\n",year,month,day);
return 0;}
开始考虑闰年用一个二维数组结果发现从五月考试没那个情况,害。后来在do-while循环中用了一个赋值(for用多了),一直输出不出来改了好久😶
#include<stdio.h>
#include<math.h>
void fl(int *n,int j,int x[]);
void fl2(long long int *r,int j,int y[]);
int main()
{int i,j=0,b,p,q,t,m;
long long int a;
int x[6];
int y[11];
for(i=123456;i<=987654;i++){//输入六位数
t=i;
for(j=0;j<6;j++){
fl(&i ,j ,x);//六位数输入数组x
}for(b=0;b<5;b++){
if(x[b]==x[b+1])//比较六位数各位数字
goto ak;}
a=pow(t,2);//输入六位数的平方
for(j=0;j<11;j++){
fl2(&a ,j,y); //输入数组
}
for(p=0;p<6;p++){//比较所有的数字
for(q=0;q<11;q++){
if(x[p]==y[q]){
goto end; }
}
}
printf("%d",t);//输出六位数
ak: ;
end: ; }
return 0;}
void fl(int *n,int j,int x[]){
int a,b;
a=*n%10;
x[j]=a;
*n=*n/10;
}
void fl2(long long int *r,int j,int y[]){
int a;
a=*r%10;
y[j]=a;
*r=*r/10;
}
这个搞了好久一个平方数就是输不出来,后来用pow就好了,不知道为啥。
我已经检查完了没有问题可就是没结果不知道为什么。难道是用了goto吗?