2019年春季学期第五周作业
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824 |
我在这个课程的目标是 | 学会判断回文,在选择排序的基础上更进一步 |
这个作业在哪个具体方面帮助我实现目标 | 这次作业在同学的帮助下学会了一些以前不知道的知识(自定义的运用) |
参考文献 | C语言程序设计(第3版) |
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
输出样例:
red blue green yellow purple
要求:(1)通过以自己名字命名的文件输入英文单词,(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)(3)在不删除原有内容的情况下,将排序后的单词输出到文件。
实验代码:
#include
int main (void)
{
char a[21][11];
char b[11];
int i,j,m;
FILE *fp;
char tmp[11];
if((fp=fopen ("E:\\Swallow.txt","a+"))==NULL){
printf("File open error!\n");
exit (0);
}
for(i=0;i<21;i++)
{
fscanf(fp,"%s ",&a[i]);
if(a[i][0]==')')
break;
}
for(m=1;mstrlen(a[j+1]))
{
strcpy(tmp,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],tmp);
}
for(int n=0;n
设计思路:
遇到的问题及解决方法:
问题:定义变量时只定义了一个数组,对另外一个数组不理解
解决方法:询问同学知道了数组b是接收的一个数组;
问题:结尾没有正确的接收输出
解决方法:仔细审题然后运用一个for语句和printf语句;
问题:在写博客的时候对pta什么的文件的更改有些问题,很多例如scanf都会忘记fscanf
解决方法:自己多注意细节;
实验运行图:
第四周预习作业
7-1 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
实验代码:
#include
int main()
{
char a;
int cnt=0,count=0;
while(1){
scanf("%c",&a);
if(a=='\n'){
break;
}
else if(a!=' '){
if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9') {
count++;
cnt++;
}
while(1){
scanf("%c",&a);
if(a==' '||a=='\n'){
break;
}
cnt++;
}
if(cnt>1){
if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')
count++;
}
if(a=='\n'){
break;
}
}
}
printf("%d",count);
return 0;
}
设计思路:
遇到的问题及解决方法:
问题:一开始对单词的判断不会
解决方法:自己查资料就用了这一复杂的方法
问题:代码用了很多循环结构,一开始自己做的时候会循环不清楚了
解决方法:画流程图,询问同学解决这一问题
运行图:
2-1
下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是(B)。 (2分)
A.int a, x = a;
B.int a, x = &a;
C.int *x = &a, a;
D.int a, x = a;
作者: 张泳
单位: 浙江大学城市学院
2-2
int *p 的含义是 (2分)(B)
A.p是一个指针, 用来存放一个整型数
B.p是一个指针, 用来存放一个整型数据在内存中的地址
C.p是一个整型变量
D.以上都不对
作者: 李廷元
单位: 中国民用航空飞行学院
2-3
如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 (B) 。 (1分)
A.m = p;
B.p = *&n;
C.m = &n;
D.m = **p;
作者: 张泳
单位: 浙江大学城市学院
2-4
变量的指针,其含义是指该变量的(B )。 (1分)
A.值
B.地址
C.名
D.一个标志
作者: 张泳
单位: 浙江大学城市学院
2-5
有如下程序段
int p,a=10,b=1;
p=&a; a=p + b;
执行该程序段后,a的值是 (2分)(B)
A.12
B.11
C.10
D.编译出错
作者: 李廷元
单位: 中国民用航空飞行学院
2-6
对于下列程序,正确的是(A) 。 (2分)
void f(int p)
{
p = 5;
}
int main(void)
{
int a, *p;
a = 10;
p = &a;
f(p);
printf(“%d”, (*p)++);
return 0;
}
A.5
B.6
C.10
D.11
作者: 张泳
单位: 浙江大学城市学院
2-7
执行如下程序段,打印输出的内容是: (2分)(C)
include
void fun (int c, int d) {
c++;
(d)++;
}
int main ( ){
int a=5, b=9;
fun(a, &b);
printf("%d, %d", a, b);
return 0;
}
A.5, 9
B.6, 10
C.5, 10
D.6, 9
预习总结:
知道了地址可以体现指向关系,指针变量只能定向的指向定义时所规定类型的变量,指针变量定义后变量值是不确定的,所以应用前必须先赋值;指针变量只能存放地址,不能将一个常数赋给指针变量;*的结合性为从右往左,&的结合性为从左往右。
遇到的疑惑:有关指针的运算的题目,还是有点搞弄不明白。
学习进度条
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点 | 目前比较疑惑的问题 |
---|---|---|---|---|
2/25-3/3 | 三天 | 45 | 学习数组及用法 | 数组的长度问题 |
3/4-3/10 | 三天 | 40 | 文件的处理问题 | 文件指针的用法 |
3/11-3/15 | 四天 | 50 | 对数组的遍历 | 关于遍历的范围还有不理解的地方 |
3/16-3/22 | 四天 | 80 | 用一维数组和二维数组编程 | 冒泡算法的运用 |
3/23-3/29 | 三天 | 65 | 学会规范的画流程图,认识了字符串 | 进制之间的转换的代码 |
学习感悟
总体来说还是自我感觉比以前强些了,但是仍然有许多自己不满意的地方,不要放弃,我就不信我搞不明白了。加油!!!
结对编程感想
因为我的搭档没有来,所以我是要向淇同学告诉我的,他很厉害,能够告诉我很多一开始我自己不知道的知识,希望能够通过结对编程学到更多。