第五周作业
这个课程属于那个课程 | C语言程序设计 |
---|---|
这个课程的要求n | https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825 |
我在这个课程的目标 | 学会会问判断和基本的指针操作问题b |
这个作业在那个具体方面帮助我实现目标 | 学会二维数组和判断字符串以及排列顺序 |
参考文献 | 书本和朋友 |
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。 |
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
pta代码:
#include <stdio.h>
#include <string.h>
main()
{
char bky[20][10],t[20],pta[10];
int i,j,n=0;
while(1)
{
scanf("%s",pta);
if(pta[0]=='#')
{
break;
}
else
{
strcpy(bky[n],pta);
n++;
}
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strlen(bky[j])>strlen(str[j+1]))
{
strcpy(t,bky[j]);
strcpy(bky[j],bky[j+1]);
strcpy(bky[j+1],t);
}
}
for(i=0;i<n;i++)
{
printf("%s ",bky[i]);
}
rturn 0;
}
存为文件代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
FILE*fp;
char bky[20][10],t[20],pta[10];
int i,j,n=0;
if((fp=fopen("E:\\作业\\hutao.txt","w+"))==NULL)
{
printf("File open error!\n");
exit(0);
}
while(1)
{
scanf("%s",pta);
fscanf(fp,"%s",pta);
if(pta[0]=='+') //这是我的学好位数加三十七,
{
break;
}
else
{
strcpy(bky[n],pta);
n++;
}
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strlen(bky[j])>strlen(bky[j+1]))
{
strcpy(t,bky[j]);
strcpy(bky[j],bky[j+1]);
strcpy(bky[j+1],t);
}
}
for(i=0;i<n;i++)
{
printf("%s ",bky[i]);
fprintf(fp,"%s",bky[i]);
fprintf(fp," ");
}
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
遇到的问题
问题一:我不会写这个,基本上是在别人的教导下慢慢的一步一步写下来,感谢与我小伙伴陈剑雄
问题二:当我拿到这个题目的时候,完全不知道这个是什么,后来看了别人的自己在翻阅一些资料才知道
问题三:在写这个代码的时候啊,没有使用#include <string.h>这样子的头文件,也不知道strcpy的具体用法,这个头文件是特别处理字符串的含义
问题四:我在写代码的过程中,一开始我没有用二位数组后来一个朋友陈溪林教我用的
问题五:在输入文件的时候我第一次是第一张图的样子,后来我加了printf(“ ”)就可以了
实验流程图
运行结果图
预习题
学习表
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
3/17-3/19 | 好长时间 | 25 | 排序 | 再换位置上有一点 |
3/20 | 一天 | 30 | 二维数组 | 再行和列的问题上有困惑 |
3/22 | 一天 | 20 | 冒泡排序 | 在计算上面有点不明白 |
3/29 | 一个下午 | 40 | 单词排序 | 还是有蛮多的不明白的点 |