一、求某某范围内的闰年
#include<stdio.h>
main()
{
int i;
for ( i = 0; i <= 5000; i++)
{
if ((i%4==0 && i%100!=0) || i%40==0)
printf("%d\n",i);
}
return 0;
}
如图:是求0到5000年内的闰年
- 非整百年:能被4整除的为闰年。(如2004年就是闰年,2100年不是闰年)
- 整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
二、把一个三位的数字,输出它的个位数,十位数、百位数。
代码如下:
#include<stdio.h>
#include<math.h>
main()
{ int a,b,c,m;
m=321;
a=m%10; //个位
b=(m/10)%10; //十位
c=m/100; //百位
printf("%d%d%d\n",a,b,c);//输出个、十、百
return 0;
}
三、if 的 嵌套
if(表达式1) //若该条件满足时,执行下一个 if,不满足之直接到最后一个else
if(表达式2) //当条件满足时,执行语句1,不满足执行倒数第二个else
语句 1;
else
语句 2;
else
语句3;
- 注意:C语言中,else总是与它最近的未配对的if配对。
- 例题:分段函数: {(x<0,y=0 },{0<=x<=50,y=x} , {x>50,y=x*x}
#include<stdio.h>
#include<math.h>
main()
{
float x,y;
scanf("%f",&x);
if(x>=0)
if(x<=50)
y=x;
else
y=pow(x,2);
else
y=0;
printf("%f",y);
return 0;
}
四、在if分支或者else if 分支中内嵌不带else的if语句
语法如下:
语句1;
if(表达式1)
{
if (表达式2)
语句2;
}
else
语句3;
- 注意:语句1 可以放在第一个if上面,也可以放在语句3下面;
- 例题:分段函数: {(x<0,y=0 },{0<=x<=50,y=x} , {x>50,y=x*x}
#include<stdio.h>
#include<math.h>
main()
{
float x,y;
scanf("%f",&x);
y=x;
if(x>=0)
{
if(x>50)
y=x*x;
}
else
y=0;
printf("%f",y);
return 0;
}
五、switch语句
语句如下:
switch(表达式)
{
case 常量/字符常量表达式 1:
printf("..."); break ;
case 常量/字符常量表达式2:
printf("..."); break ;
case 常量/字符常量表达式3 :
printf("..."); break ;
default :
printf("..."); break ;
}
return 0 ;
}
- 注意:case 的表达式只能是常量表达式或者字符常量表达式。
- 每个case的表达式不可一样,否则会矛盾报错。
例题如下:输入五级制成绩,90~100为A,80~89为B,70~70为C,60~69为D,60分以下为E,否则为“未参加考试”
#include<stdio.h>
#include<math.h>
main()
{
char grade;
grade = getchar();
grade=(grade>='A'&&grade<='Z')?grade : grade — 32; //若是小写字母转换成大写字母
switch(grade)
{
case 'A' : case 'B' : //可以两个 case 在一行,执行一样的语句
printf("90~100"); break;
case 'C' :
printf("80~89"); break;
case 'D' :
printf("70~79"); break;
case 'E' :
printf("60~69"); break;
case 'F' :
printf("<60"); break;
default :
printf ("未参加考试");
}
return 0;
}
六、switch的嵌套
1)switch
嵌套switch
#include<stdio.h>
#include<math.h>
main()
{
int a,b=0,c=1;
scanf("%d,%d",&a,&b);
switch(a)
{
case 1:
switch(b)
{
case 2:
b++;
case 4:
c++;
default:
b++;c++;
}
break;
case 3:
b+=2;c+=2;break;
default:
b+=3;c+=3;
}
printf("%d\n%d\n",b,c);
}
2)switch
嵌套 if...else
#include<stdio.h>
#include<math.h>
int main()
{
float a,b;
char c;
scanf("%f%c%f",&a,&c,&b);
switch(c)
{
case '+':
printf("%f\n",a+b);break;
case '-':
printf("%f\n",a-b);break;
case '*':
printf("%f\n",a*b);break;
case '/':
if(b==0)
printf("错误,b不能为零");
else
printf("%f\n",a/b);break;
default:
printf("哈哈");
}
return 0;
}
-
当输入
17*2(回车)
时,输出34.0000
-
当输入
17/0(回车)
时。输出提示错误,b不能为零
七、选择结构,输入一个字符,判断是数字、小写字母、大写字母、还是其他字符
代码如下
#include<stdio.h>
#include<math.h>
int main()
{
char a;
a=getchar();
if(a>='0'&&a<='9') //因为输入的是字符,所以需要把数字用引号引起来
printf("数字%c\n",a);
else if(a>='A'&&a<='Z')
printf("大写字母%C\n",a);
else if(a>='a'&&a<='z')
printf("小写字母%C\n",a);
else
printf("其他字符%C\n",a);
}
八、输入三个数,比较大小,输出最大和最小数。
代码块:
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,max,min;
scanf("%d,%d,%d",&a,&b,&c);
max=a>b?a:b;
min=a<=b?a:b;
if(c>max)
max=c;
else if(c<min)
min=c;
printf("%d,%d\n",max,min);
}
九、求一年中的某年某月某日是第几天
1)、第一种写法
#include<stdio.h>
int main()
{
int day,month,year,sum=0;
scanf("%d.%d.%d",&year,&month,&day);
if(month>1)
sum+=31;
if(month>2)
if((year%4==0&&year%100!=0)||year%400==0)
sum+=29;
else
sum+=28;
if(month>3)
sum+=31;
if(month>4)
sum+=30;
if(month>5)
sum+=31;
if(month>6)
sum+=30;
if(month>7)
sum+=31;
if(month>8)
sum+=31;
if(month>9)
sum+=30;
if(month>10)
sum+=31;
if(month>11)
sum+=30; 写到11月
sum+=day; //12月是自己写的某天加进去
printf("%d\n",sum);
}