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;
}