第五周作业

这个作业属于哪个课程C语言程序设计Ⅱ
这个作业要求在哪里 2019春第五周作业
我在这个课程的目标是 能在实践中掌握程序设计的思维和方法
作业在哪个具体方面帮助我 培养了求解能力
思路借鉴 百度的某博客

第四周预习题:

7-1 统计一行文本的单词个数 (15 分)
 

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.
代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
  int i,len,num;
  char zf[1000];
  
  gets(zf);
  len=strlen(zf); 
  if(zf[0]==' ')
  num=0;
  else
  num=1;
  for(i=0;i<len-1;i++){
    if(zf[i]==' '&&zf[i+1]!=' ')
    num++;
  }
  printf("%d",num);
  return 0;
}

思路:

 

预习作业:

2-1

下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。 (2分)

作者: 张泳
单位: 浙江大学城市学院
2-2

int *p 的含义是 (2分)

作者: 李廷元
单位: 中国民用航空飞行学院
2-3

如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。 (1分)

作者: 张泳
单位: 浙江大学城市学院
2-4

变量的指针,其含义是指该变量的( )。 (1分)

作者: 张泳
单位: 浙江大学城市学院
2-5

有如下程序段

int *p,a=10,b=1;
p=&a; a=*p + b;

执行该程序段后,a的值是 (2分)

作者: 李廷元
单位: 中国民用航空飞行学院
2-6

对于下列程序,正确的是() 。 (2分)

void f(int *p)
{
      *p = 5;
}
int main(void)
{
      int a, *p;

      a = 10;
      p = &a;
      f(p);
      printf(“%d”, (*p)++);

      return 0;
}
作者: 张泳
单位: 浙江大学城市学院
2-7

执行如下程序段,打印输出的内容是: (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;
}

疑惑:指针的定义不是很理解。为什么它是存放地址的?为什么不是一个值?

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:

输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:

输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple
#

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

流程图:


 

 截图:

本次编程感想:一开始遇到了瓶颈,但是后来百度看到了网友的博客,借鉴了思路。

处理文件时还不是很顺畅。

学习进度条:

 

 

 

posted @ 2019-03-29 15:23  4am_Godv  阅读(260)  评论(0编辑  收藏  举报