C语言基础课第五次作业
PTA第五次作业
7-2 统计一行文本中的单词个数
一.程序代码
#include<stdio.h> int main(void) { char string[10000]; int i,num=0,word=0; char c; gets(string); for(i=0;(c=string[i])!='\0';i++) if(c==' ') word=0; else if(word==0){ word=1; num++; } printf("%d\n",num); return 0; }
二.设计思路
1.文字描述
第一步:编译预处理命令,定义主函数
第二步:定义变量,先定义一个以“string”为名的一维数组,用来储存即将输入的一行文本,i表示输入的字符,num表示单词数,word表示是否该字符是单词,再定义一个字符数组c
第三步:若输入的过程中没有遇到终止符号,那么就继续输入,如果c=‘ ’时,令word=0,从而使num的数量增加,进而统计出这一行文本中的单词个数
2.流程图
3.调试过程中的错误和解决办法
(1)调试过程中发现的错误
(2)解决办法
对于新学习的一维数组的知识掌握不牢,没有正确的输入,忘记输入“;”,输入之后问题就解决了。
PTA第五次作业
7—3 交换最大值和最小值
一.程序代码
#include<stdio.h> int main(void) { int n,i,max,min,c,a[10],d,e; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } max=min=a[0]; for(i=0;i<n;i++){ if(a[i]<=min){ min=a[i]; c=i; } } d=a[0]; a[0]=min; a[c]=d; for(i=0;i<n;i++){ if(a[i]>=max){ max=a[i]; c=i; } } e=max; a[c]=a[n-1]; a[n-1]=e; for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }
二.设计思路
1.文字描述
第一步:编译预处理命令,定义主函数
第二步:定义变量,用n表示要输入的数字,用i表示数所在的位置,max表示最大值,min表示最小值,在定义一个一维数组a
第三步:先将数组中的第一个数作为最大(小)值,找最小值,找最大值,然后进行分别与第一个数和最后一个数的替换,依次按顺序输出N个数,这样便可以将这组数中的最大值和最小值进行交换了。
2.流程图
3.
调试过程中的问题和解决办法
(1)调试过程中的问题
(2)解决办法
编译过程中没有实质性的错误,但是没有得出题目要求的结果,后来发现了原来是因为在数据赋值的过程中没有加入for循环语句(即for(i=0;i<n;i++)),加入之后变得出了对应的结果。
三.总结和学习进度条
1.
(1)学习的内容:for 语句,while语句,break语句,scanf语句,字符型数据,switch语句,一维数组,二维数组,字符串
(2)遇到的问题:语句使用过程中有时会有逻辑上的错误,还有语句运用上的问题以及少量的输入错误和语法错误
(3)解决办法:上课认真听老师讲的知识点,做好笔记,将老师讲的重点标记在书上,在下课的时候及时复习,巩固一天学习的内容。再结合MOOC网站上的课程,对于自己掌握不好的知识点,进行反复的观看和琢磨,加深印象。如果对于一些编程上的问题。我会吸取别人在编程上的方法,还有在流程图上绘制方法,并且配合着与同学讨论来解决问题。
2.点评三个同学的本周作业
(1)于海龙作业评价 (2)王肖作业评价 (3) 陈禹翰作业评价
3.
(1)代码行数、博客园字数和时间
(2)折线图
(3)涉及的知识点
for 语句,while语句,break语句,scanf语句,switch语句,一维数组