C语言第三章 循环与判断

这篇博客介绍了C语言中的条件判断语句,包括if、if...else、嵌套if以及switch,并通过示例代码展示了它们的使用。同时,讲解了循环控制结构,包括while、do...while和for循环,以及如何使用它们来解决实际问题。文章还提到了条件运算符的使用。
摘要由CSDN通过智能技术生成

第一节 判断

1.1 if语句

&&将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true
||将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要
反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true
#include <stdio.h>
int main()
{
	int hour1,minute1;
	int hour2,minute2;

	printf("输入时分\n"); 
	scanf("%d %d",&hour1,&minute1);
	printf("输入时分\n"); 
	scanf("%d %d",&hour2,&minute2);
	
	int t1=hour1-hour2;
	int t2=minute1-minute2;
	
	if(t2<0&&t1<0){
		t2=60+t2;
		t1++;
	} 
	printf("相差%d时%d分",t1,t2);	
	return 0;
}

1.2 if else语句

#include <stdio.h>
int main()
{
	int num1,num2;
	printf("请输入两个数字 \n");
	scanf("%d %d",&num1,&num2);
	if(num1>num2){
		printf("num1大于num2");
	}
	else if(num1==num2){
		printf("num1等于num2");
	}
	else{
		printf("num1小于num2");
	}
	return 0;
 } 

1.3 嵌套 if语句

#include <stdio.h>
int main()
{
	int age1,age2;
	printf("请输入两人的年龄");
	scanf("%d %d",&age1,&age2);
	if(age1>age2){
		
		if(abs(age1-age2)<3)
		{
			printf("两人相差年龄小于3岁");
		}
		else
		{
			printf("两人相差年龄大于或等于3岁");
		}
	}
	return 0;
}

 C语言中的if后面能跟如a>b>c这样的表达式吗?

回答:在if条件中,意思并不是a大于b大于c,而是如果a大于b ,得一个结果1,否则得一个结0,然后这个1或者0与c比较,如果大于c则结果为1,否则为0

#include <stdio.h>
int main(){
	int a,b,c;
	int max,min;
	printf("请输入三个数字\n");
	scanf("%d %d %d",&a,&b,&c);
	if(a>b&&a>c){
		max=a;
		if(b>c){
			min=c;
		}
		else{
			min=b;
		}
	}
	else if(b>a&&b>c){
		max=b;
		if(a>c){
			min=c;
		}
		else{
			min=a;
		}
	}
	else{
		max=c;
		if(a>b){
			min=b;
		}
		else{
			min=a;
		}
	}
	printf("最大值是:%d,最小值:%d",max,min);
	return 0;
}

1.4 switch语句

switch(expression){
/*	switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型
	每个 case 后跟一个要比较的值和一个冒号
	当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止
	当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行
*/
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
//	default case 可用于在上面所有 case 都不为真时执行一个任务
    default : /* 可选的 */
       statement(s);
}

 case:分支标号,分指标号只是说明Switch内部位置的路标,如:num=12,就会到相应的case:12处,一直执行case里的语句直到遇到break

#include <stdio.h>
int main() 
{
	int num;
	printf("请输入幸运数字");
	scanf("%d",&num);
	switch(num)
	{
		case 16:
			printf("恭喜您获得一等奖");
			break;
		case 12:
		case 8:
			printf("恭喜您获得二等奖");
			break;
		case 6:
		case 10:
		case 2:
			printf("恭喜您获得三等奖");
			break;
		default:
			printf("很遗憾您没中奖");
	}
	return 0;

 } 

1.4 嵌套Switch语句

#include <stdio.h>
int main()
{
	int num1=100;
	int num2=200;
	switch(num1)
		{
			case 100:
				printf("这是外部 switch 的一部分\n");
				switch(num2)
				{
					case 200:
						printf("这是内部 switch 的一部分\n");
				}
		} 
	return 0;
}

第二节 循环

2.1 while语句

#include <stdio.h>
int main(){
	int num,count;
	printf("输入要计算位数的数字\n");
	scanf("%d",&num);
	while(num!=0){
		num/=10;
		count++;
	} 
	printf("一共%d位数",count);
	return 0;
}
#include <stdio.h>
int main(){
	int num,count;
	printf("输入要计算位数的数字\n");
	scanf("%d",&num);
    //  num/=10 表示 num=num/10
	num/=10;
	count++;
	while(num!=0){
		num/=10;
		count++;
	}
	printf("一共%d位数",count);
	return 0;
}

2.2 do-while语句

#include <stdio.h>
int main(){
	int num,count;
	printf("输入要计算位数的数字\n");
	scanf("%d",&num);
    //如果要判断的数字是0,输出的位数是1,因为最少都要先执行一遍d0里的语句再判断
	do
	{
		num/=10;
		count++;
	}while(num!=0);
	printf("一共%d位数",count);
	return 0;
}

2.3 for循环

//从1*n

#include <stdio.h>
int main(){
	int n;
	printf("输入数字\n");
	scanf("%d",&n);
	// 从1开始乘
	int fact=1; 
	int i=1;
	for (i=2;i<=n;i++){
		fact*=i;
	}
	printf("运算结果:%d",fact);
	return 0;
} 
//从n*1
#include <stdio.h>
int main(){
	int n;
	printf("输入数字\n");
	scanf("%d",&n);
	int i;
	for(i=n-1;i>=1;i--){
		n*=i;
	}
	printf("运算结果:%d",n);
} 

//另一种写法,i也可以用n代替
#include <stdio.h>
int main(){
	int n;
	printf("输入数字\n");
	scanf("%d",&n);
	int fact=1;
	for(n=n;n>1;n--){
		fact*=n;
	}
	printf("运算结果:%d",fact);
	return 0;
} 

2.4 条件运算符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值