第五周作业

这次作业属于哪个课程 C语言程序设计ll
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825
我在这个课程的目标是 复习文件巩固冒泡排序法和字符型函数以及学习用字符串编程
这个作业在哪个具体方面帮助我实现目标 进一步了解一维数组以及字符串的一些简单用法
参考文献 http://www.runoob.com/cprogramming/c-function-strcpy.html

一、本周完成的作业

第四周预习作业

统计一行文本的单词个数
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

1).实验代码:

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

2).设计思路:

3).本题调试遇到的问题及解决方法:
整个代码很容易理解大致上是没有问题了但是到现在还是不明白为什么定义一个长度为10的数组pta上面通不过而定义一个1000甚至还可以定义一个长度为10000的数组则可以通过。
4).运行结果截图:

基础作业

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

1).实验代码:

pta代码

#include<stdio.h>
#include<string.h>
int main()
{
    char str[21][11];
    char a[11];
    int i=0,j;

    while(1){
        scanf("%s",str[i]);
        if(str[i][0]=='#') 
		   break;
        else i++;
    }
    int len=i;
    for(i=0;i<len;i++)
        for(j=1;j<len-i;j++)
            if(strlen(str[j-1])>strlen(str[j]))
             {
                strcpy(a,str[j-1]);
                strcpy(str[j-1],str[j]);
                strcpy(str[j],a);
            }
    for(i=0;i<len;i++){
        printf("%s ",str[i]);
    }
    return 0;
}

文件代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE*fp;
    char str[21][11];
    char a[11];
    int i=0,j;
    if((fp=fopen("D:\\Christopher.txt","r+"))==NULL)
    {
        printf("File open error!\n");
        exit(0);
    }
    while(1){
        fscanf(fp,"%s",str[i]);
        if(str[i][0]=='#') 
           break;
        else  i++;
    }
    int len=i;
    for(i=0;i<len;i++)
        for(j=1;j<len-i;j++)
            if(strlen(str[j-1])>strlen(str[j]))
             {
                strcpy(a,str[j-1]);
                strcpy(str[j-1],str[j]);
                strcpy(str[j],a);
            }
    fprintf(fp,"\n");
    for(i=0;i<len;i++){
        fprintf(fp,"%s ",str[i]);
        printf("%s ",str[i]);
    }
    if(fclose(fp)){
        printf("Can not close the file!\n");
        exit(0);
    }
    return 0;
}

2).设计思路:

3).本题调试遇到的问题及解决方法:

c++上面单词顺序是排对了,但是pta上面通不过,刚开始不知到怎么对比两个字符串的长度,所以后面换了一种方法,把strcmp函数改成了strlen函数之后就行了
4).运行结果截图:

预习作业





预习中存在的疑惑

疑惑1:指针运用到程序中时还有很多地方不懂
疑惑2:对于指针中的运算也不是很懂

二、学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较疑惑的问题
3/4-3/10 2天 38行 定义文件指针和文件数据的简单处理 对于文件数据的使用很手生
3/11-3/15 1天 24行 二维数组的定义和引用 强烈要求老师把这几次的题都讲解一下太多问题了
3/16-3/22 1天 37行 一些数组的简单算法 不知道二分法、选择排序法以及冒泡排序法的具体区别
3/23-3/29 1天 20行 复习了文件和字符型函数以及学习用字符串编程 文件使用的还不熟练敲代码的过程中老是出错还有不知道怎么表示字符串的长度

三、学习感悟

这周的题目里面有很多没有学的东西比如怎么去比较字符串的长度还有strcpy字符串复制函数的用法等等,一开始看到题目的时候根本就没有思路,是看了很多的博客模仿着把题目做出来的,虽然这个题不完全是自己完成的,但是还是有学到很多东西,所以以后的学习还得靠自己主动而且还得要尽量学多一些,学广一些,不能总是觉得自己跟着老师来就可以了。

posted @ 2019-03-29 14:26  AboutChristopher  阅读(187)  评论(1编辑  收藏  举报