2019 春第五次作业

基础作业一

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

输入格式:

输入给出一行字符。

输出格式:

在一行中输出单词个数。

输入样例:

Let's go to room 209.

输出样例:

5

(一)实验代码:

#include<stdio.h>
int main()
{
    int i,number=0,count=0;
    char c,string[10000];
    gets(string);
    for(i=0;(c=string[i])!='\0';i++) /*只要没有结束符就一直循环下去*/ 
    if(c==' ')
    number=0;   /*有空格单词数为0*/ 
    else if(number==0){
    number=1; /*没有空格时单词数为1,再计数 */ 
    count++;
    }
    printf("%d\n",count);
    return 0;
}

(二)设计思路

(三)实验遇到的问题及解决方案

在老师详细的讲解一维字符数组的定义及引用,加入字符串这个东西,本题一遍过。
(四)运行结果截图

 

基础题二

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

输入格式:

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

输出格式:

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

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

(一)文件代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    int i;
    char input[21][20];
    char a[20];
    if((fp = fopen ("D:\\yanghucai.txt","r+")) == NULL) 
    {
        printf ("File open error!\n");
       
    }
        for(i=0;i<20;i++) {
        fscanf (fp,"%s",&input[i]);   //在文件中输入字符串数组
        if (input[i][0] == '&')
            break;
        }
        
     int len = i;
    for (i = 0; i < len; i++)      //计算字符串长度并进行比较 
    {
        for ( int j = 1; j < len - i; j++)
        {
            if (strlen(input[j - 1]) > strlen(input[j]))  //冒泡排序
            {
                strcpy(a, input[j - 1]);
                strcpy(input[j - 1], input[j]);
                strcpy(input[j], a);
            }
        }
    }
    fprintf(fp,"\n");
    for (i = 0; i < len; i++)
       fprintf (fp,"%s ",input[i]);
       if(fclose (fp) ){
           printf ("Can not close the file!\n");
      
        }
        return 0;
}

(二)设计思路

(三)实验遇到的问题

纠正·结果截图

 

 

第五周预习作业

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

A int a, *x = a;

B int a, *x = &a;

Cint *x = &a, a;

D int a, x = a;

2-2 int *p 的含义是 (B)

A p是一个指针, 用来存放一个整型数

B p是一个指针, 用来存放一个整型数据在内存中的地址

C p是一个整型变量

D 以上都不对

2-3 如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 (B)

A m = *p;

B * p = *&n;

C m = &n;

D m = **p;

2-4 变量的指针,其含义是指该变量的( B)

A 值

B 地址

C 名

D 一个标志

# 2-5 有如下程序段

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

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

感悟;本周学习了字符串与一维字符数组的区别、字符串的存储以及字符串的操作方法,对字符串数组还不太会用,还预习了指针,但是指针比较难

posted on 2019-03-29 09:23  莫念初  阅读(303)  评论(1编辑  收藏  举报

导航