基础作业:英文单词排序
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输出为排序后的结果,每个单词后面都额外输出一个空格。
老师要求:
1)通过以自己名字命名的文件输入英文单词2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.” 我学号尾数是5, 5+37=42 所以ascll字符为'*'3)在不删除原有内容的情况下,将排序后的单词输出到文件。
实验代码:
#include<stdio.h> #include<string.h> //本题要调用string函数// #include<stdlib.h> int main() { FILE *fp; int length; int i,j; char a[21][11]; char b[11]; //中介数组方便排序使用// if((fp=fopen("c:\\txet\\tangbin.txt","r+"))==NULL) { printf("File open error!\n"); exit(0); } while (1) { fscanf(fp,"%s", a[i]); if (a[i][0] == '*') break; i++; } a[i][0]='\0'; //将'*'字符行设为空 // length = i; //单词的个数为length// for( i=0;i<length;i++) //冒泡排序,将单词排序(长度由小到大)// { for( j=1;j<length-i;j++) { if(strlen(a[j-1])>strlen(a[j])) { strcpy(b,a[j-1]);//设a,b,c,把a给b,c给a,b给c,注意给的顺序,来达到排序的目的// strcpy(a[j-1],a[j]); strcpy(a[j],b); } } } for( i=0;i<length;i++) //输出排序后的单词// { printf("%s ",a[i]); //字符串用%s// } if(fclose(fp)) { printf("Can not close the file!\n"); exit(0); } return 0; }设计思路:
本题调试过程中碰到的问题以及解决方法:
忘记定义行与列的i与j,从而直接使用i,又看了一遍冒泡排序的使用,了解了冒泡排序的优点与试用范围
正确截图:
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入给出一行字符。
在一行中输出单词个数。
实验代码:
#include<stdio.h> int main() { char str[1000]; int num=0,word=0; //num表示单词总数,word表示这个字符是否为单词// char c; gets(str); for(int i=0;(c=str[i])!='\0';i++) if(c==' ') { word=0; } else if(word==0) { word=1; num++; } printf("%d\n",num); return 0; }设计思路:
本题调试过程中碰到的问题及解决方法:
else的地方忽略判断是否为单词,在else后面加个if语句(word==0)
正确截图:
预习作业
主要内容:
指针的使用以及其好处
预习中存在的困惑:
1.指针给我们的程序带来的好处究竟是什么
2.什么情况下需要用指针
作业截图:
周这周所花的时间代码行数学到的知识点目前比较迷惑的最大问题第五周12个小时 指针的使用for语句中程序的构造
学习感悟:
学习要一步一步来不能急,把每个题都搞懂
转载于:https://www.cnblogs.com/tb-0706/p/10623249.html
相关资源:吴恩达-深度学习-第五课-第三周编程作业