这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2826 |
我在这个课程的目标是 | 理解字符串和使用字符串 |
这个作业在那个具体方面帮助我实现目标 | 字符串的使用 |
参考文献 | c语言程序设计 |
基础作业
7-1 英文单词排序
1.实验代码
#include<stdio.h>
#include<string.h>
int main()
{
int x;
int i,j;
char a[21][11];
char b[11];
//输入每个单词,'#'表示输入结束
for(i = 0;;i++)
{
scanf("%s",a[i]);
if(a[i][0]=='#')
break;
}
a[i][0]=' '; //将'#'字符行设为空
x = i; //单词的个数为x
//冒泡排序,将单词排序(长度由小到大)
for(i=0;i<x;i++)
{
for(j=1;j<x-i;j++)
{
if(strlen(a[j-1])>strlen(a[j]))
{
strcpy(b,a[j-1]);
strcpy(a[j-1],a[j]);
strcpy(a[j],b);
}
}
}
//输出排序后的单词
for(i=0;i<x;i++)
{
printf("%s ",a[i]);
}
return 0;
}
2.流程图:
3.·遇到的问题
(1).刚开始不会使用字符串的冒泡排序法,后来查看了资料,知道了strcpy和strlen,就解决了问题。
错误截图:
4.运行图:
.
总结:
这一次的题目理论上很简单,使用冒泡排序法就行了,但是在操作过程中,遇到了一些问题,以前用的冒泡排序法但是整形的变量,这一次变成了字符串,就有一点不同,不过在思考之后还是想出来了。以后要加强知识的全面性,不能只会一种东西。
老师要求的代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE * fp;
int x;
int i,j;
char a[21][11];
char b[11];
fp=fopen("F:\compile data\liuxu.txt","r+");
for(i=0; i<6; i++){
fscanf(fp,"%s",&a[i]);
if(a[i][0]=='*')
break;
}
a[i][0]=' ';
x = i;
for(i=0;i<x;i++)
{
for(j=1;j<x-i;j++)
{
if(strlen(a[j-1])>strlen(a[j]))
{
strcpy(b,a[j-1]);
strcpy(a[j-1],a[j]);
strcpy(a[j],b);
}
}
}
for(i=0;i<x;i++)
{
printf("%s ",a[i]);
fprintf(fp,"%s ",a[i]);
}
if(fclose(fp)){
printf("Can not close the file!
");
exit (0);
}
return 0;
}
2.运行结果:
3.总结:
流程和上面的几乎相同。只是手动输入变成读取文档,输出的时候多一个打印进文件而已,没有什么很大的问题。
预习题:
目前比较困惑的问题:
1.指针的定义是什么?
2.指针怎么样初始化?
挑战题:
看了一会觉得应该从最简单最大子数组的开始寻找,然后判断是不是矩阵,从最大的开始判断,第二个,第三个,依次判断。具体的操作,还没有进行试验,大概就是这样的思路吧。
学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑大问题 |
---|---|---|---|---|
3/25-3/31 | 20个小时 | 640行 | 定义指针变量和一些基本赋值 | 什么时候用指针 |
累计代码行数和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 0 | 800 |
第二周 | 100 | 1000 |
第三周 | 300 | 1050 |
第四周 | 200 | 1050 |
第五周 | 300 | 640 |
曲线图
结队编程:
我觉得这个活动是有一定的好处的,俩个爱学习的人在一起就可以一起交流,共同成长,但是如果是俩个不怎么喜欢主动学习的人在在一组的话,那么就可能不会学习,从而失去了这个活动的意义。建议更加完善,多想一些有效的办法。