• 19大一下期五周


    课程: C语言程序设计II
    作业要求: 19大一下期五周
    课程目标: 能够独立进行简单程序编辑,团队进行较大型程序设计
    作业目标: 对数组、文件进一步加深了解
    参考文献: C语言程序设计II

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

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

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

    PTA上程序

    #include<stdio.h>
    int main()
    {
    	static char ch[21][11];
    	static int i,j,a[20],b,c,d,e[20];
    	for(i=0;i<21;i++)
    	{
    		for(j=0;j<11;j++)
    		{
    			ch[i][j]=getchar();
    			if(ch[i][j]=='
    ')
    			{
    				ch[i][j]='';
    				break;
    			}
    			else if(ch[i][j]=='#')
    				break;
    		}
    		a[i]=j;
    		d=i;
    		if(ch[i][j]=='#')
    		{
    			ch[i][j]='';
    			break;
    		}
    	}
    	for(i=0;i<d;i++)
    	{ 
    		b=a[i];
    		c=i;
    		for(j=0;j<d;j++)
    		{
    			if(b>a[j])
    			{
    				b=a[j];
    				c=j;
    			}
    		}
    		a[c]=12;
    		e[i]=c;
    	}
    	for(i=0;i<d;i++)
    	{ 
    		printf("%s ",ch[e[i]]);
    	} 
     } 
    

    设计思路

    并没有使用头文件string.h中的计数strlen函数,而是使用最直接的计数方法每输入一个字符便进行计数,然后在比较

    3)本题调试过程碰到问题及解决办法

    在最后循环输出时迷糊了,在字符串二维数组不知如何交换,只好采取折中的方法增加一个数组专门进行排序

    4).运行结果截图

    博客园上

    程序

    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
    	FILE *fp,*q;
    	char filename[30],str[30];
    	static char ch[21][11],ar;
    	static int i,j,a[20],b,c,d,e[20];
    
    	scanf("%s",filename);//输入文件名 
    	/* 
    	fopen(filename,"w")//建立文件,只写 
    	fp=fopen(filename,"w")//将指针指向文件 
    	*/
    	if((fp=fopen(filename,"w+"))==NULL)//判断文件是否存在 
    	{
    		printf("cannot openfile");
    		
    		exit(0);
    	}
    //输入数据至文件 
    	getchar();
    	ar=getchar();
    	while(ar!='#')
    	{
    		fputc(ar,fp);
    		ar=getchar();
    	}
    	fputc('#',fp);
    	fputc('
    ',fp);
     
    	fclose(fp);
    
    
    
    	fp=fopen(filename,"a+");
    	q=fopen(filename,"a+");
    //提取文件中数据输入数组 
    	for(i=0;i<21;i++)
    	{
    		for(j=0;j<11;j++)
    		{
    			ch[i][j]=fgetc(fp);
    			if(ch[i][j]=='
    ')
    			{
    				ch[i][j]='';
    				break;
    			}
    			else if(ch[i][j]=='#')
    				break;
    		}
    		a[i]=j;
    		d=i;
    		if(ch[i][j]=='#')
    		{
    			ch[i][j]='';
    			break;
    		}
    	}
    //排序 
    	for(i=0;i<d;i++)
    	{ 
    		b=a[i];
    		c=i;
    		for(j=0;j<d;j++)
    		{
    			if(b>a[j])
    			{
    				b=a[j];
    				c=j;
    			}
    		}
    		a[c]=12;
    		e[i]=c;
    	}
    	//向文件输入数据	
    	for(i=0;i<d;i++)
    	{
    		fputc(' ',q);
    		fputs(ch[e[i]],q);
    	} 
    	fclose(fp);
    }
    

    3)本题调试过程碰到问题及解决办法

    在向文件输入字符时,使用了同一个指针,出现无法输入字符,于是我加了两个

    4).运行结果截图

    2019春第四周作业(预习题)

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

    程序

    #include<stdio.h>
    int main()
    {
    	char ch;
    	int flag=0;
    	int count=0;
    	while((ch=getchar())!='
    ')
    	{
    		if(ch!=' '&&flag==0)
    		{
    			count++;
    			flag=1;
    		}
    		else if(ch==' ')
    		{
    			flag=0;
    		}
    	}
    	printf("%d
    ",count);
    	
    	return 0;
    }
    

    设计思路

    如果是空格就判断它前一个是不是空格,是那就单词数不变,不是单词加一

    3)本题调试过程碰到问题及解决办法

    无较容易

    4).运行结果截图

    预习作业

    问题:

    1指针的储存形式
    2指针的交换模式

    挑战作业

    继续挑战第二周的挑战作业:返回整数数组中最大子数组的和,本周,我们要求二维数组的子数组必须是矩形的

    可以使用穷举法将所有数组全部例举比较

    .用时3小时30分钟,30用与写与调试,3小时阅读思考

    心得:我们如今所学的可以解决大部分问题,但过于繁琐,有些函数可以轻易代替我们用写下的大段代码

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    3/2-3/8 3天 300 指针、文件、数组 getchar()不知道
    3/9-3/13 2天 200 指针 文件
    3/13-3/22 3天 300 数组 对代码高效性欠缺
    3/23-3/29 4天 400 数组 对文件不熟悉
  • 相关阅读:
    git can't merge 的处理 代码冲突问题的解决
    react 父组件向子组件传递函数
    node fs 文件/目录 删除
    node 调用Python exec child_process 模块
    node 设置自动启用定时任务控件 node-schedule
    Python 安装
    常见Python 中pip用法(待继续添加)
    机器审核图片学习(2)安装pornDetector所用环境-python、scikit-learn、opencv
    机器审核图片学习(1)pornDetector
    机器学习工具
  • 原文地址:https://www.cnblogs.com/5236288kai/p/10624043.html
Copyright © 2020-2023  润新知