第一次博客作业
一:思维导图

二.对语法的认识
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;
}
本题要入的是字符,要用到字符变量char,不是int,要注意的是
当用到if-else语句是,每个if要跟一个else配对,不然得到的答案不对
记录字符的变量也都要初始化为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;
}
这题用到了循环的嵌套,因为此题求的是阶乘的和,所以有两个步骤,第一个是求阶乘
第二是求阶乘的和,所以先要明确思路,还要注意到一个地方,就是循环嵌套的变量不要同一个
变量同时参与两个循环中,否则你会得到错误答案

浙公网安备 33010602011771号