第五周总结
作业头
项目 | 内容 |
---|---|
这个作业属于那个课程 | 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 | 字符和字符串处理 | 没什么问题 |
关于结对编程
这次的结对编程又改了,这次应该会比上一次好,应该可以避免一些大佬在一起和完全不会的在一起