2019年春季学期第五周作业
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | |
我在这个课程的目标是 | 学会判断回文,在选择排序的基础上更进一步 |
这个作业在哪个具体方面帮助我实现目标 | 这次作业在同学的帮助下学会了一些以前不知道的知识(自定义的运用) |
参考文献 | 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)在不删除原有内容的情况下,将排序后的单词输出到文件。
实验代码:
#includeint 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;m strlen(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
实验代码:
#includeint 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 <stdio.h>
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 | 学会规范的画流程图,认识了字符串 | 进制之间的转换的代码 |
学习感悟
总体来说还是自我感觉比以前强些了,但是仍然有许多自己不满意的地方,不要放弃,我就不信我搞不明白了。加油!!!
结对编程感想
因为我的搭档没有来,所以我是要向淇同学告诉我的,他很厉害,能够告诉我很多一开始我自己不知道的知识,希望能够通过结对编程学到更多。