• 堆积如山的第五周作业


    这个作业属于哪个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2824
    我在该课程的目标是 学会灵活使用sort排序算法,与strlen命令的使用
    这个作业在那个具体方面帮助我实现目标 关注相关的算法博客以及查阅以上相关应用的资料
    参考文献 https://blog.csdn.net/step_ma/article/details/74115184

    作业一:英文单词的排序:
    一:试题:7-1 英文单词排序 (25 分)

    本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。
    输入格式:
    输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。
    输出格式:
    输出为排序后的结果,每个单词后面都额外输出一个空格。
    输入样例:
    blue
    red
    yellow
    green
    purple

    输出样例:
    red blue green yellow purple
    二:分析:1.实际上该题的思路很简单,即输入数组单词,但是难点就是在如何将单词的长度与其所属的单词对应。很多人将字符输入后不能单词的长度与其所属的单词对应起来
    2.由于英文单词总数不超过20个,英文单词为长度小于10,所以我们需要用到二维数组,以下的思路将会在执行代码中标注出来!
    三.执行代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main ()
    {
    	int i;
    	char a[20][10],js[10];//20代表单词数量不超过20,10代表长度不超过10 
    	for(i= 0 ; i < 20 ; i++)
    	{
    		scanf("%s",a[i]);
    		if(a[i][0]=='#')//代表字符若为#号 ,则结束循环结束
    		break;
    		
    	}                                                            
    	for(int len = 1; len < i  ; len++)   //重点在                        
    	for(int lens = 0 ; lens < i - len  ; lens++ ) //此处           
    	  {                                                         
    	  	   if(strlen(a[lens])>strlen(a[lens+1])){       //本处直接使用strlen命令,利用c语言自带的库函数进行对字符串的处理,直接把求出的字符串长度与其所属英文单词对应!        
    	                        strcpy(js,a[lens]);                 
    	                          strcpy(a[lens],a[lens+1]);//strcpy在冒泡排序中起到至关重要的作用,即 交换
    	                         strcpy(a[lens+1],js);
    	                     }
    }
    	for(int s = 0 ; s < i ; s++)
    	printf("%s ",a[s]);//将排序后的单词输出!
    	
    	return 0;
    

    四.运行结果正确截图:

    五.运行流程图:

    六.本题总结:由于这次是在c++上自行调试运行,所以本题在PTA提交时直接一次性AC,其实本次作业使用的方法包含了很多技巧性的东西,包括有一部分老师没有讲解过的知识,所以用了许多小技巧,省去了许多麻烦步骤。本来这次想使用c自带sort命令进行排序,但是据相关文档,得知sort属于不稳定排序,无法将单词的长度与其所属的单词对应起来,所以在PTA上直接编译报错!关于sort命令排序的使用,我还需要多练习相关的习题,并熟练掌握和运用!strlen命令亦是如此!
    任务二:1)通过以自己名字命名的文件输入英文单词,(2)英文单词输入的结束标记为你学号最后一位数+37所对应的ASCII字符。(例如:你的学号最后一位为9,则结束标记为9+37=46所对应的ASCII字符“.”)(3)在不删除原有内容的情况下,将排序后的单词输出到文件。
    分析:只需要在自己源代码的基础上进行一定的修改即可!由于我的学号最后一位为8,所以加上37为45,对应的ASC||的元素为K!输入K结束即可
    二:执行代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	FILE*pointer;
    	int i,lens,s;
    	char a[20][10],js[10],len;//20代表单词数量不超过20,10代表长度不超过10 
    	if((pointer=fopen("D:\wonzenkei.txt","r+"))==NULL)
    	{
    		printf("Error!
    ");
    		exit(0);
    	}
    	for(i= 0 ; i < 20 ; i++)
    	{
    		scanf("%s",a[i]);
    		fprintf(pointer,"%s
    ",a[i]);
    		if(a[i][0]=='K')//代表首个字符若为K号 
    		break;
    		
    	}
    	for(int len = 0; len < i  ; len++)
    	for(int lens = 0 ; lens < i - len - 1 ; lens++ )
    	  {
    	  	   if(strlen(a[lens])>strlen(a[lens+1])){
    	                        strcpy(js,a[lens]);
    	                          strcpy(a[lens],a[lens+1]);
    	                         strcpy(a[lens+1],js);
    	                     }
    }
    	for(int s = 0 ; s < i ; s++){
    	printf("%s ",a[s]);
    	fprintf(pointer,"%s ",a[s]);
     }
    
    	if(fclose (pointer)){
    		printf("Can't close!
    ");
    		exit(0);
    	}
    	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;
    C.执行该程序段后,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
    问题:1.如何使用指针对元素分配内存空间
    2.如何应用指针进行相关代码,元素的运行与计算

    最后:学习进度条

    结对编程总结:本次结对编程我的队友是王雅琼,在这当中我们相互讨论,帮她解决了很多问题,并且将我所学到的相关技巧告诉了她,在帮其修改代码时,发现她错把“ ”打成了‘ ’号,,导致多次测试时出现了乱码的情况,并且多次查找都未找出错因,对我自己来说:还是因为对代码的阅读不仔细,阅读代码能力欠佳,在这一方面我还需要注重相关思维的培养,学会流畅阅读他人代码。对于我队友来说:可能还是输入代码不仔细,编程是一项很细心的活,在执行相关的任务时,容错率几乎为零,所以我们还是需要多一个心眼。至此,我想到了蓝桥杯许多未获奖的选手,他们的代码本身能通过编译,可惜的是他们未按照大赛要求将main函数进行0值得返回,这导致题目得分直接为零,所以差之毫厘,失之千里!还有不少的选手,连最简单的第一道填空题都未算对,痛失了本应得到的分,他们很多人借用电脑的计算器运算时,竟然将数字输错。而我在比赛时,为防止意外,我在计算器上算得的结果到最后还用手算验算了一遍。总之,盲目自信不可有,细心留意不可无,最后还是需要感谢博客,感谢老师,感谢一切的IT平台给了我一个这样的“吐槽”机会,让我能时刻意识到自己的问题所在并将其记录下来

  • 相关阅读:
    MySQL常见问题(包括忘记root密码)
    MySQL运维面试基础题目
    系统根目录可用空间低于20%,清理mysql binary logs日志空间
    服务检测是否正常运行的shell脚本
    CentOS下安装 MySQL5.5
    问题处理--ceph集群告警: pgs inconsistent修复方案
    十、Spring中常用注解-分层整理
    七、SXSSFWorkbook生成大excle,避免内存溢出
    一、FreeMarker实现对js和css压缩
    九、web.xml理解
  • 原文地址:https://www.cnblogs.com/wonzenkei/p/10618690.html
Copyright © 2020-2023  润新知