三、程序流程结构

一、程序结构分类:

在这里插入图片描述

(一)顺序结构:

从上到下依次执行

//华氏温度转换为摄氏温度
//转换公式:c=5/9(f-32)
#include <stdio.h>
int main(){
	double f;
	double c;
	f = 69.0;
	//注意:在整数的除法运算中,如果两个都是整数,则结果为整数
	//c = (5/9)*(f-32);//5/9为0
	c = (5.0/9)*(f-32);
	prirntf("69华氏温度的摄氏温度为:%lf\n",c);
}

(二)选择结构:

1.if 语句:

Alt 注意点:
在这里插入图片描述

2.if…else语句:

if(条件)[条件为真执行]
else[条件为假执行]

	int age;
   printf("请输入你的年龄:");
   scanf("%d",&age); //注意:scanf的%d后面不能加\n换行,否则回车无法输出 
   if(age >= 18){
   	printf("可以上网!");
   }else{
   	printf("滚回家去!");
   } 

3.if…elseif …else语句:

//成绩评定:大于等于90为A,80到90为B,60到80为C,60以下为D
	double score;
	printf("请输入你的成绩:"); 
	scanf("%lf",&score); 
	if(score >= 90){
		printf("A");
	}else if(score>= 80 && score < 90){//注意不要写为80>=score<90 
		printf("B");
	}else if(score >= 60 && score < 80){
		printf("C");
	}else{
		printf("D");
	} 
//输出a和b较大的数
	double a;
	double b;
	printf("请输入a的值:"); 
	scanf("%lf",&a);
	printf("请输入b的值:");
	scanf("%lf",&b); 
	if(a > b){
		printf("a");
	}else if(a == b){
		printf("a = b");
	}else{
		printf("b");
	}
//a大于等于 b则输出a 否则输出b 
	double a;
	double b;
	printf("请输入a的值:"); 
	scanf("%lf",&a);
	printf("请输入b的值:");
	scanf("%lf",&b); 
	printf("最大值:%lf\n",a>=b?a:b);

三目运算符:
逻辑运算表达式(a>b) ? 表达式2(a):表达式3(b) 为真则为表达式2,为假则为表达式3

4.switch语句:

在这里插入图片描述

//模拟计算器的+ - *,1为+ 2为- 3为* 4为/ 其他为非法操作 /
	int info;
	printf("请输入你的操作(1为+ 2为- 3为* 4为/ 其他为非法操作):"); 
	scanf("%d",&info);
	switch(info){
		case 1:
			printf("+");
			break;
		case 2:
			printf("-");
			break;
		case 3:
			printf("*"); 
			break;
		case 4:
			printf("/");
			break;
		default:
			printf("非法操作");
	}

注意事项:
switch语句的()里面的表达式只能是整型或者字符型

案例:

//通过程序实现两个数的交换
	int a = 2,b = 3; 
	printf("交换前:"); 
	printf("a = %d,b = %d\n",a,b);
	int temp;
	temp = a;
	a = b;
	b = temp;
	printf("交换后:");
	printf("a = %d,b = %d\n",a,b);
//判断用户输入的是否是闰年
/*
闰年:
	年份/4可整除但不能被100整除,或年份能被400整除*/ 
	int year;
	printf("请输入年份:"); 
	scanf("%d",&year); 
	if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
		printf("%d是闰年",year);
	}

(三)循环语句:

1.while语句:

先判断后执行

1.1.格式:

在这里插入图片描述

1.2.C语言实现:
int main(){
//用while实现5次hello world的输出
	int n = 1;
	while(n <= 5){
		printf("hollo world\n"); 
		n ++;//切记使用自加 否则陷入死循环 
	}
//求1到100的数的和
	int a = 1;
	int sum = 0;
	while(a <= 100){
		sum = sum + a;
		a++;//a++一般放在循环末尾 先执行sum求和 然后自加 
	}
	printf("%d\n",sum);

2.do_while语句:

先执行后判断

2.1.格式:

在这里插入图片描述

2.2.C语言实现:
//求1到100的数的和
	int a = 1;
	int sum = 0;
	do{
		sum = sum + a;
		a++;
	} while(a <= 100);//注意分号 
	printf("%d\n",sum);

3.for语句:

3.1.C语言实现:
//求1到100的数的和
   int i ; //操作数
   int sum = 0;//结果数 
   for(i = 1;i <= 100;i++){
   	sum = sum + i;
   } 
   printf("%d\n",sum);
3.2.执行顺序:

先判断,后执行循环体,然后自增或自减

4.循环嵌套:

C语言实现:

//for循环的嵌套
	int i;//外层
	int j;//内层
	for(i = 1;i <= 5;i++){
		printf("你好	");
		for(j = 1;j <= 5;j++){
			printf("hello	");
		} 
	} 

实现结果:
在这里插入图片描述外层循环每执行一次,内层循环执行一个大循环,可以讲内层循环理解为一个简单的语句,外层循环执行,内层循环完成自己的语句

5.循环结构的具体训练:

5.1.素数求和:

判断一个数是否为素数
素数:只能被1和它本身整除的数

方法一:

	int num;//接收用户输入 
	printf("请输入一个正整数:"); 
	scanf("%d",&num); 
	int i;//外层循环定义
	int count = 0;//素数计数 
	for(i = 1; i <= num;i++ ){
		if(num % i == 0){
			count ++;
		}
	} 
	if(count == 2){
		printf("%d是素数",num);
	} else{
		printf("%d不是素数",num);
	}   

方法二:

    int num;//接收用户输入 
	printf("请输入一个正整数:"); 
	scanf("%d",&num); 
	int i;//外层循环定义 
	for(i = 2; i <= num-1;i++ ){//剔除1和它本身 
		if(num % i == 0){
			break;
		}
	} 
	if(i <= num - 1){
		printf("%d不是素数",num);
	} else{
		printf("%d是素数",num);
	} 

方法三:

#include <math.h> //利用数学函数sqrt()[开根号]将判断的范围缩小

int main(){
	int num;//接收用户输入 
	printf("请输入一个正整数:"); 
	scanf("%d",&num); 
	int i;//外层循环定义 
	for(i = 2; i <= sqrt(num);i++ ){//剔除1和它本身 
		if(num % i == 0){
			break;
		}
	} 
	if(i <= sqrt(num)){
		printf("%d不是素数",num);
	} else{
		printf("%d是素数",num);
	} 
5.2.水仙花数(三位数):

153 = 1^3 + 5^3 + 3^3 = 153
注:计算机表达5的三次方是 5 * 5 * 5
类型一:

#include <stdio.h> 
#include <math.h>//pow()为求n方函数 :pow(2,2) = 2^2 

int main(){
	int num;//接收用户输入 
	printf("请输入一个三位正整数:"); 
	scanf("%d",&num);
	
	//获取个十百位 
	int ge = num % 10; 
	int shi = num / 10  % 10;
	int bai = num / 100;
	
	//判断是否为水仙花数 
	int sum = pow(ge,3) + pow(shi,3) + pow(bai,3);
	if(sum == num){
		printf("%d是水仙花数!",num);
	}else{
		printf("%d不是水仙花数!",num);
	}
	return 0;
}

类型二:

#include <stdio.h> 
#include <math.h>//pow()为求n方函数 :pow(2,2) = 2^2 

int main(){
	int i;
	int sum;//三位求和 
	for( i = 100; i <= 999; i ++){
		//获取个十百位 
		int ge = i % 10; 
		int shi = i / 10  % 10;
		int bai = i / 100;
			
		//求和 
		sum = pow(ge,3) + pow(shi,3) + pow(bai,3);
		
		//判断是否为水仙花数 
		if(sum == i){
			printf("%d是水仙花数!",i);
		}
	} 
	return 0;
}
5.3.斐波拉切数列:

1 1 2 3 5 8 13 21 :后一个数是前两个数的和

# include <stdio.h> 
//1 1 2 3 5 8 13 21 :后一个数是前两个数的和
//用户输入6 则输出第三个数列,即8 
int main(){
	int n;//接收用户输入
	printf("请输入一个正整数:"); 
	scanf("%d",&n); 
	
	int f1 = 1,f2 = 1;//定义出数列的前两个
	
	int result = 0;
	int i ;
	for(i = 3;i <= n;i ++){
		result = f1 + f2;
		f1 = f2;
		f2 = result;
	}
	printf("%d	",result);
	return 0;
}
5.4.打印九九乘法表:
int i ,j;
	for(i = 1;i <= 9;i ++){
		for(j = 1;j <= i ;j ++){//注意j <= i 不要写为j <= 9
			printf("%d*%d=%d	",j,i,i*j);	
		}
		printf("\n");
	}

二、跳转语句:

(一)break:

在这里插入图片描述

(二)continue:

在这里插入图片描述

(三)goto:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值