第五周作业 英文单词排序

这个作业属于那个课程C语言程序设计II
这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
我在这个课程的目标是<争取不翻书也能自由读写文件>
这个作业在那个具体方面帮助我实现目标<强化了文件的读写能力>

参考文献:C语言程序设计第三版

PTA代码:

#include<stdio.h>
#include<string.h>
int main()
{
  int i,j,k,b[20]={0},c[20],z;
  char a[20][11];
  for(i=0;i<20;i++)
  c[i]=i;
  for(i=0;i<20;i++)
  {
    scanf("%s",a[i]);
    if(a[i][0]=='#')
    break;
  }
  for(j=0;j<i;j++)
  {
    b[j]=strlen(a[j]);
  }
  for(j=0;j<i;j++)
  {
    for(k=j+1;k<i;k++)
    {
      if(b[k]<b[j])
      {
        z=b[k];
        b[k]=b[j];
        b[j]=z;
        z=c[j];
        c[j]=c[k];
        c[k]=z;
      }
    }
  }
  for(j=0;j<i;j++)
  {
    printf("%s ",a[c[j]]);
  }
}

文件代码:

#include<stdio.h>
#include<string.h>
int main()
{
  FILE *op;
  op=fopen("manhan.txt","r+");
  int i,j,k,b[20]={0},c[20],z;
  char a[20][11];
  for(i=0;i<20;i++)
  c[i]=i;
  for(i=0;i<20;i++)
  {
    fscanf(op,"%s",a[i]);
    if(a[i][0]==40)
    {
      fprintf(op,"\n");
	  break;
    }
  }
  for(j=0;j<i;j++)
  {
    b[j]=strlen(a[j]);
  }
  for(j=0;j<i;j++)
  {
    for(k=j+1;k<i;k++)
    {
      if(b[k]<b[j])
      {
        z=b[k];
        b[k]=b[j];
        b[j]=z;
        z=c[j];
        c[j]=c[k];
        c[k]=z;
      }
    }
  }
  for(j=0;j<i;j++)
  {
    fprintf(op,"%s ",a[c[j]]);
  }
  for(j=0;j<i;j++)
  {
    printf("%s ",a[c[j]]);
  }
  fclose(op);
}

遇到的问题:不知道怎么求字符串有效长度,最后百度一下才知道用string.h里面的strlen函数

流程图为

运行截图

posted @ 2019-03-26 12:36  都行还  阅读(539)  评论(4编辑  收藏  举报