重新学习C语言 day2

选择语句

if语句

if(表达式){
执行代码块;
}
else{
执行代码块;
}

注:C#中的 if() 后面没有分号,直接写{}

#include <stdio.h>
int main(){
    int coding = 0;
    printf("你会选择去努力学习敲代码吗?(选择1或0)>:");
    scanf("%d", &coding);
    if (coding == 1){
        printf("加油你会有好offer和高薪酬。\n");

    }
    else{
        printf("回家卖烤白薯去吧。\n");
    }
    return 0;
}

多分支:

//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
#include <stdio.h>
int main(){
    int age = 18;
    printf("你多少岁了:");
    scanf("%d", &age);
    if (age < 18){
        printf("你原来还蛮小的\n");
    }
    else if (age >= 18 && age < 30){
        printf("你成年了哇,但还蛮年轻的\n");
    }
    else if (age >= 30 && age < 50){
        printf("正是年富力强的时候啊\n");
    }
    else{
        printf("年纪不小了,注意身子骨\n");
    }
    return 0;
}

嵌套if语句

#include <stdio.h>
int main(){
    int a = 89;
    if (a > 88){
       if (a > 99){
          printf("%d\n", ++a);
       }
       else{
          printf("%d\n", --a);
       }
    }
    else{
       printf("错误\n");
    }
    return 0;
}

switch语句

多分支时使用:

switch(表达式){
    case 常量1:语句1;
    break;
    case 常量2:语句2;
    break;
    default:语句n;
    break;
}

根据switch后面表达式的结果,寻找匹配的case,并执行case后面的语句,一直到break为止。

如果没有遇到 break 那就接着执行下面的语句。如果所有的case都不匹配,那么就执行default 后面的语句。

如果没有default,那么程序就什么都不会执行,直接跳过switch case 语句。

#include <stdio.h>
int main(){
    int day = 0;
    printf("今天是星期几?");
    scanf("%d", &day);
    switch (day){
    case 1: printf("星期一\n");
        break;
    case 2: printf("星期二\n");
        break;
    case 3: printf("星期三\n");
        break;
    case 4: printf("星期四\n");
        break;
    case 5: printf("星期五\n");
        break;
    case 6: printf("星期六\n");
        break;
    case 7: printf("星期天\n");
        break;
    default: printf("你说的我不懂\n");
        break;
    }
    return 0;
}
#include <stdio.h>
//输入1-5,输出的是“weekday”
//输入6-7,输出“weekend”
int main()
{
    int day = 0;
    switch(day)
   {
        case 1: 
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

注:switch case 语句的结果只能是整数(int)类型

break: 结束运行。

循环语句

C语言中有三种循环结构

while 循环

while(表达式){
循环语句;
}
#include <stdio.h>
//打印1-10
int main(){
    int i = 1;
    while(i < 11){
        printf("%d\n", i);
        i++;
    }
    return 0;
}

break

#include <stdio.h>
//打印结果为1-4
int main(){
    int i = 1;
    while(i < 11){
        if(i == 5){
           break; 
        }
        
        printf("%d\n", i);
        i++;
    }
    return 0;
}

循环中只要遇到break就停止后期的所有循环,直接终止循环。

continue

用于终止本次循环的,也就是在本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

#include <stdio.h>
//打印1-5
int main(){
    int i = 1;
    while(i < 11){
        if(i == 6){
           continue; 
        }
        printf("%d\n", i);
        i++;
    }
    return 0;
}

写循环语句时需要保证循环条件的正确性,否则可能出现死循环。例如,如果循环条件中的变量没有被更新,那么循环可能会一直执行下去,导致程序陷入死循环。另外还需要注意break和continue的放置位置。

#include <stdio.h>
 
int main() {
    int i = 0;
    while (i < 10) {
        i++;
        if (i % 2 == 0) {
            continue;  // 跳过偶数
        }
        printf("%d ", i);
    }
    return 0;
}

 for 循环

for(表达式1; 表达式2; 表达式3)
// 表达式1为初始化部分,用于初始化循环变量的。

// 表达式2为条件判断部分,用于判断循环时候终止。

// 表达式3为调整部分,用于循环条件的调整。
循环语句;
#include <stdio.h>
int main(){
    int i = 0;
    for(i = 1; i <= 10; i++){
        printf("%d", i);
    }
    return 0;
}

for循环相较于while循环的好处在于其条件集中,在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。

日常运用的仍是for循环偏多。

通常for循环内部的循环变量的取值,采用的是前闭后开的写法。

int i = 0;
//前闭后开的写法
for(i=0; i<10; i++){
}
//两边都是闭区间
for(i=0; i<=9; i++){
}

do-while 循环

do{
    循环语句;
}while(表达式);
循环至少执行一次,使用的场景有限,所以不是经常使用。
#include <stdio.h>
int main(){
    int i = 0;
    do{
        printf("%d", i);
        i++;
    }while(i < 10);
    return 0;
}

练习:

1.计算n的阶乘

#include <stdio.h>
int main(){
    int i = 0;
    int n = 1;
    int size = 1;
    printf("我想求一个数的阶乘:");
    scanf("%d", &n);
    for(i = 1; i <= n; i++){
        size = size * i;
    }
    printf("结果为:%d", size);
    return 0;
}

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值