• 2019年春季学期第五周作业


    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825
    我在这个课程的目标是 复习文件巩固冒泡排序法和字符型函数以及学习用字符串编程
    这个作业在哪个具体方面帮助我实现目标 进一步了解二维数组以及关于字符串的一些函数
    参考文献 https://blog.csdn.net/u012110719/article/details/41289907

    英文单词排序

    本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
    输入格式:
    输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
    输出格式:
    输出为排序后的结果,每个单词后面都额外输出一个空格。

    输入样例:

    blue
    red
    yellow
    green
    purple
    #
    

    输出样例:

    red blue green yellow purple 
    

    实验代码

    pta版:

    #include<stdio.h>
    int main ()
    {
    	static int before[20];
    	static int after[20];
    	char str[20][10];
    	
    	int i, j;
    	
    	for(i=0;i<20;i++){
    		for(j=0;j<10;j++){
    			if((str[i][j]=getchar())!='
    ')
    				before[i]++;
    			else
    				break;
    		}
    		if(str[i][j-1]=='#')
    			break;
    	}
    	
    	int min=0, k, l;
    	for(k=0;k<i;k++){
    		for(l=0;l<i;l++){
    			if(before[min]>before[l])
    				min=l;
    		}
    		after[k]=min;
    		before[min]=100;
    	}
    	
    	int q, w;
    	for(q=0;q<i;q++){
    		for(w=0;w<10;w++){
    			if(str[after[q]][w]=='
    ')
    				break;
    			printf("%c",str[after[q]][w]);
    			
    		}
    		printf(" ");
    	}
    	
    	
    	return 0;
     } 
    

    文件版:

    #include<stdio.h>
    int main ()
    {
    	static int before[20];
    	static int after[20];
    	char str[20][10];
    	FILE*fp;
    	fp=fopen("F:\abc.txt","r+");
    	
    	int i, j;
    	
    	for(i=0;i<20;i++){
    		for(j=0;j<10;j++){
    			fscanf(fp,"%c",&str[i][j]);
    			if(str[i][j]!='
    ')
    				before[i]++;
    			else
    				break;
    		}
    		if(str[i][0]==',')
    			break;
    	}
    	
    	int min=0, k, l;
    	for(k=0;k<i;k++){
    		for(l=0;l<i;l++){
    			if(before[min]>before[l])
    				min=l;
    		}
    		after[k]=min;
    		before[min]=100;
    	}
    	
    	fprintf(fp,"
    ");
    	int q, w;
    	for(q=0;q<i;q++){	
    		fprintf(fp," ");
    		for(w=0;w<10;w++){
    			if(str[after[q]][w]=='
    ')
    				break;
    			fprintf(fp,"%c",str[after[q]][w]);	
    		}
    	}
    	return 0;
     } 
    

    思维导图


    运行截图

    pta:

    文件版:


    遇到的问题

    改成读取文件版遇到了不能写入和写入乱码的问题;经过一番调试找到问题是在输入/读取时的判断方式不当,应该直接判断str[i][0]','而不是(str[i][j-1]','。


    统计一行文本的单词个数

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

    输入样例:

    Let's go to room 209.
    

    输出样例:

    5
    

    实验代码

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

    思维导图


    PTA截图


    遇到的问题


    一开始忽视了开头就有空格的情况,用一个if语句解决。


    预习题


    学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    3/3-3/9 4小时 100行 二维数组和文件的读取与写入 暂无
    3/10-3/16 4小时 100行 怎么找和最大的子数组 暂无
    3/17-3/23 4小时 100行 冒泡排序 暂无
    3/24-3/30 6小时 200行 字符串的储存方法,和字符串的运用 暂无
  • 相关阅读:
    Go 解析JSON
    查看端口占用并结束进程
    DNS
    u盘禁用
    主机规划与磁盘分区
    响应式设计初识
    SVG基础
    BootStrap入门
    python中 "is"和"=="的区别
    关于C++模板不能分离编译的问题思考
  • 原文地址:https://www.cnblogs.com/aomiaox/p/10623019.html
Copyright © 2020-2023  润新知