这个作业属于哪个课程 | C语言程序设计二 |
这个作业要求在哪里 | 2019春季学期第五周作业 |
我的课程目标 | 灵活运用数组学会运用各种排序法,还有字符串字符处理 |
这个作业在哪个具体方面帮助我实现目标 | 题目让我学会如何操作运用冒泡排序法还有用二维数组来处理字符串 |
参考文献 | (https://blog.csdn.net/mathew_leung/article/details/80382098) |
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
PTA实验代码
#include <stdio.h>
#include <string.h>
int main(void)
{char a[20][10],b[10],temp[10];int l,i,j,n=0;while(1){scanf("%s",b);if(b[0]=='#'){break;}else{strcpy(a[n],b); n++;}}for(l=0;l<n-1;l++)for(j=0;j<n-l-1;j++){if(strlen(a[j])>strlen(a[j+1])){strcpy(temp,a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+1],temp);}}for(i=0;i<n;i++){printf("%s ",a[i]);}return 0;
}
博客园实验代码
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main(void)
{FILE *fp;fp=fopen("c:\\作业\\春作业五gzhasl.txt","r+");char a[20][10],b[10],temp[10];int l,i,j,n=0;while(1){fscanf(fp,"%s",&b);if(b[0]=='$'){break;}else{strcpy(a[n],b); n++;}}for(l=0;l<n-1;l++)for(j=0;j<n-l-1;j++){if(strlen(a[j])>strlen(a[j+1])){strcpy(temp,a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+1],temp);}}for(i=0;i<n;i++) {printf("%s ",a[i]);}fprintf(fp,"\n");for(i=0;i<n;i++){fprintf(fp,"%s ",a[i]);} if(fclose(fp)) {printf("Can not close the file!\n");exit(0);}return 0;
}
设计思路
遇到的问题与解决方法
很难想到方法,本来想能不能把几个字符串存入一个一维数组里,然后得到启发用二维数组。
实验截图
预习题
学习感悟
这周学习给我感觉很难,题目很难做,感觉字符串数组就和二维数组是一样的,不过是数据类型变了。
学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
3/23-3/29 | 两天 | 200 | 冒泡排序法、二维数组处理字符串 | 不是很懂冒泡排序的代码, |
结对编程的感想
每周三的结对编程我,第一次他没来晚自习,我又没有笔记本只有台式。第二次他来了但是没笔记本,我问他有什么思路,他说没有,所以我感觉结对编程没很大的作用,我有什么问题都是问学长,助教,百度,看CSDN或者看别人博客,根本没有讨论,我觉得可以吧博客下面的评论功能用起来,看别人的代码不懂在下面提问。