6、C语言:选择结构和循环结构

逻辑表达式

  • 逻辑运算符有 ! && || 三种,运算优先级依次降低
    逻辑表达式就是用逻辑运算符将关系表达式或逻辑量连接起来
    例如:x>1 && x<10
  • 在逻辑表达式的求解过程,只要能确定表达式的值,就不继续向下求解其他值了
    例如:
    若 a=3, b=2, c=6, d=5, n=8, 求(m=a<b)&&(n=c-d)的值
    由于在求解 m=a<b 的时候,结果=0,两项之间又是&&运算
    所以不管右边一项结果是0还是1,最后整个结构都是0
    电脑就不会再计算右边的值了,而是直接给出0的结果
  • 逻辑表达式的常见表示
    1)判断字符变量ch是否为数字字符
    (ch >= '0') && (ch <= '9')
    2)判断字符变量ch是否为英文字母
    ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'z'))
    3)设定数据的表示范围
    (a>0 && a<1) && (b>0 && b<1)
    x>=0 && x<=100

选择结构

  • if-else 选择结构
    语法格式:else总是和它上面离他最近的未配对的if相匹配
    if(表达式1)
    	语句A;
    else if(表达式2)
    	语句B;
    else
    	语句C;
    
    例子:将百分制分数转换成五级分制
    #include <stdio.h>
    int main(){
    	int a;
    	printf("Please input score:\n");
    	scanf("%d",&a);
    	if (a>100 || a<0){
    		printf("error!\n");
    	}
    	else if (a>=90){
    		printf("grade = 5");
    	}
    	else if (a>=80){
    		printf("grade = 4");
    	}
    	else if (a>=70){
    		printf("grade = 3");
    	}
    	else if (a >= 60){
    		printf("grade = 2");
    	}
    	else{
    		printf("no good");}
    	return 0;}
    
  • switch选择结构
    语法结构:
    break一般不能漏掉,但有时候为了实现特殊的逻辑可以省略
    每个case后的执行语句可以多于一个,不用加{ },但好习惯还是加上吧
    default语句可以省略
    if可以实现任何一种选择结构,但不是所有if都有对等的switch结构,即switch不能表示所有的选择结构
    switch(intchar型表达式){
    	case 常量1: 语句1;break;
    	case 常量2: 语句2;break;
    		....
    	case 常量n: 语句n;break;
    	[default: 语句n+1;break;]
    }
    
    例子:输入某年某月计算该年该月共有几天
    // 年份能被4整除但不能被100整除,或者能被400整除,是闰年
    int year,month,day=0;
    scanf("%d%d",&year,&month);
    switch(month){
    	case 1:
    	case 3:
    	case 4:
    	case 5:
    	case 6:
    	case 7:
    	case 8:
    	case 9:
    	case 10:
    	case 11: day = 30;break;
    	case 12: day = 31;break;
    	case 2:
    		if((year%4==0 && year%100!=0)||(year%400==00))
    			day = 29;
    		else
    			day = 28;
    		break;
    	default: printf("error\n");}
    printf("%d年%月有%d天,year,month,day);
    return 0;}	
    

循环结构

  • for循环
    语法格式:
    表达式1给循环变量赋值
    表达式2是循环条件
    表达式3是循环变量修正
    三个表达式都可省略,但分号要保留

    for(表达式1; 表达式2; 表达式3){语句;}
    
  • while循环
    语法格式:
    表达式类型不限
    先判断条件再执行语句

    while(表达式){
    	语句;}
    

    例子:

    //  用putchar在屏幕上输出一排9个星号
    #include<stdio.h> 
    
    int main(){
    	char ch = '*';
    	int i=0;
    	while(i<9){
    		putchar(ch);
    		i++;
    	}
    	return 0;
    }
    
  • do while循环
    语法格式:
    先执行语句再计算表达式的值进行判断,所以循环体至少执行一次

    do{语句;}while(表达式);
    

    例子:输入一批整数,输入0时表示输入结束,求正整数的个数

    // 输入一批整数,输入0时表示输入结束,求正整数的个数 
    #include<stdio.h> 
    int main(){
    	int a,count=0;
    	do{
    		scanf("%d",&a);
    		if(a>0) count++;
    	} while(a);
    	printf("%d",count);
    	return 0;}
    
  • 三种结构总结
    1)循环次数确定的情况下多用for
    2)循环次数不确定的多用while
    3)如果要在循环体中为循环变量初始化,用do while

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值