第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 学习了字符串的判断 所了解的字符处理函数太少

学习感悟:本周的作业让我有了看书的乐趣,我很喜欢这次的作业,因为我发现了许多自己不了解的知识点,不懂的就多看一些书,书是很基础的。

结对编程感悟:两人之间的讨论使问题解决的速度快了许多,并且两人所了解的知识点也有点不同,可以促进我们之间的学习进步。

posted @ 2019-03-29 16:14  扉悦  阅读(222)  评论(1编辑  收藏  举报