C语言知识

一 . C语言知识思维导图

二. 写出自己对以下语法的认识

1.If else:

If(语句1){
    语句2;
} else {
    语句3;
}

认识: 判断语句1,如果不成立的话做else后面语句3,成立的话就走语句2,可以有许多if else语句组合在一起,进行更复杂更多的判断,用这种语句要注意判断关系符号==<>等等,还有语句1是等式的话会有一个值,0或1,直接语句1为数字也是于是否等于0如果不等于就成立,等于就不成立,走else语句。

2.switch case:

Switch(ch){
   Case a:语句1;break;
   Default:语句;break;
}

认识:在switch()里得到一个字符或数字,在case里找到相应的地方执行语句,判断ch与a,成立就走后面语句,不成立就接下去找,分有break和无break的情况,有break就执行完语句就退出,如果执行语句后没有break,就接下去执行接下去不管case成不成立,执行语句一直到有break语句,没有break就一直到结束,还有default就是找不到对应的case就执行default的语句。提醒要注意是否有break,有和没有运行结果不一样。

3.for:

For(语句1;语句2;语句3){
}

认识:语句1进行需要的一开始变量赋值,执行一次,在接下去的循环当中就不会再用到了,如果不需要可以不写,但是后面的;号是一定要的,然后语句2是循环判断的条件每一次要进行循环要先进行语句2的判断,然后后面也要有;号,然后语句3是循环内我们写的语句做完后加在后面一定要进行的语句,通常是改变循环条件值得一个式子,后面就不用;号了,通常错误是有时会写错;或没写,通常是知道循环次数会使用for循环,比较好用。

5.While:

While(语句){
    复合语句;
} 

认识:语句里写的是判断条件,成立就执行大括号内的复合语句,不成立就退出while循环,还是一样要注意判断关系符,在后面的大括号里要写出可以改变判断值,使循环条件是在改变的,不然会一直循环还不知道怎么了,当遇到这种情况时,会没有答案输出,这时候就可以想到有可能是循环没结束。

6.do while:

Do{
   复合语句;
}while();

认识: 这个循环是不管怎么样都会进去循环一次,然后再进去while后面()的循环条件进行判断,注意while()后是有一个;符号的,这种循环就是比其他的循环来说,会不管怎么样的进行一次循环,需要特殊使用。

7.Break和continue:

switch(整型表达式)
{ 
    case 常量表达式1:  语句1;break;
    … 
    case 常量表达式n:  语句n;break;
    default:  语句n+1;

}

for(语句1; 语句2; 语句3)
{
    语句4;
     continue;
    语句5;
        
}

语句1;
continue;
语句2;

认识:在通常使用在循环当中,在你某个条件后,在条件后加一个break他就会跳出整个循环体,不会再进行后面多余的循环,使得效率提高,是个很好用的词,在switch中,也是一样,找到对应的语句执行完,遇到break,就跳出switch;continue,当在普通代码顺序是,在语句1后面时,当做到在它之前语句完后,执行continue,会跳过语句2,做下一个语句,如果是在for循环当中,就会跳过语句5如果还有语句也会一直跳过,直接进行下一次循环。在for循环内,会进行语句3后,在判断循环条件,进行下一次循环。

三. pta分数截图

四. pta题目分析

题目一:

首先:1.看到这种题目首先看到题目就会知道这是一个循环的问题,求前n项和。2.看到输入格式条件后知道要输入一个变量。3.再看到输出格式后知道输出标准和后面有精度要求,就知道要用到float或double定义要有位数要求,也就想到要怎么表达。
最后:然后用自己所学知识分析该如何做这个题目。我想到的是从后面到前面加,输入变量用n,用一个变量m=n*2-1,当n=2时就是两项就是m的值,这样可以知道第n位的分母,然后分母减2,一直到1,先一个循环,用double的变量sum算值,因为输出要double,所以一开始其他变量我也定义为double。下面是我的代码。(经供参考)

#include <stdio.h>

int main()
{
    double n,m;
    double sum=0;
    
    scanf("%lf",&n);
    
    m=2*n-1;
    
    while (m>0) 
    {
        s+=1/m;
        m-=2;   
    } 

    printf("sum = %.6f",s);
    
    return 0;
}

题目二:

首先:1.看到题目讲到三个整数,那就会要三个int的变量,然后比大小,我脑海就想到if else来比较。2.再去看输入格式和输出格式,输出需要有->这个符号就要记住,然后就是简单的三个数值用if else 比大小了。
最后:分析自己该怎么写代码,比较a和b,大的话就在比较b和c,大的话,那就是cba了,再按格式输出,小的话就再判断a与c,大的话bca,小的话就是bac,另一种情况也是如此就好了。下面是我的代码。(经供参考)

#include <stdio.h>
int main()
{
    int a;
    int b;
    int c;
    
    scanf ("%d %d %d",&a,&b,&c);
    
if (a>b){
    if(b>c){
        printf("%d->%d->%d",c,b,a);
    }else {
        if(a>c){
        printf("%d->%d->%d",b,c,a);
        }else {
        printf("%d->%d->%d",b,a,c);
        }
    }
}else {
    if(a>c){
        printf("%d->%d->%d",c,a,b);
    }else {
        if(b>c){
        printf("%d->%d->%d",a,c,b);
        }else {
        printf("%d->%d->%d",a,b,c);
        }
    }   
}
    return 0;   
}

题目三:

首先:1.看题目求奇数和,那就想到怎么判断是否是奇数。2.在看输入格式,以0和负数结束,那就要写个循环判断读入数据并判断是否是奇数,并加起来。3.在看输出格式,没什么要点,然后就在脑海里想好怎么写。
最后:在脑海里想好怎么写。1.定义变量a用来一个个读入数据,sum来统计奇数和,一开始要定义sum=0,不然sum会被系统分配不确定的值,答案就会不对。2.然后先读入一个数据,然后进去循环判断是否是0或负数,不是在判断是否是奇数,是就加到sum,不是就再读入一个数据,再去判断,最后得出结果。下面是我的代码。(经供参考)

#include <stdio.h>
int main()
{
    int a;
    int sum=0;

    scanf ("%d",&a);

    while (a>0){
        if (a%2>0){
            sum+=a;
        }
        scanf ("%d",&a);        
    }

    printf ("%d",sum);
    
    return 0;
        
}
posted @ 2019-10-13 09:42  违久(丁鸿沛)  阅读(344)  评论(0编辑  收藏  举报