C语言基础课第五次作业

时间:2023-12-17 14:17:50

PTA第五次作业

7-2 统计一行文本中的单词个数

一.程序代码

#include<stdio.h>

int main(void)
{
char string[];
int i,num=,word=;
char c;
gets(string);
for(i=;(c=string[i])!='\0';i++)
if(c==' ') word=;
else if(word==){
word=;
num++;
}
printf("%d\n",num);
return ;
}

二.设计思路

1.文字描述

第一步:编译预处理命令,定义主函数

第二步:定义变量,先定义一个以“string”为名的一维数组,用来储存即将输入的一行文本,i表示输入的字符,num表示单词数,word表示是否该字符是单词,再定义一个字符数组c

第三步:若输入的过程中没有遇到终止符号,那么就继续输入,如果c=‘ ’时,令word=0,从而使num的数量增加,进而统计出这一行文本中的单词个数

2.流程图

C语言基础课第五次作业

3.调试过程中的错误和解决办法

(1)调试过程中发现的错误

C语言基础课第五次作业

(2)解决办法

对于新学习的一维数组的知识掌握不牢,没有正确的输入,忘记输入“;”,输入之后问题就解决了。

PTA第五次作业

7—3 交换最大值和最小值

一.程序代码

#include<stdio.h>
int main(void)
{
int n,i,max,min,c,a[],d,e;
scanf("%d",&n);
for(i=;i<n;i++){
scanf("%d",&a[i]);
}
max=min=a[];
for(i=;i<n;i++){
if(a[i]<=min){
min=a[i];
c=i;
}
}
d=a[];
a[]=min;
a[c]=d;
for(i=;i<n;i++){
if(a[i]>=max){
max=a[i];
c=i;
}
}
e=max;
a[c]=a[n-];
a[n-]=e;
for(i=;i<n;i++)
printf("%d ",a[i]);
return ;
}

二.设计思路

1.文字描述

第一步:编译预处理命令,定义主函数

第二步:定义变量,用n表示要输入的数字,用i表示数所在的位置,max表示最大值,min表示最小值,在定义一个一维数组a

第三步:先将数组中的第一个数作为最大(小)值,找最小值,找最大值,然后进行分别与第一个数和最后一个数的替换,依次按顺序输出N个数,这样便可以将这组数中的最大值和最小值进行交换了。

2.流程图

C语言基础课第五次作业

3.

调试过程中的问题和解决办法

(1)调试过程中的问题

C语言基础课第五次作业

(2)解决办法

 编译过程中没有实质性的错误,但是没有得出题目要求的结果,后来发现了原来是因为在数据赋值的过程中没有加入for循环语句(即for(i=0;i<n;i++)),加入之后变得出了对应的结果。

三.总结和学习进度条

1.

(1)学习的内容:for 语句,while语句,break语句,scanf语句,字符型数据,switch语句,一维数组,二维数组,字符串

(2)遇到的问题:语句使用过程中有时会有逻辑上的错误,还有语句运用上的问题以及少量的输入错误和语法错误

(3)解决办法:上课认真听老师讲的知识点,做好笔记,将老师讲的重点标记在书上,在下课的时候及时复习,巩固一天学习的内容。再结合MOOC网站上的课程,对于自己掌握不好的知识点,进行反复的观看和琢磨,加深印象。如果对于一些编程上的问题。我会吸取别人在编程上的方法,还有在流程图上绘制方法,并且配合着与同学讨论来解决问题。

2.点评三个同学的本周作业

(1)于海龙作业评价(2)王肖作业评价 (3) 陈禹翰作业评价

3.

(1)代码行数、博客园字数和时间

C语言基础课第五次作业

(2)折线图

C语言基础课第五次作业

(3)涉及的知识点

for 语句,while语句,break语句,scanf语句,switch语句,一维数组