C语言代码块

时间:2024-04-04 08:10:50

一、求某某范围内的闰年

#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年内的闰年
C语言代码块

  1. 非整百年:能被4整除的为闰年。(如2004年就是闰年,2100年不是闰年)
  2. 整百年:能被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);

	
	}