C语言学习day3

本文详细介绍了C语言中的程序结构,包括顺序结构、分支结构(if,if-else,switch语句)、循环结构(while,do-while,for循环)以及转向语句(break,continue,goto,return)。通过对这些基本结构的学习,读者可以掌握C语言的基础编程技巧。
摘要由CSDN通过智能技术生成

目录

一.c语言程序结构

      1.1程序结构分类:

      1.2 条件判断语句(分支结构)

            1.2.1 if语句形式

            1.2.2 if --else语句形式

            1.2.2 if 嵌套语句形式

             1.2.3 swicth语句

   1.3循环语句(循环结构)

             1.3.1while循环

             1.3.2 do ..while()循环

              1.3.3 for循环

   1.4转向语句

              1.4.1 break语句

              1.4.2 continue语句

              1.4.3goto的基本使用格式

              1.4.4 return语句


一.c语言程序结构

      1.1程序结构分类:

                 c语言中的程序结构分为以下几种:顺序结构,分支结构,循环结构

                  顺序结构:按照程序的顺序执行语句。分支结构,循环结构下面笔记会提起。

      1.2 条件判断语句(分支结构)

               1.2.1 if语句形式

注意:c语言中没有显示的布尔类型,若想使用则需要包含头文件  "stdbool.h",这里写bool类型
只是为了方便理解

if语句语法格式:    
                if (表达式){ 
                    代码块;
                     }
                语句2;

if语句的表达式的值是bool类型的数据只有真假之分,若表达式的值为真,则执行代码块
里面的程序代码,若为假那么会跳过if分支结构而去执行语句2的代码。

                    例如:查找id为1234的学生是否存在

//例如:查找id为1234的学生是否存在

#include<stdio.h>
int main(){
    int id=1234;   //操作系统会给  类型为id的变量在栈区分配一块内存空间
    int my_id;    //定义一个变量存放查找学生的学号

    printf("请输入学号: ");

    scanf("%d",&my_id);  //把输入的数据存放到变量my_id的内存空间里,初始化my_id

    if(id==my_id){     //判断学生是否存在,存在则执行if代码块里面的语句,然后跳出main()函数
        printf("id : %d 的学生存在\n",my_id);
        return 0;    
        }  
                        //不存在则跳过if语句代码块里面的语句,直接执行if代码块后面的语句

    printf("id : %d 的学生不存在\n",my_id);
    return 0;  //跳出manin()函数
}

               1.2.2 if --else语句形式

这里只举例四个分支
if -- else 形式:
    语法结构:    
            if(表达式1){
                    代码块1;            
            }else if(表达式2){
                    代码块2;
            }else if(表达式3){
                    代码块3;
            }else{
                    代码块4;
            }
说明:
    当表达式1为真时则会执行代码块1,而后面三个分支语句不会执行(就是结束整个if分支)。
    若是表达式1为假则会跳过第一个if分支,而后开始判断表达式2结果的真假,若是表达式2为真,
则会执行代码块2的内容,然后结束整个if分支。
    若是表达式1,2,3都不满足则会执行代码块4,然后跳出整个if分支。

                例:查看成绩学生成绩为优,良,中,差中的哪一种。100-90为优,89-70为良 ,69-60为中,0-59为差

//查看成绩学生成绩为优,良,中,差中的哪一种。100-90为优,89-70为良 ,69-60为中,0-59为差

#include<stdio.h>
int main(){
    int score;
    printf("请输入你要查询的成绩\n");
    scanf("%d",&score);

    if(score>=90 && score<100){
        printf("成绩 %d 为优\n",score);
    }else if(score>=70 && score<90){
        printf("成绩 %d 为良\n",score);
    
    }else if(score>=60 && score<70){
        printf("成绩 %d 为中\n",score);
    }else if(score<60 && score>=0){
        printf("成绩 %d 为差\n",score);
    
    }else{
        printf("输入不合法");
    }
    return 0;
}

                1.2.2 if 嵌套语句形式

嵌套if语句:运行规则与if和if--else没有区别不在赘述
        
        if(外层表达式){
                if(表达式2){
                    代码段1;
                }else{
                    代码段2;
                }

        }else{

                if(表达式3){
                    代码段3;
                }else{
                    代码段4;
                }

        }

例:判断2000---2500年中的每一年是否为闰年,并将闰年的次数累计,最后将累计结果输出。

        在这里为了演示嵌套循环把判断条件拆开写了,while()循环下面会详细说明。

//判断2000---2500年中的每一年是否为闰年,并将闰年的次数累计,最后将累计结果输出。
#include<stdio.h>
int main(){
    //变量使用时要进行初始化
    int year=2000;
    int count=0; 
       
    while(year<=2500){
        if((year%100)==0){
            if((year%400)==0){
				year++;
                count++;
            }else{
				year++;
                continue;
            }
    
        }else if((year%100)!=0){
            if((year%4)==0){
				year++;
                count++;
            }else{
				year++;
                continue;
            }

        }
    }
	printf("闰年有 %d 个",count);
    return 0;

             1.2.3 swicth语句

switch语句格式:
    
    swicth(表达式){
        case  常量表达式1:
              代码块1;
              break;
        case  常量表达式2:
              代码块2;
              break;
        case  常量表达式3:
              代码块3;
              break;
        case  常量表达式4:
              代码块4;
              break;
        .....
        default:
              代码块
    }
switch语句执行方法:
    Switch后面的表达式必须是整型或者字符型值,常量表达式是指在编译期间对表达式求得的值。
如果表达式的值等于 第二个常量表达式的值那么就执行第二条case语句里面的内容。通俗来说就是等于
哪个常量表达式就执行哪个case里面的语句,若是都不满足就执行默认代码块。

注意:若是case语句代码块中没有break关键字会出现case穿透现象。
case穿透现象:执行完某一个分支的代码块后,会继续执行下面分支的代码块(不判断),直到遇到break
或者整个switch..case语句结束----case击穿

   1.3循环语句(循环结构)

             1.3.1while循环

注:bool类型C语言中需要引入头文件才能使用,这里引入bool类型是为了方便理解。
while循环格式:
    
    while(表达式){
        代码块;
    }
    
 表达式的结果是bool类型的,只要表达式的结果为真那么while循环就一直执行,直到
表达式结果为false结束while()循环

例:求1--100所有元素的和

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

    int sum=0;
    int i=1;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("1到100的和为:%d\n ",sum);
    return 0;
}
/*猴子吃桃问题
一只猴子第1天摘了若干个桃,当即就吃了一半数量的桃
没吃过瘾,又多吃了一个,
第2天在剩下的桃子里面又吃了一半数量的桃,没吃过瘾,又多吃了一个
以后的每天都按照这种方式去吃桃
直到第10天再想吃的时候,发现只剩下一个桃了。
问:猴子第一天摘了多少个桃。 要求:用while循环处理。*/

#include<stdio.h>
int main(){
    int day=10;  //天数
    int peach_count=1; //剩余的桃子的数量
    while(day>1){    //注意最后一天没有吃桃子
        peach_count++;
		peach_count*=2;
		day--;
    }
    printf("peach_count=%d",peach_count);
    return 0;
}

                  1.3.2 do ..while()循环

do ..while()循环语法格式:
        
        do{
            代码块
        }while();

do ..while()使用说明:当使用do while()循环时会先执行里面的代码块块然后再进行判断条件,不论条
件是否满足do while循环至少执行一次。
例如:
    
#include<stdio.h>
int main(){
    int i=1;

    do{
    printf("i=%d",i);
    }while(i>1);
    //i>1条件不满足,但是do while循环里面的代码还是运行了
    
    return 0;
}

                 1.3.3 for循环

for循环格式:
         for(表达式1;表达式2;表达式2){
            代码块;
          }
使用说明:通俗来说就是一下的作用。
    表达式1:通常用来给循环变量赋初始值
    表达式2:用来结束for循环的,它的结果是一个bool类型的。不是true就是false
    表达式3:通常用来给表达式1的变量的值的

    {}括号里面为循环体
    
for循环执行步骤:先执行初始表达式,而后执行Boolean表达式,再然后执行循环体
循环体执行完后执行更新表达式1。

下面语法中会介绍for循环表达式的几个用法

例:求1到100的和

#include<stdio.h>
int main(){
    int i;
    int sum=0;
    for(i=0;i<=100;i++){

    sum+=i;
    }
    printf("sum=%d\n",sum);

    return 0;
}

   1.4转向语句

                1.4.1 break语句

break的作用:跳出循环体,执行循环体之后的语句

例如:写一个for循环实现1--50相加

#include<stdio.h>
#include<stdbool.h> //这里使用了bool类型,需要引入一个头文件
int main(){
    int i=0;
    int sum=0;
                /*for循环里面的第一个表达式可以在外部定义。第二个表达式的结果是一个
bool类型的,用来结束for循环的。这里写了一个死循环,如果没有break语句的话*/
    for(;true;i++){
        sum+=i;
		if(i>50){    //当i自增到51时会执行if判断语句里面的break语句,跳出for循环
		break;
		}
    }
    printf("sum=%d\n",sum);
    return 0;
}

                1.4.2 continue语句

continue语句的作用:结束本次循环开始下次循环

例如:有一个数列 1  2  3  4  5  6,需要在控制台上打印1,2,5,6

//例如:有一个数列 1  2  3  4  5  6,需要在控制台上打印1,2,5,6
#include<stdio.h>
int main(){

    for(int i=1;i<=6;){

        if(i==3||i==4){  //执行if分支的时候不要忘了i++,给for循环一个结束的条件
		i++;	
        continue;
        }
        printf("%d  ",i);
		i++;
    }
       printf("\n");
    return 0;

}

               1.4.3goto的基本使用格式

代码块1; goto 标识符; 
代码块2; 
标识符: //标签
代码块3;

goto语句执行逻辑:先执行代码块1,然后遇到了goto,立即跳转到对应的标签继续向下执行代码块3

代码块2被跳过了,不会被执行。

上面的标识符要符合命名规范,一般goto语句中采用大写。
注意:goto不能跨函数使用,并且使用goto语句对代码的逻辑性和易读性有一定的影响,使用时要谨慎。


例:使用goto循环打印1到100的和

#include<stdio.h>
int main(){
    int i=1;
    int sum=0;
LOOP:
    sum+=i;
    i++;
    if(i<=100){
        goto LOOP;
    }
    printf("sum=%d\n",sum);
    return 0;
}

                1.4.4 return语句

return语句的作用:
       作用一:用来结束函数的运行。
       作用二:用来返回函数运行的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值