第五周总结

作业头

项目 内容
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 学会处理字符串常量
这个作业在那个具体方面帮助我实现目标 新增头文件和一些字符串处理函数
参考文献 冒泡排序,网上查找函数

作业

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

输入格式:
输入给出一行字符。

输出格式:
在一行中输出单词个数。

输入样例:
Let's go to room 209.
输出样例:
5

代码示例

#include<stdio.h>
int main(void)
{
char str[80];
int i=0,j,count=0, k;
while((str[i] = getchar() )!='\n')
i++;
k = i;
str[i] = '\0';
i = 0;
while(str[i++]!='\0')
{
if(str[i]==' ')
{
i++;
while(str[i]==' ')
{ i++;
}
count++;
}
}
count = count+1;
if(str[k-1] == ' ')
count = count-1;
for(i = 0; str[i] != '\0'; i++){
if(str[i] == str[i+1] && str[i] == ' ')
count = 0;
}
printf("%d\n",count);
return 0 ;
}

本题思路

本题遇到的问题

开始写了一个代码在编译器里输出的是一堆数,还有多记一次的,开始没考虑空格结尾,我以为用户都是正经的,但是pta就不正经,硬是要搞空格结尾,pta就是这么不正经,又把代码加了空格结尾,还有全部都是空格的

改了之后又来个格式问题。。。。。。。。。。。。。。。
又改了好了

作业二

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

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

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

输入样例:
blue
red
yellow
green
purple

输出样例:
red blue green yellow purple

博客园要求博客总结需要将PTA上代码做以下修改:(1)通过以自己名字命名的文件输入英文单词,(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)(3)在不删除原有内容的情况下,将排序后的单词输出到文件。

本题思路

代码改了一点

代码示例

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
	FILE *fp; 
	char a[20][10], str[80], b[10];
	int i, n = 0, j;
	i = 0;
	 fp = fopen("D:\\xiaoliang.txt", "a+");
	while(str[0] != '('){             //我学号最后一位为3,3加37为40,字符为‘(’ 括号 
	
	fscanf(fp,"%s ",str);
strcpy(a[n],str);
        n++;
    }
      for(i = 0;i < n-1; i++){
		for(j = i;j < n - 2; j++){
		if(strlen(a[j]) > strlen(a[j+1]))
  {
   strcpy(b,a[j]);
   strcpy(a[j],a[j+1]);
   strcpy(a[j+1],b);  
  }
		}
	}
	for(i = 0; i < n-1 ; i++){
		fprintf(fp,"\n%s ", a[i]);
	}
fclose(fp) ;
	return 0;
 } 

本题遇到的问题

写了一个代码但是又出了这个错误[Error] cannot convert 'const char' to 'FILE {aka _iobuf}' for argument '1' to 'int fprintf(FILE, const char*, ...)'
这次我知道这个错误了,不能把字符型强制转换成file型
原因我也找到了,是

fprintf(这里少了一个fp,这是文件路径,打开方式)

后来改了之后又出了一个错误输出的是一堆数字,没有排序

看了一下代码原因是输出是%s,不是%d,因为是字符

改了之后没什么问题了

作业三

这个是下周的预习作业选择题

预习的问题主要是2-6这一题有点问题
还有函数指针

挑战题

这次挑战题写一下思路算了,代码就不写了
思路是录入一个二维数组,先计算行的最大字数组,再计算列的最大子数组,找到各行各列的最大子数组,然后判断行列的鞍点是否一样,若不一样则再计算行列的最大值,比较大小,直到找到二维数组的最大字数组。大概思路就是这样

折线图

学习进度表

日期 这周所花的时间 代码行数 所学的简介 目前比较困惑的问题
23/3-30/3 7小时 200 字符和字符串处理 没什么问题

关于结对编程

这次的结对编程又改了,这次应该会比上一次好,应该可以避免一些大佬在一起和完全不会的在一起

posted @ 2019-03-29 13:50  xiaoliangliang  阅读(221)  评论(1编辑  收藏  举报