2019春第五周作业

作业:

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
我在这个课程的目标是 我希望能够通过学习c语言的知识,实现编写能够判断一句话或字符是否对称
这个作业在那个具体方面帮助我实现目标 这个作业让我知道了字符串与字符的区别以及单双引号运用的不同意思,让我对有关此类的知识更加深入了解
参考文献 判断回文、字符串

7-1 统计一行文本的单词个数

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:


Let's go to room 209.

输出样例:


5

1)实验代码


# include<stdio.h>
int main()
{
  int word=0,k,s=0;                          //定义变量
  char line[1000];
    
  gets(line);                                   //接受字符
  for (k=0;line[k]!='';k++){           //计算单词个数
  	if(line[k]==' ')
  	    word=0;                           //如果数组k等于空格,赋值word为0
  	else if(word==0){                 //否则为1
  		word=1;
  		s++;
	  }
  }
  printf ("%d
",s);                       //输出数组
  return 0;
}

2)设计思路

第一步:定义变量;
第二步:接受字符;
第三步:利用循环进行计算;
第四步:输出字符。

3)本题调试中遇到的问题及解决办法

本题有两个地方运行错误,是由于数组存储空间不足导致运行错误,因此要将数组往大的方面写。

4)运行截图


7-1 英文单词排序 (25 分)

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

输入格式:

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

输出格式:

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

输入样例:


blue
red
yellow
green
purple
#

输出样例:


red blue green yellow purple 

1)实验代码


#include<stdio.h>
#include<string.h>
main()
{
    char a[20][10],s[20],b[10];
    int i,j,n=0;
    while(1){
    	scanf("%s",b);   
    	if(b[0]=='#'){
    		break;
    	}
        else{
            strcpy(a[n],b);   
		      	n++;
        }
    }
    for(i=0;i<n-1;i++)      
    	for(j=1;j<n;j++){
            if(strlen(a[j])<strlen(a[j-1])){
               strcpy(s,a[j-1]);
               strcpy(a[j-1],a[j]);
               strcpy(a[j],s);
            }
      }
    for(i=0;i<n;i++){
        printf("%s ",a[i]);
    }
    return 0;
}

文件代码


#include<stdio.h>
#include<string.h>
main()
{
	FILE * fp;
    char a[20][10],s[20],b[10];
    int i,j,n=0;
    char op=' ';
    
    fp=fopen("D:\Documents\huangchunyan.txt","r+");
	
    while(1){
    	fscanf(fp,"%s",b);   
    	if(b[0]=='-'){
    		fprintf(fp,"
");
    		break;
    	}
        else{
            strcpy(a[n],b);   
		      	n++;
        }
    }
    for(i=0;i<n-1;i++)      
    	for(j=1;j<n;j++){
            if(strlen(a[j])<strlen(a[j-1])){
               strcpy(s,a[j-1]);
               strcpy(a[j-1],a[j]);
               strcpy(a[j],s);
            }
      }
    for(i=0;i<n;i++){
        fprintf(fp,"%s %c",a[i],op);
        printf("%s%c",a[i],op);
    }
    fclose(fp);
    return 0;
}

2)设计思路

第一步:定义变量,输出字符串数组;
第二步:用循环计算字符串长度,交换;
第三步:输出字符串数组。

3)本题调试中遇到的问题及解决办法

本题总的来说是有一个思路,写代码的时候忽略如果第一的是#的这一条件,所以答案错误,
还有比较单词长度并交换值时,开始是用等于号写的,运行出来是部分正确,字符串不能用等于号来交换。

4)运行截图



预习题




预习:指针;
问题:在计算预习题第六题时,有点不确定。


三、学习进度条

周/日期 这周所花时间 代码行 学到的知识简介 目前比较迷惑的问题
3/4-3/9 4个半小时 37 1、建立文件,读取文件数据并储存;2、用户信息的加密和校验;3、FILE文件类型的运用 1、不会用加密算法以及FILE文件类型的运用
3/10-3/17 10个小时 90 1、二维数组的运用 1、有关数组的一些运用还不怎么明白
3/18-3/22 10个小时 91 1、冒泡排序法和选择排序法;2、二分法查找;3、二维数据:定义、引用、初始化,二维数组与矩阵。 1、冒泡排序法和选择排序法有点混淆。
3/25-3/29 12小时 84 1、字符串与字符的区别。 指针的运算不知道怎么算,弄不清

四、学习感悟

本次学习写基础题时想了几条思路,发现都不怎么现实,因为我以为需要先算出单词长度来才来比较,然后交换输出结果;后面请教同学不需要计算直接进行比较,这是一个单词一个单词进行比较的,一个数组代表一个单词。还有本次预习题的指针里如何运算不知道如何计算以及怎么来的值。

五、结对编程感悟

感觉是两个不懂的人在做题,讨论。

原文地址:https://www.cnblogs.com/da123hcy/p/10617911.html