第五周编程总结

这个作业的课程字符串与数组的结合
这个作业要求https://pintia.cn/problem-sets/1110500835573182464/problems/1110500888899563520
我在这个课程的目标如何去使用数组把字符串表示
这个作业在那个具体方面帮助我实现目标pta上把我想学的知识全部呈现
参考文献c语言书与网上的借鉴

基础作业

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:
blue
red
yellow
green
purple

输出样例:
red blue green yellow purple
一:实现代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE * fp;
char str[20][10],temp[20],length[10];     // temp为比较大小是中间过渡时使用(与单词个数一致) length为单词中字母的个数(输入单词时使用)  
int i,j,number=0;  //number为统计最后输入的单词的个数 
if((fp=fopen("C:\\chenxin\\chenxin.txt","r+"))==NULL)
{
printf("File open error!\n");
exit (0);
}
 while(1)
    {
        fscanf("%s",&length[i]);
        if(length[0]=='-')
        {
            break;
            }
        else
        {
        strcpy(str[number],length); //strcpy为字符中的复制符,
        number++;
                }
    }
    for(i=0;i<number-1;i++)          //进行单词的长度比较 利用冒泡法 
        for(j=0;j<number-i-1;j++)
        {
            if(strlen(str[j])>strlen(str[j+1]))
            {
               strcpy(temp,str[j]);
               strcpy(str[j],str[j+1]);
               strcpy(str[j+1],temp);
            }
        }
     for(i=0;i<number;i++)      //输出单词 
    {
        printf("%s ",str[i]);
    }
     for(n=0;n<i;n++)
    {
        fprintf(fp,"%s ",str[i]);
    }
    if(fclose (fp) ){
printf("Can not close the file! \n");
    exit(0);
    }
      return 0;
}

二:流程图

1580719-20190329141408354-292523785.png

三:运行图
1580719-20190329142747159-504815344.png

1580719-20190329143451902-648852338.png

四:所遇到的问题
1:在开始就对于#include<string.h>就不熟悉,当了解这个后对于strcpy这个函数根本是个新知识就导致编程不下去。
2:在利用冒泡排序后利用strcpy的函数对英文单词排序不理解,但知道冒泡的本质.
解决方法:借鉴网上与我哥的讲解

上周预习题
一:实验代码

#include<stdio.h>
#include<string.h>
int main()
{
  int i,len,num;
  char zf[1000];
  gets(zf);
  len=strlen(zf);
  if(zf[0]==' ')
  num=0;
  else
  num=1;
  for(i=0;i<len-1;i++)
  {
    if(zf[i]==' '&&zf[i+1]!=' ')
    num++;
  }
  printf("%d",num);
  return 0;
}

二:流程图
1580719-20190329143512634-599034253.png

三:遇到的问题
1)上周就不知道怎样去判断条件去把单词读入,结果上课老师告诉我是一个一个字母输入且一个空格一个字母就相当于前面单词输完 我想了好久以为就是输单词一个一个输入
(不含开头)

预习题
一:预习内容
对于指针的视频的学习和了解与书上章节指针的程序与一些定义
二:作业截图:
1580719-20190329145628285-739228632.png
1580719-20190329145636042-743908381.png
1580719-20190329145649849-795469484.png
三:遇到的问题
1)程序代码中的某个值计算
2)对于指针的概念还是理解,但不会用。

挑战题
1)首先我知道题意,就要利用数组把数输入进去,
2)在数组中找出某一段数的和为最大,必须是要连续的,我就卡在怎样去确定去找那一段(我的意思是不是要定义i从某个数开始,在输入k为终止,在ij不断地增大它的长度并计算)
3)最后题后要输出一个矩阵,是输出的子数组为矩阵?这就让我模糊了 导致最后还是没写出来

结对编程
优点:可以两个人懂得地方互补,交流各自的想法 拼凑出来差不多就是题目的思路
缺点:我认为最大的缺点就是时间上安排还是急了 利用晚自习不可能都弄它 c语言一直做脑子真痛,就是我建议单独的出题目让我们结对去做.

1580719-20190329152701144-1544319789.png
1580719-20190329153918606-1860768415.png

转载于:https://www.cnblogs.com/chenxinxin/p/10618008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值