2019 春第五次做业

一.作业头:
这个作业属于那个课程
C语言程序设计II
这个作业要求在哪里
https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2828
我在这个课程的目标是
完全掌握数组
这个作业在那个具体方面帮助我实现目标
学会用代码对英文单词进行排序
参考文献
在课堂结束时拍下课件内容

二.基础作业:##

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<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    FILE *fp;
    
    char input[21][11] = { '' };
    char snap[11] = { '' };
    int i = 0;
    
    if((fp=fopen("C:\Users\罗\Desktop\luoyuliang.txt","w+"))==NULL){
        printf("File open error!
");
        exit(0);
    }
    while (1) {
        scanf("%s", input[i]);
        if (input[i][0] == '*')
            break;
        i++;
    }
    input[i][0] = '';
    int len = i;
    int j = 0;
    for (i = 0; i < len; i++)
    {
        for (j = 1; j < len - i; j++)
        {
            if (strlen(input[j - 1]) > strlen(input[j]))
            {
                strcpy(snap, input[j - 1]);
                strcpy(input[j - 1], input[j]);
                strcpy(input[j], snap);
            }
        }
    }
    for (i = 0; i < len; i++)
        printf("%s ", input[i]);
        
    for (i = 0; i < len; i++)
        fprintf(fp,"%s ", input[i]);
    
    if(fclose(fp)) {
        printf("Can not close the file!
");
        exit(0);
    }
 
    return 0;
}

2)实验思路

3)碰到的问题
与书上的字符串不同
方法:能先去查网上的,然后strcpy是字符串复制函数。
4)实验结果

三,预习作业:##

2019春第五周作业—预习:
2-1下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是(B)。 (2分)
int a, *x = a;
int a, *x = &a;
int *x = &a, a;
int a, x = a;
2-2int *p 的含义是 (2分) B
p是一个指针, 用来存放一个整型数
p是一个指针, 用来存放一个整型数据在内存中的地址
p是一个整型变量
以上都不对
2-3如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 (B) 。 (1分)
m = *p;
*p = *&n;
m = &n;
m = **p;
2-4变量的指针,其含义是指该变量的( B)。 (1分)

地址

一个标志
2-5有如下程序段
int p,a=10,b=1;
p=&a; a=
p + b;
执行该程序段后,a的值是(B) (2分)
12
11
10
编译出错
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;
}

5
6
10
11
2-7执行如下程序段,打印输出的内容是:(C) (2分)

#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;
}

5, 9
6, 10
5, 10
6, 9

五,预习主要内容##

1.指针变量就是记录、保存地址的变量,表示p是一个指针。
2.作为参数的指针在被调用的时候得到了某个变量的地址而不能交给变量本身或交给它那个变量值
3.必须用&取得某个变量的地址,把这个变量地址传给指针
4.
是一种运算符,用来访问指针的值所表示的地址上的变量

六,预习中存在的疑惑##

1.指针的灵活应用并不是很好
2.指针在函数中的作用不太清楚

2019春第四周作业(预习题)##

7-1 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式#

输入给出一行字符
输出格式

在一行中输出单词个数#

输入样例

Let's go to room 209

输出样例#

5
include<stdio.h>
#include<string.h>
int main(){ 
  char a[1000];
  gets(a);  
  int m,i,count; 
  m=strlen(a);
  
  if(a[0]==' ')	
    count=0;  
  else	 
    count=1;
    
  for(i=0;i<m-1;i++)  {	
    if(a[i]==' ' && a[i+1]!=' ')	
    count++;  } 
    printf("%d
",count);  
    return 0; }

2)实验思路

3)碰到的问题及解决方法
问题:与书上不同要用strlen函数,数组要足够的大
方法:参照书上的列子
4)实验结果

学习进度条##

七,学习感悟##

本周学习数组有关的各种知识,虽然进行了结队编程解决了一些问题,但是与做题还是有一定的距离。
通过看助教视频学习一些方法,学习C语言一定要动手,只看不做,眼高手低是不行的。我需要学的东西实在太多,落下太多的知识与方法,自己要加油多花时间去学去做题,出现错误去解决问题,从而达到掌握C语言。认真去学相信可以学的很好的。
我知道我曾经的贪图的舒适,正在慢慢杀死自己。相信:我花时间给C语言,我也会收获C语言的!!!

原文地址:https://www.cnblogs.com/luoyuliang/p/10620741.html