第5周作业
这个作业属于哪个课程 | c语言程序设计 |
---|---|
作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824 |
我的课程目标 | 能够流利地运用字符 |
这个作业在哪个具体方面帮助我实现目标 | 有些可以运用其他函数 |
参考文献 | http://c.biancheng.net/view/1447.html |
7-1 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
代码:
#include<stdio.h>
#include<string.h>
int main (void)
{
int i,k,len;
char c[10000];
gets(c);
len=strlen(c);
if(c[i]==' '){
k=0;
}
else{
k=1;
}
for(i=0; i<len-1; i++)
if(c[i]==' '&&c[i+1]!=' '){
k++;
}
printf("%d",k);
return 0;
}
思路和问题:这个题直接统计单词之间 的空格,如果有n个空格且第一个不是空格就是n+1个单词,反之就是n个.一开始我直接从1开始执行,导致错误,尝试从0开始,计算正确。
流程图:
截图:
(错误的截图被断网卡没了,我也找不到了,做了两遍的博客园)
7-1 英文单词排序 (25 分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。
输入样例:
blue
red
yellow
green
purple
#
输出样例:
red blue green yellow purple
代码:
#include<stdio.h>
#include<string.h>
int main ()
{
int i, j, len;
char c[21][11];
char t[11];
while (1) {
scanf("%s", &c[i][0]);
if (c[i][0] == '#') {
break;
}
i++;
}
c[i][0] = '\0';
len = i;
for (i = 0;i<len-1; i++) {
for (j = 1; j < len - i; j++) {
if (strlen(c[j-1])> strlen(c[j])) {
strcpy(t, c[j - 1]);
strcpy(c[j - 1], c[j]);
strcpy(c[j], t);
}
}
}
for (i = 0; i < len; i++) {
printf("%s ", c[i]);
}
return 0;
}
文件:
#include<stdio.h>
#include<string.h>
int main ()
{
FILE *fp;
int i,j,len;
char c[21][11];
char t[11];
fp=fopen("C:\\Users\\hasee\\Desktop\\longjiasi1\\ljs.txt","r+") ;
while (1) {
fscanf(fp,"%s", &c[i][0]);
if (c[i][0] == '#') {
break;
}
i++;
}
c[i][0] = '\0';
len = i;
for (i = 0;i<len-1; i++) {
for (j = 1; j < len - i; j++) {
if (strlen(c[j-1])> strlen(c[j])) {
strcpy(t, c[j - 1]);
strcpy(c[j - 1], c[j]);
strcpy(c[j], t);
}
}
}
for (i = 0; i < len; i++) {
fprintf(fp,"%s ", c[i]);
printf("%s ", c[i]);
}
fclose(fp);
return 0;
}
思路和问题:这个题我一开始不会,然后我翻书看到了两百多页介绍了字符串处理函数,就用了一些,进行for循环用strlen函数比较,如果合理就用复制函数进行变换。
流程图:
截图:
2019春第五周作业—预习
单选题
7
2-1
下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。 (2分) B
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 等价的语句是 () 。 (1分) B
A. m = *p;
B. *p = *&n;
C. m = &n;
D. m = **p;
作者: 张泳
单位: 浙江大学城市学院
2-4
变量的指针,其含义是指该变量的( )。 (1分) B
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
对于下列程序,正确的是() 。 (2分) A
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
学习总结:
周期 | 行数 | 所花时间 | 所学简介 | 所遇困惑 |
---|---|---|---|---|
第一周 | 22 | 三天 | 求最大值 | 掌握的不够好 |
第二周 | 31 | 四天 | 学习了文件 | 对文件还是不够了解 |
第三周 | 28 | 三天 | 学了二维数组 | 对二维数组不够熟练 |
第四周 | 23-51 | 四天 | 对数组的进一步了解 | 开始了解一点关于大小交换 |
第五周 | 花了两天 | 32 | 学习了字符串的判断 | 所了解的字符处理函数太少 |
学习感悟:本周的作业让我有了看书的乐趣,我很喜欢这次的作业,因为我发现了许多自己不了解的知识点,不懂的就多看一些书,书是很基础的。
结对编程感悟:两人之间的讨论使问题解决的速度快了许多,并且两人所了解的知识点也有点不同,可以促进我们之间的学习进步。