一:思维导图
二.对语法的认识
1. if-else
if(表达式) { 语句1; }else { 语句2; }
如果条件满足表达式1,则执行表达1;不满足则执行表达式2。
使用时注意大括号,若只有分枝结构时,每一个else 要和一个if相匹配,且一定要使用大括号。但如果在循环中使用时要根据所需要的条件是否加大括号
2. switch-case
switch(表达式) { case 常量表达式1 :语句段1;break; case 常量表达式2 :语句段2;break; case 常量表达式n :语句段n;break; default: 语句段n+1;break; }
方法:当表达式满足那个表达式时就执行那个语句,直到遇见break为止。
注意常量表达式后面是不是 ”;“ 而是”:‘,还有所有的常量表达式不能相等,也要注意
break的使用;
3. for
for(表达式1;表达式2;表达式3) { 循环体语句; }
方法:先执行表达式1,在判断表达2,若值成立,再执行循环体语句,然后执行表达式3
若值不成立,则跳出循环,不执行表达式3.
注意 括号里有2个分号而外面没有分号,是为了与循环体形成一条语句;在使for的嵌套循环时,注意变量的变化,一般该变量循环之后要对其进行赋值,不然会得出一些让人崩溃的结果
4. while
while(表达式) { 循环体语句; }
方法:当表达式语句为真时,才执行循环体语句,不然不执行,循环终止时才执行下条语句。
注意:要注意表达式的取值,且循环体语句中要有可以改变循环让循环终止的量,不然会变成死循环。
5. do-while
do{ 循环体语句; }while(表达式);
方法:不管如何,先执行循环体语句,在判断表达式是否成立,成立继续循环,不成立循环结束。
注意:同样循环体语句中也要有能是循环终止的变量,除此之外while()要有分号,一定不要忘了。
break用于switch case和循环语句中,在循环语句中,break是用来结束循环,而continue用来后面的语句继续循环,continue只能用于循环语句中
注意:break应该要和if语句搭配起用,continue也是。并且也不能乱用。
三.PTA分数截图
四.PTA代码分析
题目
代码
#include<stdio.h> int main() { int a, b, i,c; int min;//min中放最小值 scanf("%d", &a); scanf("%d", &b); min = b;//假设第一个是最小值 for (i = 1; i < a; i++) { scanf("%d", &b);//读入下一个成绩 if (b<min) //如果该成绩比最低分低 { min = b;//在假设该成绩为最低分 } } printf("min = %d\n", min); return 0; }
思路都在代码上了
这题要明确思路,是要求最小值,且又明确循环的次数,所以要用到for循环
一定要先假设一个最小值,不能在循环中假设,否则的话求不出来
题目
代码
#include<stdio.h> int main() { int letter, blank, digit, other; int i; char ch;//定义求字符的变量 letter = blank = digit = other = 0;//统计字符的变量为0 for (i = 1; i <= 10; i++) //循环10次 { scanf("%c", &ch);//输入字符 if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { letter++; } else if (ch >= '0' && ch <= '9') { blank++; } else if (ch == ' ' || ch == '\n') { digit++; } else { other++; } } printf("letter = %d, blank = %d, digit = %d, other = %d", letter, digit,blank,other); return 0; }
题目
代码
#include<stdio.h> int main() { int a,b,other,i;//变量other存放阶乘的值 double sum; sum=0;//定义变量累加的值为0 scanf("%d",&a); a for(b=1;b<=a;b++)//外层循环执行a次 { other=1;//确保每次阶乘的值从1开始 for(i=1;i<=b;i++) other=other*i;//求阶乘 sum=sum+other;//存放累加和 } printf("%0.f",sum); return 0; }