一、求某某范围内的闰年
#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);
}
十、输出图形*号
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k;
for(i=1;i<=8;i++) //行 1 2 3
{
for(j=8;j>=1;j--)//空 11111111 11111111 11111111
printf(" ");
for(k=1;k<=2*i-1;k++)//输出*号 1 3 5
printf("*");
printf("\n");
}
return 0;
}
十一、输入十个数,求最大最小,偶数、奇数个数
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i,x,odd=0,even=0,max,min;
for(i=1;i<=10;i++)
{
scanf("%d",&x);
if(i==1)
{ max=x; min=x; }
if(x%2==0)
even+=1;
if(x%2!=0)
odd+=1;
if(x>max)
max=x;
if(x<min)
min=x;
}
printf("%d\n",max);
printf("%d\n",min);
printf("%d\n",odd);
printf("%d\n",even);
}
十二、小写字母变成大写字母
代码
#include<stdio.h>
#include<math.h>
int main()
{
char c;
scanf(" %c",&c);
if(c>='a'&&c<='z')
c=c-32;
printf(" %c\n",c);
}
十三、输入四个数,求最大、最小值
最小值代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i,x,min;
for(i=1;i<=4;i++)
{
scanf("%d",&x);
if(i==1)
{ min=x; }
if(x<min)
min=x;
}
printf("%d\n",min);
}
————————————————————————————————————
最大值代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i,x,max;
for(i=1;i<=4;i++)
{
scanf("%d",&x);
if(i==1) //注意:这里是 等于号
{ max=x; }
if(x>max)
max=x;
}
printf("%d\n",max);
}
十四、一维数组:输入一个数,找到它的位置
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int ft,i,x,n,a[15]={1,2,4,5,7,0,8,11,13,15,67,99,100,22,33};
scanf("%d",&x);
for(i=0;i<=14;i++)
{ if(a[i]==x)
{ft=1;
n=i;}
}
if(ft==1)
printf("%d找到了,在第%d位置",x,n);
else
printf("未找到");
}
十五、在一维数组,输入一个数,删除这个数的位置,比如输入4,删除数组中4的位置
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int i,del,a[15]={1,2,4,5,7,0,8,11,13,15,67,99,100,22,33};
scanf("%d",&del);
del=del-1;
for(i=del;i<14;i++)
a[i]=a[i+1];
for(i=0;i<=13;i++)
printf("%4d",a[i]);
printf("\n");
}
**可见删除了第四个位置5这个数**
十六、将一位数组左循环移位。移位次数由键盘输入
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
int i,n,t,p;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=a[0];
for(p=0;p<=6;p++) //若输入的数是2,则
a[p]=a[p+1]; //第一次:a[0]=a[0+1]=2 a[1]=3-----a[6]=8 a[7]=1
//第二次:a[0]=a[0+1]=3 a[1]=4------a[6]=1 a[7]=2
a[7]=t; //a[7]第一次是1;第二次是2
}
for(i=0;i<=7;i++)
printf("%4d ",a[i]);
}
十七、以时间为随机数种子的随机数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
srand((int)time (0)); //这里也可以写成 srand((int)time (NULL));
printf("%6d\n",rand());
printf("%6d\n",rand());
printf("%6d\n",rand());
return 0;
}
判断一个数是否为素数(质数)
#include<stdio.h>
#include"math.h"
#include<stdlib.h>
int main()
{
int a,i,k,z;
scanf("%d",&a);
k=a/2;
for(i=2;i<=k;i++)
if(a%i==0) break;
if(i>k)
printf("%d是质数",a);
else
printf("%d不是质数",a);
}