作业反思
- switch(c)中c可以存放整型,包括int,long,short,char(存放的ASCII码),但是不可以存放小数例如float,double
- define不是关键字
- 自己写的笨代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
// 从大到小输出三个值
int main()
{
int a = 0;
int b = 0;
int c = 0;
int max = 0;
int mid =0;
int mini=0;
printf("输入三个数:");
scanf("%d%d%d",&a,&b,&c);
if(a >= b && a>= c)
{
max = a;
if(b >= c)
{
mid = b;
mini = c;
}
else
{
mid = c;
mini = b;
}
}else if( b>=a && b>=c)
{
max = b;
if(a >= c)
{
mid = a;
mini = c;
}
else
{
mid = c;
mini = a;
}
}else
{
max = c;
if(b >= a)
{
mid = b;
mini = a;
}
else
{
mid = a;
mini = b;
}
}
printf("您输入的三个数从大到小依次为%d %d %d\n",max,mid,mini);
return 0;
}
变量设置太多,判断的方式是比较直接但是繁琐的每种可能性都考虑。跟着老师稍微优化了一下,if分支减少了而且不用定义那么多变量。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a =0;
int b =0;
int c =0;
int temp =0;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
//思路是将最大值存入a,最小值存入c
if(a<b)
{
temp = b;
b = a;
a = temp;
}
if(a<c)
{
temp =c;
c =a;
a =temp;
}
if(b<c)
{
temp =c;
c =b;
b =temp;
}
printf("从大到小为%d %d %d\n",a,b,c);
return 0;
}
4.给定两个数,求这两个数的最大公约数,最大公约数怎么求呢
自己写的,思路是将两数较小者从他本身逐个减1减到1为止,判断这过程中有哪些整数与这两个数取余结果为0,由于我们从最大开始,那么第一个满足条件的就是最大公约数。是我第一时间想到的,比较暴力直接的方法感觉
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//求两个数的最大公约数
int main()
{
int a =0;
int b =0;
int temp = 0;
int i =0;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
if(a<b)
{
temp = a;
a =b;
b =temp;
}
for(i=b;i>=1;i-- )
{
if((b%i)==0 && (a%i)==0)
{
printf("最大公约数为%d\n",i);
break;
}
}
return 0;
}
跟着老师学习一下辗转相除法:较大值除较小值取余,若余数为0,那么较小值即为最大公约数;若余数不为0,将较小值除余数取余,若第二个余数为0,则第一个余数即为公约数;若第二个余数仍然不为0,则将第一个余数除第二个余数取余。。。如此循环往复的判断,直到取余为0时,那么最后一次取余运算的除数即为所求的最大公约数。
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int m =70;
int n =56;
int i = 0;
//i用于存放每次运算的余数,作为中转变量
//m用于存放被除数,n存放除数
while(m%n)
//注意当m<n时,第一次循环mn交换次序,仍然不影响我们后续正常实现功能
//因此不需要保住m一定大于
{
i = m%n;
m = n;
n = i;
}
printf("最大公约数为%d\n",n);
}
5.打印1000-2000之间的闰年:首先甚麽的年份称为闰年;
①、普通年能被4整除且不能被100整除的为闰年。否则为平年。(如2004年就是闰年,1900年不是闰年)
②、世纪年能被400整除的是闰年。否则为平年。(如2000年是闰年,1900年不是闰年)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
//判断year是否为闰年
//1.能被4整除并且不能被100整除的是闰年
//2.能被400整除的是闰年
int year = 0;
for(year = 1000;year <= 2000;year++)
{
if((year%4)==0 && (year%100)!=0 )
{
printf("%d ",year);
}else if((year%400)==0)
{
printf("%d ",year);
}
}
printf("\n");
return 0;
}
运行结果: