C博客作业01--分支、顺序结构
这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业00--我的第一篇博客 |
这个作业的目标 | 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记。教师可以对学生有个初步的认识。 |
展示PTA总分
顺序结构:
分支结构:
本章学习总结
1.1 学习内容总结
开学两周主要学习了顺序结构、分支结构和顺序结构,主要内容如下:
-
数据类型
整型 int
短整型 short
长整型 Long
字符型 char
单精度浮点型 float
双精度浮点型 double- 注意:整型变量优先使用int,浮点型优先使用double,操作变量时,需要非常注意数据是否会溢出。
数据类型 | 占用内存(字节) | 输入 | 输出 |
---|---|---|---|
int(整数型) | 4 | %d | %d |
double(双精度浮点型) | 8 | %lf | %f |
float(单精度浮点型) | 4 | %f | %f |
char(字符型) | 1 | %c | %c |
-
格式化输入输出函数
- 格式化输出函数scanf( ):不要漏“&”符号。
- 格式化输出函数printf( ):整型用“%d”,浮点型用“%f”。M为指定的数据输出宽度。“% m.nf”表示输出的浮点型数据共占m列,含小数点,其中小数点后有n位数字;“% m.ns”表示输出的字符串共占m列,但只取字符串左端的n个字符,这n个字符输出在m列的右侧,左侧补空格。
- 字符输入函数getchar():该函数一般调用格式为“ch = getchar( );”功能是从键盘输入一个字符,并赋值给变量ch,但是该函数只能读入一个字符。
- 字符输出函数putchar():该函数一般调用格式为“getchar(输出参数);”功能是输出输出参数的字符型变量或常量,该函数只能输出一个字符。
-
分支结构
1)单分支结构
if(表达式) { 语句; } return 0;
2) 双分支结构
if(表达式) { 语句; } else { 语句; } return 0;
-
例题:
- 判断偶数
- 判断偶数
3)多分支结构
-
else-if语句
if (表达式) { 语句; } … else if (表达式) { 语句; } else { 语句; }
执行流程:求解表达式1,如果表达式1的值为“真”,执行第一个语句并结束整个if语句的执行,否则求解表达式2。最后的else是条件都不满足的情况。
-
例题:
- A除以B
- A除以B
-
-
switch语句
switch (表达式) { case 1:语句1; break; *注意:case后要空格且case后面只能跟常量不能跟表达式 … case n:语句n;break; default:语句;break; }
注意:break结束该循环体,并直接结束该流程。而continue是结束该语句,继续执行下一语句。
执行流程:先求解表达式,若表达式值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段;若表达式的值与任何一个常量表达式都不相等,则执行default后的语句段,最后执行break;语句,结束switch语句。-
例题:
- 计算天数
- 计算天数
-
-
-
循环结构
- while循环
while(表达式) { (循环语句; }
- do-while循环
do { (循环语句;) }while(表达式);
执行流程:先执行do内代码一次,然后对表达式进行检验,后面是while的那么其中的表达式是执行条件,符合则再次执行。
-
for循环
for(赋初值即表达式1;判断条件即表达式2;改变其值即表达式3) { 循环体语句; }
执行流程:先计算表达式1,再判断表达式2,若为“真”,则执行循环体语句,紧接着计算表达式3,然后继续循环;若值为“假”,则结束循环。
-
例题:
- 求交错序列前N项和
- 求交错序列前N项和
-
- while循环
-
常用的数学函数
-
平方根函数sqrt(x):计算根号x;
-
绝对值函数fabs(x):计算|x|;
-
幂函数pow(x,n):计算x的n次方;
-
指数函数exp(x):计算e的x次方;
以上均为double型
-
-
随机数
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(0)); //生成随机种子,产生不同随机数,用来初始化srand的起始值; int x=rand()%100; //生成范围为[1,99]的随机数; printf("%d",x)" return 0; }
1.2 编程技巧总结
- 常用的条件:
闰年:year % 400 == 0 || (year % 4 == 0 && year % 100 != 0
偶数:Num %2==0
整除:%Num==0
取个位:unit = a % 10
取十位:decade = (a / 10) % 10
取百位:hundred = a / 100
- 注意点:
变量交换:eg.a、b、c求中间数
求平均数时,需要考虑除数为0的情况,否则有除0的问题。
if(num!=0)
avg=total/num;
else avg=0;
进入循环体之前,看看一些变量是否需要有初始值。
1.3 本章学习体会
- 虽然暑假有提前学习C语言,但学起来还是有点点吃力,即使上课内容大致听懂了,注意点标注了,但是写题的时候还是很吃力,不能很快的理清题目中的所考察的内容,不能立马知道该题目从何下手,要怎么用分支?怎么用循环?可能存在的问题是题目刷的不够多,基础知识不够扎实,希望之后多多刷题,增加自己的代码量。
- 对教学的建议:希望老师能够讲的慢一点,然后适当扩展学习内容。
PTA实验作业
2.1 前天是哪天
2.1.1 数据处理
-
数据表达:
int year;//年
int month;//月
int day;//日 -
数据处理:
运用了else -if多分支结构,通过月份和日期进行分类。第一种情况是每个月3号-31号都为常规的“day-2”,第二种情况是每个月的2号,第三种情况是3号,但第二、三种情况还需要注意的是上个月为30天还是31天又或是2月的28天、29天,还需注意1月1号、2号的时候,year需要year-1。
2.1.2 代码截图
2.1.3 PTA提交列表及说明
错误1:条件中将“==”写成了“=”
错误2: printf()中多添加了“&”
错误3:在day=2,month=1的分支中,year忘记-1了
错误4:少了几个“}”
2.2 单词长度(字符型数据处理)
2.2.1 数据处理
-
数据表达:
char ch;//字符
int count;//表示单词长度
int flag = 1; -
设计思路:
1.读入一个字符
2.如果是空格,则:
输出单词长度
count=0.
3.如果不是空格:count++
4.重复1,直到字符‘.’,则停止 -
伪代码:
while 读入字符ch!='.'
if ch=='' then
输出单词长度浮count=0
else 计数count++;
end while
2.2.2 代码截图
2.2.3 PTA提交列表及说明
错误:
”.“前一个单词即最后一个单词无法读入
未引入flag
”d"or"%d"(表示空格)
2.3 最佳情侣身高(介绍单步调试)
2.3.1 单步调试截图
错误:
经过更改调试后:
2.3.2 代码截图
2.3.3 PTA提交列表及说明
错误原因:在for循环结构中的scanf()前还有一个scanf(),且上个scanf()是以回车符“;”结束的,则这个回车符“;”被“%c”给收了。为了避免回车符不被收,将多输入一行“getchar()”,该函数作用是吸收一个字符。