第一次作业
一.思维导图
二.if-else;switch;for;while;do-while;
1.if_else语句 :
if(条件1)
{
语句1;
}
else
{
语句2;
}
遇到的问题:1.if后忘加{}2.对于多个if-else语句,else属于哪个if不确定。
解决方法:在编译器中运行代码,养成在if后添加{}的习惯。
2.switch语句
switch(常量)
{
case 表达式: 语句;break;
case 表达式: 语句;break;
…
case 表达式: 语句;break;
default: 语句;
}
遇到的问题:在case后忘加break,导致程序跳不出循环。
解决方法:注意在每个case语句后添加break。
3.for语句:
for(表达式1; 表达式2; 表达式3)
{
语句
}
遇到的问题:由于代码错误或过于冗长,导致程序运行超时或答案错误。
解决方法:先在纸上写下该流程,计算无误后在输入。
4.do-while语句:
do{表达式1;
表达式2;
...
}while(条件)
遇到的问题:分不清与while的区别,使用错误。
解决方法:记住do-while与while的区别:do-while至少会循环一次。
5.while语句:
while(条件){
表达式1;
表达式2;
...
}
遇到的问题:与for语句弄混淆。
解决方法:铭记while的句式。
6.break以及continue 使用方法:
switch(表达式)
{
case 表达式: 语句;break;
…
case 表达式: 语句;break;
default: 语句;
}
for(表达式1; 表达式2; 表达式3)
{
语句1;
continue;
语句2;
}
注意事项:break用于跳出循环;continue用于跳过continue之后的语句,进入下一次循环。
三.pta分数
2.3,2.4作业
第3章作业
4.1作业
四.pta题目分析
1.
代码:
#include<stdio.h>
#include<math.h>//调用数学函数
int main()
{
int n,i;//定义变量
double s;
scanf("%d",&n);//输入变量
if(n>0){
for(i=0;i<=n;i++){
s=pow(3,i);
printf("pow(3,%d) = %.0f\n",i,s);
}//通过循环来实现乘方表
}
else if(n==0){
printf("pow(3,0) = 1");
}//特殊情况
return 0;
}
注.思路在代码中
收获:需输入调用实现函数的指示,可利用循环来生成乘方表。
2.
代码:
#include<stdio.h>
#include<math.h>//调用数学函数
int main()
{
int a,b,c;//定义变量
double area,perimeter,s;
scanf("%d %d %d",&a,&b,&c); //输入变量
if(a+b>c&&a+c>b&&b+c>a){ //判断是否可构成三角形
s=1.0(a+b+c)/2;
area=sqrt (s(s-a)(s-b)(s-c)); //输入公式
perimeter=a+b+c;
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else{
printf("These sides do not correspond to a valid triangle\n");
}
return 0;
}
注.思路在代码中
收获:要注意if条件的完整性,注意题目的要求来保留小数位。
3.
代码:
#include <stdio.h>
int main(){
int n, count, sum;//定义变量
sum = 0;
count = 0;
scanf("%d", &n);//输入一个整数
while(n!=0){
count++;
sum += n%10;//通过除商取余来统计整数位数及每个位数之和
n /= 10;
}
printf("%d %d\n", count, sum);
return 0;
}
注.思路在代码中
收获:可通过除商取余数的方法来统计一个数的位数。