2019春第五周作业
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | 2019春第五周作业 |
我在这个课程的目标是 | 能够学懂多维数组以及对函数的一些使用 |
这个作业在那个具体方面帮助我实现目标 | strcpy函数的数组转换 |
参考文献 | 教材和视频 |
基础题:英文单词排序
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
编程代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[21][11]={'\0'};
char b[11]={'\0'};
int i,j;
while(1){
scanf("%s",a[i]);
if (a[i][0]=='#')
break;
i++;
}
a[i][0]='\0';
int count=i;
for(i=0;i<count;i++) {
for(j=1;j<count-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<count;i++){
printf("%s ",a[i]);
}
return 0;
}
编程截图:
编程代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE * fp;
char a[21][11]={'\0'};
char b[11]={'\0'};
int i,j; //打开文件
if ((fp=fopen("E:\\Mozzie Chur3.txt","a+"))==NULL)
{
printf("File open error!\n");
exit(0);
}
//读取文件中的数据直到'#'结束
while(1){
fscanf(fp,"%s",a[i]);
printf("%s\n",a[i]);
if (a[i][0]=='#'){
break;
}
i++;
}
a[i][0]='\0';
int count=i;
for(i=0;i<count;i++){
for (j=1;j<count-i;j++){
if (strlen(a[j-1])>strlen(a[j])) { //利用strcpy函数讲数组交换
strcpy(b,a[j-1]);
strcpy(a[j-1],a[j]);
strcpy(a[j],b);
}
}
}
fprintf(fp,"\n");
for(i=0;i<count; i++){ //读取储存区中的数据并打印到屏幕上
fprintf(fp,"%s\n",a[i]);
printf("%s\n",a[i]);
}
if(fclose(fp)){ //关闭文件
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
编程截图:
编程流程图:
预习题:
学习进度条:
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
3/4-3/9 | 6个小时 | 35行 | 学到了文件的创建,读取,输入 | 就是在读入文件的时候有点无法读取,输入文件的数据不正确 |
3/10-3/15 | 8个小时 | 48行 | 学习了一点二维数组 | 二维数组还有点不太明白 |
3/16-3/22 | 10个小时 | 38行 | 学习了数组的排序 | 对冒泡排序不是很懂 |
3/23-3/29 | 5个小时 | 46行 | 学习了一点strcpy函数 | 目前没有 |
总结&结对编程:这一周的作业感觉上没有很大的问题,但是对于预习题指针这一章还是看不太懂,看了视频感觉还是有点不懂,然后就说帮助吧,这次作业陶祥庭他对于文件打印到屏幕上不太懂,然后我帮助了一下他,教他运用调试,然后他发现了自己的一些错误,感觉这帮助我自己也学到了一些东西,也是通过看他使用strcpy函数,我才了解一点点。对于结对编程我自己没什么问题,另外一个人也没什么问题,所以基本上没什么交流。