一、作业头内容
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2828 |
我在这个课程的目标是 | 掌握数组内容 |
这个作业在那个具体方面帮助我实现目标 | 单词排序,指针问题 |
参考文献 | 《C Primer Plus》 |
二、基础作业
英文单词排序
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
博客园附加要求:
(1)通过以自己名字命名的文件输入英文单词
(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)
(3)在不删除原有内容的情况下,将排序后的单词输出到文件。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
实验代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[21][11];
char b[11];
int j,k,d,i=0;
if((fp=fopen("C:\\YQ.txt","a+"))==NULL)
{
printf("File open error!\n");
exit(0);
}
while(1){
scanf("%s",a[i]);
if (a[i][0]=='#')
break;
i++;
}
a[i][0]='\0';
for (k=0;k<i-1;k++)
{
d=k;
for(j=k+1;j<i;j++)
{
if(strlen(a[j])<strlen(a[d]))
{
d=j;
}
}
strcpy(b,a[d]);
strcpy(a[d],a[k]);
strcpy(a[k],b);
}
for(k=0;k<i;k++)
printf("%s ",a[k]);
return 0;
}