• 第五周作业


    2019年春季学期第五周作业

    这个作业属于哪个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
    我在这个课程的目标是 学会判断回文,在选择排序的基础上更进一步
    这个作业在哪个具体方面帮助我实现目标 这次作业在同学的帮助下学会了一些以前不知道的知识(自定义的运用)
    参考文献 C语言程序设计(第3版)

    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<bits/stdc++.h>
    int main (void)
    {
      char a[21][11];
      char b[11];
      int i,j,m;
      FILE *fp;
      char tmp[11];
      if((fp=fopen ("E:\Swallow.txt","a+"))==NULL){
      	printf("File open error!
    ");
      	exit (0);
      }
      for(i=0;i<21;i++)
      {
      	fscanf(fp,"%s ",&a[i]);
      	if(a[i][0]==')')
      	  break;		  
      }
      for(m=1;m<i;m++)
      for(j=0;j<i-m;j++)
        if (strlen(a[j])>strlen(a[j+1]))
    	{
               strcpy(tmp,a[j]);
               strcpy(a[j],a[j+1]);
               strcpy(a[j+1],tmp);
        }
        for(int n=0;n<i;n++)
         printf("%s ",a[n]);
         if(fclose(fp)){
           printf("Can not close the file!
    ");
           exit (0);
       }
    return 0;
    }
    

    设计思路:




    遇到的问题及解决方法:

    问题:定义变量时只定义了一个数组,对另外一个数组不理解
    解决方法:询问同学知道了数组b是接收的一个数组;

    问题:结尾没有正确的接收输出
    解决方法:仔细审题然后运用一个for语句和printf语句;

    问题:在写博客的时候对pta什么的文件的更改有些问题,很多例如scanf都会忘记fscanf
    解决方法:自己多注意细节;

    实验运行图:



    第四周预习作业

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

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

    输入格式:

    输入给出一行字符。

    输出格式:

    在一行中输出单词个数。

    输入样例:

    Let's go to room 209.

    输出样例:

    5

    实验代码:

    #include <stdio.h>
    int main()
    {
    	char a;
    	int cnt=0,count=0;
      	while(1){
      		scanf("%c",&a);
    		if(a=='
    '){    
    			break;
    		}
    		else if(a!=' '){
    			if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')	{
    				count++;   
    				cnt++;
    			}
    				while(1){
    					scanf("%c",&a);
    					if(a==' '||a=='
    '){ 
    						break;
    					}
    					cnt++;
    				}
    			if(cnt>1){
    				if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')	
    			  count++; 
    			}
    			if(a=='
    '){
    				break;
    			}
    		} 
    	}
      	printf("%d",count);
        return 0;
    }
    

    设计思路:




    遇到的问题及解决方法:

    问题:一开始对单词的判断不会
    解决方法:自己查资料就用了这一复杂的方法

    问题:代码用了很多循环结构,一开始自己做的时候会循环不清楚了
    解决方法:画流程图,询问同学解决这一问题

    运行图:


    2-1

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

    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 等价的语句是 (B) 。 (1分)

    A.m = p;
    B.
    p = *&n;
    C.m = &n;
    D.m = **p;
    作者: 张泳
    单位: 浙江大学城市学院

    2-4

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

    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

    对于下列程序,正确的是(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

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

    预习总结:

      知道了地址可以体现指向关系,指针变量只能定向的指向定义时所规定类型的变量,指针变量定义后变量值是不确定的,所以应用前必须先赋值;指针变量只能存放地址,不能将一个常数赋给指针变量;*的结合性为从右往左,&的结合性为从左往右。
    

    遇到的疑惑:有关指针的运算的题目,还是有点搞弄不明白。

    学习进度条

    周/日期 这周所花的时间 代码行数 学到的知识点 目前比较疑惑的问题
    2/25-3/3 三天 45 学习数组及用法 数组的长度问题
    3/4-3/10 三天 40 文件的处理问题 文件指针的用法
    3/11-3/15 四天 50 对数组的遍历 关于遍历的范围还有不理解的地方
    3/16-3/22 四天 80 用一维数组和二维数组编程 冒泡算法的运用
    3/23-3/29 三天 65 学会规范的画流程图,认识了字符串 进制之间的转换的代码

    学习感悟

    总体来说还是自我感觉比以前强些了,但是仍然有许多自己不满意的地方,不要放弃,我就不信我搞不明白了。加油!!!

    结对编程感想

    因为我的搭档没有来,所以我是要向淇同学告诉我的,他很厉害,能够告诉我很多一开始我自己不知道的知识,希望能够通过结对编程学到更多。

  • 相关阅读:
    撒旦撒旦撒
    的释放的是分
    识别真假搜索引擎(搜索蜘蛛)方法(baidu,google,Msn,sogou,soso等)
    [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)
    使用SQLMAP对网站和数据库进行SQL注入攻击
    Kali Linux 安装教程-转
    【教程】如何修改路由表?
    基于comet服务器推送技术(web实时聊天)
    Ghost硬盘对拷
    Web 通信 之 长连接、长轮询(long polling)
  • 原文地址:https://www.cnblogs.com/hxy2017826779/p/10610590.html
Copyright © 2020-2023  润新知