第三章 流程控制 (1)

3.1流程控制之if语句

一、选择语句

if (x>100) //满足这个条件,则为1(真)。可继续执行括号中的内容---------如下
//括号中的内容,终究会被转换成0或1,是1(ture)才执行大括号中的代码语句{}。
{
printf("1111111\n");
}

例1、你富有不

#include <stdio.h>
int  main ()
{
​
    int money;
    printf("请问你有多少钱\n");
    scanf("%d",&money);
    if (money>100)
    {
        printf("youqian de \n");
        
    }
    return 0;
​
}

例2、另外场景和认知补充

​
​
#include<stdio. 
int main() 
​
{    
    int zaibu;    
     puts("zai :1.在家,2.不在");    
     scanf ("%d",&zaibu);   
        
     if (zaibu==1) //1成立。执行{}中的内容    
​
        {       
             puts("zhaodao");       
             puts("lou");    
        }      
          return 0;  
​
}
​
​

最大值公式:

z=(data1>data2)?data1:data2;

最小值公式:

z=(data1>data2)?data2:data1;

3.2 if经典案例代数法交换值

(1) 内存中后两个数,用代数值按从小到大输出两数
​
​

#include <stdio.h>
int  main ()
{
​
    int data1;
    int data2;
    int tmp;
    int z;
    
    puts("请输入两个数值:");
    scanf("%d %d",&data1,&data2);
    //z=(data1>data2)?data2:data1;
    
    if (data1>data2)
    {
        tmp=data1;
        data1=data2;
        data2=tmp;
        
    }
    printf("%d %d ",data1,data2);
    
    return 0;
​
}
​
#include <stdio.h>
​
 int main() 
​
{   int a; int b; int tmp;
    puts("请输入a和b两个数字:");
    scanf("%d %d",&a,&b);
    printf("a=%d,b=%d\n",a,b);
​
if (a>b)
{
    tmp=a;
    a=b;
    b=tmp;
    printf("从小到大顺序为:%d,%d\n",a,b);
}
​
return 0;
​
}

(2)不交换的土办法

#include<stdio.h>
int main()
{
    int data1;
    int data2;
    int datatmp;//不管怎么输入,data1中存放最小数
    
​
    printf ("请输入两个数:\n");
    scanf("%d,%d",&data1,&data2);
    
    if(data1>data2){
        datatmp=data1;//不管怎么输入,data1中存放最小数
        data1=data2;
        data2=datatmp;
        printf("最大值为%d\n",data2);
        printf("最小值为%d\n",data1);   
    }
​
    return 0;
​
}

作业:三个数呢?怎么实现
#include<stdio.h>
int main()
{
    int data1;
    int data2;
    int data3;
    int datatmp;//不管怎么输入,data1中存放最小数    
    printf ("请输入三个数:\n");
    scanf("%d,%d,%d",&data1,&data2,&data3);//不加\n
    if (data1>data2)
    {
        datatmp=data1;//不管怎么输入,data1中存放最小数
        data1=data2;
        data2=datatmp;
    }
    if (data1>data3)
    {
        datatmp=data1;//不管怎么输入,data1中存放最小数1
        data1=data3;
        data3=datatmp;
    }
    if (data2>data3)
    {
        datatmp=data2;//不管怎么输入,data2中存放最小数1
        data2=data3;
        data3=datatmp;
    }
    
​
    printf ("%d,%d,%d\n",data1,data2,data3);
    return 0;
​
}

​
​
#include <stdio.h>
int main()
{
    int a;
    int b;
    int c;
    int tmp;
    puts("请输入a,b,c三个数字:");
    scanf("%d,%d,%d",&a,&b,&c);
    printf("%d,%d,%d",a,b,c);
    
​
    if(a>b)
    {
        tmp=a;
        a=b;
        b=tmp;
        
    }
    
    if(a>c)
    {
        tmp=a;
        a=c;
        c=tmp;
        
    }
    
    if(b>c)
    {
        tmp=b;
        b=c;
        c=tmp;
        
    }   
    
    printf("%d,%d,%d\n",a,b,c);
​
    return 0;
​
}
​
​
结果:

D:\code\3>a.exe
请输入三个数:
7,10,4
4,7,10

3.3 逻辑判断与或非

<2 >逻辑运算符

1为真,0为假

(1)多重条件或/与
课程现敲代码:
#include <stdio.h>
int main()
{
    int a;
    int b;
    
    printf("请输入两个数字:");
    scanf("%d,%d",&a,&b);
    
    if(a==1 && b==0)
    {
        printf ("逻辑与成功");
    }
    if(a==1 || b==0)
    {
        printf ("逻辑或成功");
    }
    
    if(!a)
    {
        printf ("逻辑非成功");
    }
    
    return 0;
​
}
结果:

请输入a,b两个数:
0 7
逻辑非

(2)既有钱又有颜才合格、

#include <stdio.h>
int main()
{

	int havemoneyornot;
	int handsomeyesornot;
	
	printf("你有钱么:有的话扣1,没有的话扣0\n");
	scanf("%d",&havemoneyornot);
	
	printf("你帅么,帅的话扣1,不帅的话扣0\n");
	scanf("%d",&handsomeyesornot);
	
	if ( havemoneyornot==1 && handsomeyesornot==1 )
	{
		puts("不错的\n");
		
	}
	
	printf("相亲结束");


	return 0;

}
结果:

D:\code\3>a.exe
你有钱么:有的话扣1,没有的话扣0
1
你帅么,帅的话扣1,不帅的话扣0
1
不错的

相亲结束

#include<stdio.h>
int main()
{   
​
    int richyesornot;
    int handyesornot;//帅气
​
    printf("是否富裕?帅气?输入两个数1或0\n");
    scanf("%d %d",&richyesornot,&handyesornot);
    
    if(richyesornot==1&&handyesornot==1)
    {   
        printf("成功\n");
        
    }
    else    if(richyesornot==1||handyesornot==1)
    {
        printf("不成功\n");
        
    }
    return 0;
​
}

好女不嫁莆田男,好男不娶福州女**

#include <stdio.h>
int main()
{
​
    int havemoneyornot;
    int handsomeyesornot;
    int putianpyesornot;
    
    printf("你是莆田的么:是的话扣0,不是的话扣1\n");
    scanf("%d",&putianpyesornot);
    
    if(!putianpyesornot)
    {
        
        printf("好女不嫁莆田男");
        return -1;//-1!!!
    }
    
    printf("你有钱么:有的话扣1,没有的话扣0\n");
    scanf("%d",&havemoneyornot);
    
    printf("你帅么,帅的话扣1,不帅的话扣0\n");
    scanf("%d",&handsomeyesornot);
    
    /*if ( havemoneyornot==1 && handsomeyesornot==1 )
    {
        puts("不错的\n");
        
    }*/
    
    printf("相亲结束");
​
​
    return 0;
​
}
结果:

D:\code\3>a.exe
你是莆田的么:是的话扣0,不是的话扣1
0
好女不嫁莆田男

 #include<stdio.h>
int main()
{   
    
    int richyesornot;
    int handyesornot;//帅气
    
    printf("是否富裕?帅气?输入两个数1或0\n");
    scanf("%d %d",&richyesornot,&handyesornot);
    
    if(richyesornot==1&&handyesornot==1)
    {
        
        printf("成功\n");
        
    }
    else    if(richyesornot==1||handyesornot==1)
    {
        
        printf("不成功\n");
        
    }
    return 0;
​
}

#include <stdio.h>
int  main ()
{
    int money;
    int look;
    int putian;
        
​
    puts("你是莆田的么:不是的话扣1,是的话扣0\n");
    scanf("%d",&putian);
    
    if( !putian)
    {
        printf("好女不加莆田男\n");
        return -1;
    }
    
    puts("请输入是(1)和否(0):");
    scanf("%d %d",&money,&look);
    
    if(money==1 &&look==1)
    {
        printf("合格的\n");
        
    }
    else
    {
        printf("不合格的\n");
    }
    
    return 0;
​
}

return -1;代表函数非正常终止

return 1; 代表函数非正常终止

3.4 if else编程练习

1、输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。
/*A 十进制为  65  ,   a  十进制为   97*/
​
#include <stdio.h>
int  main ()
{
    char data;
    puts("请输入一个字符:");
    scanf("%c",&data);
    
    if(data>=65 && data<=97)
    {
        printf("%c",data+32);       
    }
    
    else if(data>=97 && data<=122)
    {
        printf("%c",data);
    }
    
    else{
        printf("输入错误,请输入正确字符");
    }       
    return 0;
​
}
//字母用  %c

2、身体好吗: (1) 好----- 帅吗,有钱吗 ---- 满足--------愿意跟我花吗------愿意---- 完美

不愿意----- 不完美

不满足------不做朋友

(2) 不好-- 不做朋友

if判断后,**先写else内容**

#include <stdio.h>
int  main ()
{
    
    int look;
    int health;
    int rich;
    int geting;
    
    puts("身体好吗?1或0");
    scanf("%d",&health);
    
    if(health==1)
    {
        puts("富裕吗?帅气么?1或0");
        scanf("%d %d",&rich,&look);
        if(rich==1&&look==1)
        {
            puts("愿意跟我花吗-1或0");
            scanf("%d",&geting);
            if(geting==1)
            {
                puts("完美\n");
            }
            else{
                puts("不完美\n");
            }
        }
        else{
            printf("不满足 ");
        }
    }
    else{
        printf("不能做p-engyou");
    }
    
    return 0;
​
}


结果

D:\code\复习\notpad++\if>a.exe
身体好吗?1或0
1
富裕吗?帅气么?1或0
1 1
愿意跟我花吗-1或0
1
完美

注:puts(“ ”),不加\n

3.6 列表选择

1、switch...case 并列关系

####

支持整型数,也支持字符

char a;

case 'a':

printf("11111")

break;

1、整型

#include <stdio.h>
int  main ()
{
    int data;
    printf("请输入一个数字");
    scanf("%d",&data);  
    switch(data)
    {
        case 1:
        case 2:
            puts("满足了条件1和2的情况");
            break;
        case 3:
            puts("满足了条件3的情况");
            break;
        case 4:
            puts("满足了条件4的情况");
            break;
        case 5:
            puts("满足了条件5的情况");
            break;
        default:
            puts("满足其他的情况");    
    }
    return 0;
}

2、字符 注意: getchar(); //吸收回车符,上个回车符,到字符型这边,回车当成一个字符

#include <stdio.h>
int  main ()
{
​
​
    int data1;
    printf("请输入一个数字\n");
    scanf("%d",&data1); 
    
    char data;
    
    switch(data1)
    {
        case 1:
        case 2:
            puts("满足了条件1和2的情况");
            break;
        case 3:
            puts("满足了条件3的情况");
            break;
        case 4:
            puts("满足了条件4的情况");
            break;
        case 5:
            puts("满足了条件5的情况");
            break;
        default:
            puts("满足其他的情况");    
    }
    
    printf("请输入一个字符\n");
    getchar();   //吸收回车符,上个回车符,到字符型这边,回车当成一个字符
    scanf("%c",&data);
    
    switch(data)
    {
        case 'a':
        case 'b':
            puts("满足了条件a和b的情况");
            break;
        case 'c':
            puts("满足了条件c的情况");
            break;
        case 'd':
            puts("满足了条件d的情况");
            break;
        case 'f':
            puts("满足了条件f的情况");
            break;
        default:
            puts("满足其他的情况");
            
    }
    
    return 0;
​
}

3.7 学生成绩等级划分

#include <stdio.h>
int main()
{
    int score;
    puts("请输入成绩数:");
    scanf("%d",&score);
    
​
    switch(score/10)
    {   
        case 1: //case 空格 1:
        case 2: 
        case 3:
        case 4:
        case 5:
            printf("等级为D,不及格\n");
        break;
                
        case 6:
            printf("等级为c\n");
        break;
        
        case 7:
            printf("等级为B\n");
        break;
        
        case 8:
            printf("等级为B\n");
        break;
        
        case 9:
        case 10:
            printf("等级为A\n");
        break;
        default:
            printf("请重新输入\n");
    }
    
    return 0;
​
}

结果:

D:\code\3>a.exe 请输入成绩数: 30 等级为D

3.8 路程算折扣

s路程 s<250,没有折扣

250<=s<500 2%折扣

500<=s<1000 5%折扣

1000<=s<2000 8%折扣

2000<=s<3000 10%折扣

2000<s 15%折扣

不能写成 250<=s<500,用逻辑与

一、if

#include<stdio.h>
int main()
{
    int zhekou;
    int lucheng;    
    
​
    puts("请输入路程为:");
    scanf("%d",&lucheng);
    
    if(lucheng<250)
    {
        zhekou=0;
    }else if(lucheng>=250 && lucheng<500)//不能写成250<s<500
    {
        zhekou=2;
    }else if(lucheng>=500 && lucheng<1000){
        zhekou=5;
    }else if(lucheng>=1000 && lucheng<2000){
        zhekou=8;
    }else if(lucheng>=2000 && lucheng<3000){
        zhekou=10;
    }else {
        zhekou=15;
    }
    
    printf("折扣为%f",(float)zhekou/100);
​
    return 0;
​
}

二、switch

#include <stdio.h>
int main()
{
    int lucheng;
    puts("请输入路程:");
    scanf("%d",&lucheng);
    int zhekou;
    
​
    switch(lucheng/250)
    {   
        case 0:
            zhekou=0;
            break;
        case 1: //case 空格 1
            zhekou=2;
            break;
        case 2: 
        case 3:
            zhekou=5;
            break;
        case 4:
        case 5:     
        case 6: 
        case 7:
            zhekou=8;
            break;
        
        case 8:
            zhekou=10;
            break;
​
​
        default:
            zhekou=15;
            break;
    }
​
    printf("%.2f\n",(float)zhekou/100);
    return 0;
​
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值