c语言基础-条件语句

一、流程控制

1、if语句

//输入两个数,输出结果为从小到大
	int a;
	int b;
	int c;
	
	printf("请输入两个数:");
	scanf("%d %d",&a,&b);
	if(a>b)
	{
		c = a;
		a = b;
		b = c;
	}
	printf("%d %d",a,b);
//输入三个数,按从小到大排序
	int a;
	int b;
	int c;
	int d;
	
	printf("请输入三个数:");
	scanf("%d %d %d",&a,&b,&c);
	if(a>b)
	{
		d = a;
		a = b;
		b = d;
	}
	if(a>c)
	{
		d = a;
		a = c;
		c = d;
	}
	if(b>c)
	{
		d = b;
		b = c;
		c = d;
	}
	printf("%d %d %d",a,b,c);
	return 0;

2、逻辑运算符

运算符 含义 举例 说明
&& 逻辑与 a&&b

如果ab都为真,则结果为真,否则为假

(有假则假)

|| 逻辑或 a||b 有真则真
逻辑非 !a 取反

3、if-else

//输入一个字符,判断是否为大写字母
//若是转换为小写输出
//若不是则不转换
	char a;
	printf("请输入一个字符:");
	scanf("%c",&a);
	if(a>=65 && a<=90)
	{
		printf("%c",a+32);
	}
	else
	{
		printf("不转换!");
		printf("%c",a);
	}
    return 0;

!!注意:scanf中的变量要取地址,变量名前要加&

4、switch

支持整型与字符

//判断当前月份为什么季节
	int a;
	printf("请输入当前月份:");
	scanf("%d",&a);
	switch(a)
	{
		case 2:
		case 3:
		case 4:
			puts("当前为春季");
			break;
		case 5:
		case 6:
		case 7:
			puts("当前为夏季");
			break;
		case 8:
		case 9:
		case 10:
			puts("当前为秋季");
			break;
		case 11:
		case 12:
		case 1:
			puts("当前为冬季");
			break;
        default:
			puts("输入错误!");
	}
	return 0;

5、练习

//已知函数,输入x,输出y
	int x;
	int y;
	
	printf("请输入x的值:");
	scanf("%d",&x);
	
	if(x<1)
	{
		y = x;
	}
	else if(x>=1 && x<10)
	{
		y = 2*x-1;
	}
	else if(x>=10)
	{
		y = 3*x-11;
	}
	else
	{
		puts("x的范围错误!");
	}
	
	printf("y的值为%d",y);
	return 0;
//输入百分制成绩,输出等级
	int score;
	
	printf("请输入你的成绩:");
	scanf("%d",&score);
	
	switch(score/10)
	{
		case 10:
		case 9:
		    puts("A");
		    break;
		case 8:
		    puts("B");
		    break;
		case 7:
		    puts("C");
		    break;
		case 6:
		    puts("D");
		    break;
		default:
		    puts("E");
		    break;
	}
	return 0;

6、while

while(循环条件,为真则一直执行)
{
    循环体;
}
//使用while循环打印1-100且求和
	int data = 1;
	int sum = 0;
	
	while(data<=100)
	{
		printf("%d\n",data);
		data++;
		sum = sum + data;
	}
	printf("0-100的和为:%d",sum);
	return 0;

7、do...while循环

    int a = 0;
	
	do
	{
		printf("我是好人!\n");
		a = a+1;
	}while(a <= 5);
	return 0;

8、for循环

for(条件赋初值;判断临界值;条件改变)

{

        循环体

}

9、break与continue的区别

break:提前结束循环

continue:提前结束本次循环

//100-200中不能被3整除的数
	int data;
	for(data = 100;data <= 200;data++)
	{
		if(data%3 ==0)
		{
			continue;
		}
		printf("%d\n",data);
	}
	return 0;

10、循环嵌套

//输出4*5矩阵
	int i;
	int j;
	
	for(i = 1;i<=4;i++)
	{
		for(j = 1;j<=5;j++)
		{
			printf("%d ",i*j);
		}
		printf("\n");
	}
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20

11、练习

//输入两个正整数m,n,求最大公约数和最小公倍数
	/*
		1.选出n,m中最小的一个数字放到a中
		2.分别用n,m对a求余数,即看是否能被a整除
		3.直到n,m同时都能被a整除
		4.如不能整除,a– (a的值减一) 继续从2开始执行
		5.也就是说该循环的判断条件为 n,m能否同时被a整除,只要有一个数不能被a整除,循环继续执行
	*/
	int m;
	int n;
	int a;
	
	printf("请输入两个正整数:");
	scanf("%d\n%d",&m,&n);
	
	//c = (n
//最小公倍数
//找到a,b中的较大值,假设是最小公倍数,然后去整除,不能整除就++,直到找到最小公倍数为止
#include 
   
int main()
{
   int a;
   int b;
   int tmp;
   printf("请输入两个正整数:");
   scanf("%d%d",&a,&b);
   
   if(a>b)
   {
	   tmp = a;
   }
   else
   {
	   tmp = b;
   }
   while((tmp%a!=0)||(tmp%b!=0))
   {
	   tmp++;
   }
	printf("最小公倍数为:%d\n",tmp);
	return 0;
}
//求100-1000水仙花数
	//水仙花数指一个3位数,其个位数字立方和等于该数本身
	int a,b,c;
	int i;
	for(i =100;i<=1000;i++)
	{
		a=i%10;
        b=i/10%10;
        c=i/100%10;
		
		if(i == a*a*a+b*b*b+c*c*c )
		{
			printf("%d\n",i);
		}
	}
	return 0;

你可能感兴趣的:(C语言,c语言,算法)