题目
前言
以下代码均无注释,需自行理解,新手建议收藏,反复食用
(1)根据今天的日期输出明天的日期
注意闰年2月,每年的12月31号等特殊日期
#include<stdio.h>
struct date{
int day;
int month;
int year;
};
int daysofnumber(struct date n);
int ifrun(struct date n);
int main()
{
struct date today,tomorrow;
printf("输入今天的日期\n");
scanf("%d %d %d",&today.day,&today.month,&today.year);
if(today.day!=daysofnumber(today))
{
tomorrow.day=today.day+1;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
else if(today.month==12)
{
tomorrow.day=1;
tomorrow.month=1;
tomorrow.year=1;
}
else
{
tomorrow.day=1;
tomorrow.month=today.month+1;
tomorrow.year=today.year;
}
printf("%d %d %d\n",tomorrow.day,tomorrow.month,tomorrow.year) ;
return 0;
}
int daysofnumber(struct date n)
{
int days;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(n.month=ifrun(n))
days=29;
else
days=a[n.month-1];
return days;
}
int ifrun(struct date n)
{
int leap=false;
if(n.year%4==0&&n.year%100!=0||n.year%400==0)
leap=true;
return leap;
}
(2) 求符合给定条件的整数集
解法1
#include<stdio.h>
int main()
{
int a;
int cut=0;
scanf("%d",&a);
int i,m,n;
i=a;
while(i<a+4)
{
m=a;
while(m<a+4)
{
n=a;
while(n<a+4)
{
if(i!=m&&i!=n&&m!=n)
{
printf("%d%d%d",i,m,n);
cut++;
if(cut==6)
{
printf("\n");
cut=0;
}
else
printf(" ");
}
n++;
}
m++;
}
i++;
}
}
解法二
#include<stdio.h>
int main()
{
int a;
int cut=0;
scanf("%d",&a);
int i,m,n;
for(i=a;i<=a+3;i++)
{
for(m=a;m<=a+3;m++)
{
for(n=a;n<=a+3;n++)
{
if(i!=m&&i!=n&&m!=n)
{
printf("%d%d%d",i,m,n);
cut++;
if(cut==6)
{
printf("\n");
cut=0;
}
else
printf(" ");
}
}
}
}
}
上面两组代码中也可以改动printf,if语句,最终的结果是一样的;
(3)经典水仙花
水仙花数是指一个 n 位数,
例如三位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。以此类推
————————————————
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i=1;
int max=1;
while(i<n)
{
max*=10;
i++;
}
int t,a,b;
for(i=max;i<(max*10);i++)
{
t=i;
int sum=0;
while(t>0)
{
a=t%10;
b=pow(a,n);
sum+=b;
t/=10;
}
if(sum==i)
{
printf("水仙花数为%d\n",i);}
}
}
(4)打印九九乘法口诀表
#include<stdio.h>
int main()
{
int a=1,b=1;
int cut=0;
for(a=1;a<=9;a++)
{
for(b=1;b<=a;b++)
{
printf("%d*%d=%2d",a,b,a*b);
printf(" ");
}
cut++;
printf("\n");
}
}
(5)打印两个数p,q之间的素数
打印两个数p,q之间的素数, 并求出这两个数之间素数的个数cnt,和这两个数之间所有素数之和sum;
#include<stdio.h>
int main()
{
int p,q;
scanf("%d %d",&p,&q);
int i,m;
int cnt=0;
int sum=0;
for(i=p;i<=q;i++)
{
int aaa=1;
for(m=2;m<i-1;m++)
{
if(i%m==0)
{
aaa=0;
break;
}
}
if(aaa)
{
cnt++;
sum+=i;
printf("%d\n",i);
}
}
printf("%d\n",cnt);
printf("%d\n",sum);
}
(6)求分数的最简式
例如12/24=1/2;
输入格式16/36
输出格式4/9
#include<stdio.h>
int main()
{
int fenzi,fenmu;
scanf("%d/%d",&fenzi,&fenmu);
int a=fenzi,b=fenmu;
int p;
int i,min;
if(a>b)
min=b;
else
min=a;
for(i=2;i<=min;i++)
{
if(a%i==0)
{
if(b%i==0)
p=i;
}
}
int newzi,newmu;
newzi=a/p;
newmu=b/p;
printf("%d/%d\n",newzi,newmu);
}