C语言入门(条件与循环)

本文围绕C语言入门展开,介绍了判断和循环相关知识。判断部分涉及简单时间判断、找零计算器、计算薪水和最大数判断等,阐述了关系运算符的优先级。循环部分包括while、do - while和for循环,以求位数和阶乘为例讲解其应用,并给出不同循环的使用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.判断

简单时间判断

#include<stdio.h>
int main()
{
	int hour1, minute1;
	int hour2, minute2;
	scanf("%d %d", &hour1, &minute1);
	scanf("%d %d", &hour2, &minute2);
	
	int ih = hour2 - hour1;
	int im = minute2 - minute1;
	
	if(im < 0 ){
		im = 60 + im;
		ih--;
	}
	
	printf("时间差是%d小时%d分钟\n", ih, im);
	return 0;
}

条件:计算两个值之间的关系,叫做关系运算。

运算符意义
==相等
!=不相等
>大于
>=大于或等于
<小于
<=小于或等于

结果:两个值得关系符合关系运算符的预期时,关系运算符结果为1,否则为整数0。

  所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高。
eg:printf("%d", 7 >= 3 + 4); → 1
  判断是否相等的==和!=的优先级比其他的低,而连续关系运算时从左到右进行的。
eg:5 > 3 == 6 > 4

找零计算器

  两个操作:输入购买的金额,输入支付的票面,而找零计算器根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买。
  从计算机的角度看,这意味着程序需要读入用户的两个输入,然后进行一些计算和判断,最后输出结果。

Created with Raphaël 2.2.0 开始 初始化 输入price,bill bill >= price 输出bill - price 结束 输出“您的余额不足” yes no
#include<stdio.h>
int main()
{
	int price = 0;
	int bill = 0;
	
	printf("请输入金额:");
	scanf("%d", &price);
	printf("请输入票面:");
	scanf("%d", &bill);
	
	if (bill >= price){
		printf("应该找您:%d", bill - price);
	}else{
		printf("您的余额不足");
	}
	
	return 0;
}

if和else后面也可以没有{ }而是一条语句。(但是if和else后面应规范化加{ }以输出多条)

计算薪水

#include<stdio.h>
int main()
{
	const double RATE = 8.25;
	const int STANDARD = 40;
	double pay = 0.0;
	int hours;
	printf("请输入工作的小时数:");
	scanf("%d", &hours);
	printf("\n");
	
	if (hours > STANDARD)
		pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
	else 
		pay = hours * RATE;
	
	printf("应付工资:%f\n", pay);
	return 0; 
}

最大数判断

#include<stdio.h>
int main()
{
	int a, b, c;
	printf("Please input three integers:");
	scanf("%d %d %d", &a, &b, &c);
	int max = 0;
	if(a > b){
		if(a > c){
			max = a;
		}
		else{
			max = c;
		}
	}
	else{
		if(b > c){
			max = b;
		} 
		else{
			max = c;
		}
	}
	printf("The max is : %d", max);
	return 0; 
}

2.循环

求位数(条件判断)

  程序要读入一个4位以下(含4位)的正整数,然后输出这个整数的位数,如:输入352,输出3.(注:计算机的方式——判断数的范围来决定它的位数,如:352∈[100,999] → 3位)

//条件判断
#include<stdio.h>
int main()
{
	int x;
	int n = 1;
	scanf("%d", &x);
	
	if(x > 999){
		n = 4;
	}else if(x > 99){
		n = 3;
	}else if(x > 9){
		n = 2;
	}else{
		n = 1;
	}
	printf ("%d", n);
	return 0;
	
}

如上可知,要用条件判断求任意范围的数字的位数较难,所以改用循环来求。

whlie循环

  如if,条件满足就不断地重复循环体内的语句。循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行。条件成立是循环继续的条件。

求位数

//循环
#include<stdio.h>
int main()
{
	int x;
	int n = 0;
	scanf("%d", &x);
	n++;
	x /= 10;
	while(x > 0){
		n++;
		x /= 10;
	}
	printf("%d\n", n);
	return 0;
	
}

  验证:测试程序时常使用边界数据,如有效范围内两端的数据,特殊的数等。

  • 个位数
  • 10
  • 0
  • 负数

do-while循环

  在进入循环时不做检查,在执行完一轮循环体的代码后,再检查循环体的条件是否满足,满足则进行下一轮,不满足则结束。

do
{
	<循环语句>
}while(<循环条件>);

求位数

#include<stdio.h>
int main()
{
	int x;
	int n = 0;
	scanf("%d", &x);
	
	do{
		x /= 10;
		n++;
	}while(x > 0);
	
	printf("%d", n);
	return 0;

}

for循环

  for循环像一个计数循环,设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进行调整,如加一或减一。(for可以改写为while)

  • 如 for(count = 10; count > 0; count–)
    读作 “对于一开始的count = 10,当count > 0时,重复做循环体,每一轮循环在做完循环体内的语句后,使得count–”。

eg:阶乘:写一个程序,让用户输入n,然后计算出n!

阶乘

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i =1;
	
	for(i = 1; i <= n; i++){
		fact *= i;
	}
	printf("%d! = %d\n", n, fact);
	return 0;
}
#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i =1;
	
	for(i = n; i > 1; i--){
		fact *= i;
	}
	printf("%d! = %d\n", n, fact);
	return 0;
}

Tips for loops:

  • 如果有固定次数,用for
  • 如果必须执行一次,用do-while
  • 其他情况用while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值