这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2826 |
我在这个课程的目标是 | 学好C为JAVA打下基础 |
这个作业在那个具体方面帮助我实现目标 | 冒泡排序的使用 |
参考文献 | 百度 |
基础作业:英文单词排序
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
*
输出样例:
red blue green yellow purple
老师要求:
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,又看了一遍冒泡排序的使用,了解了冒泡排序的优点与试用范围
正确截图:
统计一行文本的单词个数:
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
实验代码:
#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语句中程序的构造 |
学习感悟:
学习要一步一步来不能急,把每个题都搞懂