C语言流程控制
选择结构
1.if…else…
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc:计算函数
*/
int main()
{
float x;
float y;
puts("请输入x的值:");
scanf("%f",&x);
if(x<1){
y = x;
}else if(x >= 1 && x < 10){
y = 2 * x - 1;
}else{
y = 3 * x - 11;
}
printf("输入x的值是%f,输出y的值是%f\n",x,y);
return 0;
}
2.switch…case…
#include <stdio.h>
int main()
{
int data;
printf("请输入一个数:\n");
scanf("%d",&data);
switch(data){
case 1: //case中传递的也可以是字符,如‘A’、‘B’、'C'
puts("满足了条件1的情况");
break;
case 2:
puts("满足了条件2的情况");
break;
case 3:
case 4:
puts("满足了条件3和4的情况");
break;
default:
puts("其他非列表中的情况");
}
return 0;
}
#include <stdio.h>
/*
auth:wanglisha
date:2022.09.13
desc: 根据分数划分等级
*/
int main(){
int score;
char level;
puts("请输入您的分数:");
scanf("%d",&score);
switch(score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
level = 'E';
break;
case 6:
level = 'D';
break;
case 7:
level = 'C';
break;
case 8:
level = 'B';
break;
case 9:
case 10:
level = 'A';
break;
default:
break;
}
printf("您输入的成绩是%d,您的等级是%c",score,level);
return 0;
}
3.计算折扣
#include <stdio.h>
/*
auth: wanglisha.
date: 2022.09.12
funDesc: switch case 实现路程折扣
*/
int main()
{
int howFar;
int count;
puts("请输入路程:");
scanf("%d",&howFar);
if(howFar<250){
count = 0;
}else if(howFar >= 250 && howFar < 500){
count = 2;
}else if(howFar >= 500 && howFar < 1000){
count = 5;
}else if(howFar >= 1000 && howFar < 2000){
count = 8;
}else if(howFar >= 2000 && howFar < 3000){
count = 10;
}else{
count = 15;
}
printf("折扣是:%.2f\n",(float)count/100);
return 0;
}
4.函数计算
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc:计算函数
*/
int main()
{
float x;
float y;
puts("请输入x的值:");
scanf("%f",&x);
if(x<1){
y = x;
}else if(x >= 1 && x < 10){
y = 2 * x - 1;
}else{
y = 3 * x - 11;
}
printf("输入x的值是%f,输出y的值是%f\n",x,y);
return 0;
}
5.计算成绩
6.计算0到100的和
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc:计算0到100的和
*/
int main(){
int sum = 0; //变脸最好初始化成0,这是一个好习惯
int data = 1; // 变量的类型、变量的值、变量的内存空间、变量的名称
while(data <= 100){
printf("data=%d\n",data);
sum = sum + data;
data++;
}
printf("0到100的和是%d\n",sum);
return 0;
}
while循环控制语句
while死循环
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc:do while的使用——日后再说
*/
int main(){
int data = 0;
/*
while(data != 0){
printf("this is a test\n");
data--;
}
*/
//这是一个死循环,日后再说
do{
printf("this is a test\n");
data --;
}while(data!=0);
return 0;
}
while循环的应用
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc:while循环的应用
times--; == time = time - 1;
times++; == time = time + 1;
*/
int main(){
int times;
times = 0;
//这里wihile的值需要避免死循环,除了c51单片机之外
while(times<10){ // 这里的1010是一个逻辑值,表示一直满足的意思,ctrl+c才能结束程序
puts("I LOVE YOU");
//times = times - 1; 等价于
//times--;
//times = times + 1; 等价于
times++;
printf("times:%d ",times);
}//条件不满足,推出循环
return 0;
}
for循环控制语句
#include <stdio.h>
int main(){
int data = 0;
// 表达式1:赋初值
// 表达式2:判断临界条件
// 表达式3:条件改变
//for(表达式1;表达式2;表达式3){
//}
for(;data<10;){
puts("test 01");
data ++;
}
//for死循环
/*
for(;;){
puts("test 01");
}
*/
//for循环中可以定义循环变量
for(int j = 0;j< 10;j++){
puts("test 02");
}
return 0;
}
break提前结束循环
#include <stdio.h>
int main(){
int numOfPerson = 1;
int totalMoney = 0;
int money;
while(numOfPerson<=1000){
//for(numOfPerson=1;numOfPerson<1000;numOfPerson++){
puts("请输入捐款的数目:");
scanf("%d",&money);
totalMoney = totalMoney + money;
if(totalMoney >= 100000){
puts("很棒,以及到达10万元\n");
break;
}
numOfPerson++;
}
printf("总捐款人数是%d\n",numOfPerson);
printf("每个人的平均捐款数据是%.2f\n",(float)totalMoney/numOfPerson);
return 0;
}
continue提前结束本次循环
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc: continue 获取100到200中所有能被3整除的数
*/
int main(){
int data;
for(data=100;data<200;data++){
if(data % 3 == 0){
continue;
}
printf("%d ",data);
}
return 0;
}
循环嵌套
#include <stdio.h>
int main(){
int i,j;
for(i=1;i<=4;i++){
for(j=1;j<=5;j++){
printf("%d ",i*j);
}
printf("\n");
}
return 0;
}
求两数的最大公约数和最小公倍数
#include <stdio.h>
/*
auth: wanglisha.
data: 2022.09.13
desc: 求nm的最小公倍数、最小公约数
1.什么是最大公约数?
能够整除多个整数的最大正整数,多个整数不能为0
例如8和12的最大公约数是4
2.什么是最小公倍数?
两个会或多个整数公有的倍数叫做他们的公倍数,除了0之外最小的倍数叫做最小公倍数
例如6和24的最小公倍数为24
*/
int main(){
int n,m,temp;
// 输入2个数
printf("请输入任意2个非0整数:\n");
scanf("%d%d", &m,&n);
// 比较2个数的大小,m存储大值
if(n>m){
// 替换m和n的值
temp = n;
n = m;
m = temp;
}
// 从最大的数开始找最大共倍数 同时满足能整除 2个数 的值
for(int i=m;i>0;i++){
if(i%m==0 && i%n==0){ // 能被整除 即为 取余为0
printf("%d 和 %d 的最大公约数为:%d\n", m,n,i);
break;
}
}
// 条件满足则退出循环
return 0;
}
上面是求最大公倍数,下面是求最小公约数:
int main(){
int n,m,temp;
// 输入2个数
printf("请输入任意2个非0整数:\n");
scanf("%d%d", &m,&n);
// 比较2个数的大小,m存储大值
if(n>m){
// 替换m和n的值
temp = n;
n = m;
m = temp;
}
// 按照从大到小的顺序查找公约数
for(int i=n;i>0;i++){
if(m%i==0 && n%i==0){ // 能被整除 即为 取余为0
printf("%d 和 %d 的最大公约数为:%d\n", m,n,i);
break;
}
}
// 条件满足则退出循环
return 0;
}
使用C语言求水仙花数
#include <stdio.h>
/*
auth:wanglisha.
date:2022.09.13
desc: 使用C语言求水仙花数
什么是水仙花数?
水仙花数是指一个三位数,他的每个位上的数字的3次幂之和等于他本身;
例如:1^3 + 5^3 + 3^3 = 153
*/
int main(){
int n;
int shi;
int bai;
int ge;
printf("所求水仙花数:\n");
for(n=100;n<1000;n++){
bai = n/100;
shi = n/10%10;
ge = n%10;
if(n == (bai*bai*bai + shi*shi*shi + ge*ge*ge)){
printf("%-5d",n);
}
}
return 0;
}