• 初学c语言


    一.思维导图

    二.自己对语法的认识

    1.if-else

    if(条件句){
        语句1;
    }
    else{
        语句2;
    }

      注意点:else后没有条件,else和if中间不可以加入其他的东西。

    2.switch 

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

      注意点:常量表达式不可重复;如果句末没有break会顺序向下执行。

    3.for

    for(表达式1;表达式2;表达式3){
        循环语句;
    }

      注意点:三个表达式需要用“;”隔离开,且没有表达式时也不可省略分号;执行时先计算表达式1,在判断表达式2,若为“真”则执行循环语句,接着计算表达式3。

      遇到过的问题:表达式3没有和表达式2呼应,造成死循环。

    4.while

    while(表达式){
        循环语句;
    }

      注意点:当表达式为“真”时,循环执行,直到表达式为“假”。

    5.do-while

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

      注意点:先执行循环语句再判断循环条件,无论条件值如何,至少会执行一次循环体。

    6.break以及continue

      (1)break可用在循环结构中,以在某种情况下提前结束循环,例如:

    for(表达式1;表达式2;表达式3){
        if(表达式4)
            break;
    }

      一旦当表达式4为“真”时就会结束循环体。

      也可用在switch语句中来跳出switch结构,例如:

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

      如果执行语句段1,在执行完语句段1后,有break,则会跳出switch结构,而如果没有break,则会接着执行语句段2。

    三.代码分析

    1.

     

    /*基本思路:
        1.题目中有算阶乘,所以需要一个用来算某一个数阶乘的函数
        2.算序列前N项和,所以需要一个循环体来实现前N项的目的
        3.循环体中某一个变量从1加到N,并每次调用阶乘函数,来达到阶乘序列的目的
        4.定义一个变量来储存每一项阶乘
    */
    #include<stdio.h>
    
    int fact(int amount);//阶乘函数声明
    
    int main() {
        int N;
        scanf("%d", &N); //输入N
        int sum = 0; //定义变量来求和
        for (int x = 1; x <= N;x++) { //循环体实现一次次的函数调用,x每次都加1
            sum += fact(x); //调用函数求阶乘,并加入到sum中
        }
        printf("%d", sum); //输出sum
        return 0;
    }
    int fact(int n) { //此函数实现对形参求阶乘
        int product = 1;
        while (n > 0) {
            product *= n;
            n--;
        }
        return product; //返回阶乘值
    }

    注:解题思路在注释中表明。

    总结:完成该题后我学会了利用循环结构可以反复的调用函数,对循环的条件的掌握更加的熟练了。

    2.

    /*基本思路:
        1.大小比较核心为if-else结构
        2.本题为从小到大排列,不妨定义为num1,num2,num3三个数,可以先让num1和num2进行比较,
          如果num1大于num2,则让它两交换位置,如果num1小于num2,则不用交换,然后依次两两
          比较并交换,最后只要按顺序输出交换完毕的num1,num2,num3。
    */
    #include<stdio.h>
    int main(void) {
        int num1, num2, num3, x;
        scanf("%d %d %d", &num1, &num2, &num3); //输入三个数
        if (num2 < num1) {  //利用三个if语句来实现比较和交换的目的
            x = num1;       //注意:这里需要另外一个数作为中间数,来实现两个数的交换
            num1 = num2;    //num1=num2;<-
            num2 = x;       //num2=num1;<-这样写是错误的
        }
        if (num3 < num1) {
            x = num1;
            num1 = num3;
            num3 = x;
        }
        if (num3 < num2) {
            x = num3;
            num3 = num2;
            num2 = x;
        }
        printf("%d->%d->%d", num1, num2, num3); //按顺序输出交换完毕的num1,num2,num3
        return 0;
    }

    注:解题思路在注释中表明。

    总结:完成该题后我学会了两个数的交换需要一个媒介,例如这题,需要x作为中间值来实现交换。

    3.

    /*基本思路:
        本题我们可以以输入的符号作为突破点,
        利用switch结构,实现对不同符号进行不
        同运算的目的,除了题目要求的五种运
        算符之外,只要输入其他的运算符,都
        进入default输出ERROR
    */
    #include<stdio.h>
    int main(void) {
        int num1, num2;
        char symbol;    //运算符为字符型,需要用char来定义,用%c来输入
        scanf("%d %c %d", &num1, &symbol, &num2);
        switch (symbol) {    //每项的语句段后加break,用以执行完我们需要的语句段后跳出switch
            case '+':printf("%d", num1 + num2); break;
            case '-':printf("%d", num1 - num2); break;
            case '*':printf("%d", num1 * num2); break;
            case '/':printf("%d", num1 / num2); break;
            case '%':printf("%d", num1 % num2); break;
            default:printf("ERROR"); break;    //只要不是上面五种运算符,就输出ERROR
        }
        return 0;
    }

    注:解题思路在注释中表明。

    总结:完成该题后我学会了switch中的常量表达式还可以是字符。

      

      

  • 相关阅读:
    IPV6地址中的%号什么意思
    比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?
    Linux 查看本机串口方法
    非对称加密与GPG/PGP
    bootstrap下拉三角
    bootstrap文本背景色
    bootstrap文本颜色
    bootstrap栅格系统响应式
    软件测试(一) 软件测试的阶段划分
    YoTube 视频如何下载
  • 原文地址:https://www.cnblogs.com/zx224569/p/11666293.html
Copyright © 2020-2023  润新知