2019春季第五周作业
---恢复内容开始---
本次作业所属课程 | C语言程序设计|| |
本次作业要求 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2826 |
我在这个课程的目标是 | 我希望通过学习判断回文知识正确使用字符串进行程序设计 |
本次学习在哪些具体方面帮组我实现目标 | 理解字符串与一维字符数组的区别、字符串的存储以及字符串的操作方法 |
参考文献 | C语言程序设计 |
基础作业
题目1:
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#
作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
实验代码
#include<stdio.h> #include<string.h> #include<stdlib.h> int main(void) { FILE * fp; int n,i,j,min,k,temp,a[20]; char str[20][10],t[10]; if((fp=fopen("d:\\tanminjie.txt","r+"))==NULL){ printf("File open error!\n"); exit(0); } i=0; for(i=0;i<20;i++){ fscanf(fp,"%s\n",str[i]); a[i]=strlen(str[i]); if(str[i][0]==')'){ break; } } for(k=0;k<i;k++){ min=k; for(j=k+1;j<i;j++){ if(a[j]<a[min]){ min=j; } } temp=a[min]; a[min]=a[k]; a[k]=temp; strcpy(t,str[min]); strcpy(str[min],str[k]); strcpy(str[k],t); } for(n=0;n<i;n++){ fprintf(fp,"%s ",str[n]); printf("%s ",str[n]); } if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
设计思路(流程图)
错误截图:
我遇到的问题:在PTA里提交时有测试点不对。解决方法:后来在队友的指导下把指针删除就通过了
我的编程感想:粗心的人要注意细节。运行截图:
预习作业:
1)预习的主要内容
主要是了解了指针,知道怎么定义指针的一般形式,知道了内存单元的内容和内存单元的地址的区别,定义多个指针变量时,每个指针变量前面都必须加*,和指针的基本运算,还有将指针变量初始化
2)完成情况截图(要求有题目和答案)
挑战题:继续挑战第二周的挑战作业:返回整数数组中最大子数组的和,本周,我们要求二维数组的子数组必须是矩形的。
#include<stdio.h> #include<stdlib.h> int main(void) { FILE * fp; int max,num[3][6],a[100],b[100]; int i,j,k,h,l,m,n,sum,s,x; char op; if((fp=fopen("d:\\tanminjie.txt","r"))==NULL){ printf("File open error!\n"); exit(0); } fscanf(fp,"%d",&h); fscanf(fp,"%d",&l); for(i=0;i<3;i++){ for(j=0;j<6;j++){ fscanf(fp,"%d%c",&num[i][j],&op); printf("%d%c",num[i][j],op); } } if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } if((fp=fopen("d:\\tanminjie.txt","a"))==NULL){ printf("File open error!\n"); exit(0); } m=0; for(i=0;i<h;i++){ for(k=0;k<l;k++){ sum=num[i][k]; for(j=k+1;j<l;j++){ sum=sum+num[i][j]; a[m]=sum; m++; } } } x=m/h; n=0; for(i=0;i<m;i++){ s=a[i]; for(j=i+x;j<m;j=j+x){ s=s+a[j]; b[n]=s; n++; } } max=b[0]; for(i=0;i<n;i++){ if(max<=b[i]){ max=b[i]; } } fprintf(fp,"%d",max); printf("%d",max); if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
设计思路(流程图)
学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑大问题 |
---|---|---|---|---|
3/25-3/31 | 20个小时 | 240行 | 定义指针变量和一些基本赋值 | 什么时候用指针 |
累计代码行数和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 0 | 80 |
第二周 | 100 | 100 |
第三周 | 300 | 150 |
第四周 | 200 | 150 |
第五周 | 300 | 240 |
学习感悟:理解字符串与一维字符数组的区别、字符串的存储以及字符串的操作方法。疑惑:指针
结对编程:比自己一个人写好,互相学习,共同进步。心得:努力努力,还差很远呢