zoukankan      html  css  js  c++  java
  • C语言博客作业04数组

    1.本章思考总结

    1.1思维导图

    1.2本章学习体会及代码量学习体

    1.2.1学习体会

    这几个星期,我们用了很长一段时间学习了数组,一方面是因为这方面的知识比较多,而且复杂,一维二维字符三个方面的题都很多而且具有一定难度:一维方面要掌握许多排序的方法,二维则与数学方面的矩阵相联系,并且有一系列的与生活实际联系的应用。在我看来,字符则更加复杂一些,在编程方面有了一些新语法,考虑的更全面也更有深度。另一方面则是因为数组是c语言很重要的思想与应用,一个数组可以承载同一类型的许多数,并且与后面学到的指针、结构类型、文件都会联系起来使用。数组的应用是重要而广泛的,同时题也是很难的,学了数组,好几个题集一起来了,还难,编程量还多,恰逢线代期末考试,这段时间过得就很艰难。现在线代考试结束,我也要趁这段时间好好学习一下数组这方面的知识,夯实基础。

    1.2.2代码累计

    2.PTA总分

    2.1得分与排名:



    2.2我的总分:182

    3.PTA实验作业

    3.1PTA题目1

    给定两个整型数组,本题要求找出不是两者共有的元素。
    

    3.1.1算法分析

    1.int main
       int i;
       int an,bn,cn;
       int a[an];
       int b[bn];
    //定义两个数组,一个a,一个b
     然后定义一个函数并调用DiffArray(a,an,b,bn);
    2.void DiffArray
       int c[lenc];   //定义一个具有两个数组长度的数组,用来存放a和b 数组的集合
       int  flag[i];//定义flag 数组用来存放相同的数
       用for循环嵌套遍历lenc数组,利用flag找到是否存在相同的数
       for(i=0;i<lenc;i++)
      {
        if(flag[i]) continue;
        for(j=i+1;j<lenc;j++)
        {
          if(c[i]==c[j] && i<an && j>=an)  //same in array a and b
          {
            flag[j]=1;
            flag[i]=1;
          }
          if(c[i]==c[j] && j<an)//same in array a
            flag[j]=1;
          if(c[i]==c[j] && j>=an)//same in array b
            flag[j]=1;
        }
        if(flag[i]==0)
          c[k++]=c[i];
      }                                    //c数组用来存放不同的数,最后printf输出
    

    3.1.2代码截图

    3.1.3PTA提交列表及说明

    Q1:编译错误?
    A1:无法找到思路,并不懂得如何将相同的数存入数组,而且第一开始没有想到用一个数组存放两个数组之后遍历。
    Q2:答案错误?
    A2:flag数组位置错误

    3.2PTA题目2

    上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
    本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
    

    3.2.1算法分析

    1.定义输入矩阵的个数T,和循环中会用到变量i,j,k
    2.for i 到T     //是个大循环,在最外层,用来输出循环的个数
    3.在大循环里
    	int a[n][n]; 
      		 for(j=0;j<n;j++)
       		{
          		for(k=0;k<n;k++)
          			scanf("%d",&a[j][k]);
      		 }                                                      //输出矩阵
    3.for(j=0;j<n;j++)
       		{
       	   		for(k=0;k<n;k++)
       	   		{	
       	      		if(j>k)
    					{
    						if(a[j][k]!=0)
    							flag=0;
    					 } 
    	    	       }
      		 }                                                                //判断上三角形矩阵
    

    3.2.2代码截图

    3.2.3PTA提交列表及说明

    Q1:编译错误?
    A1:日常粗心问题,中英文标点搞混了。
    Q2:答案错误
    A2:前几次是flag的位置不对,后来改了很多,发现是条件语句错了,应该有两个if

    3.3PTA题目

    一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
    

    3.3.1算法分析

    1.int main()
       char ch
       ChangeIp   //在主函数中先定义一个字符数组,用于存放二进制数,然后调用IP地址转换的函数
    2.在ChangeIp函数中
    for(i=0;i<32;i++)
        {
          number=number*2+ch[i]-'0';
          if(i%8==7)
    	  {
    	  	printf("%d",number);
           	if(i!=31)
    	  		printf(".");
          	number=0;                        //循环加判断,实现IP地址的转换
    

    3.3.2代码截图

    3.3.3PTA提交列表及说明

    Q1:编译错误?
    A1:我函数掌握的不是很熟练,在调用数组时,形参实参发生了调用错误。
    Q2:答案错误?
    A2:if条件不对,怎么都无法得出正确答案,直到我看了 大佬的代码,觉得这个if判断的很机智非常简单。

    4代码互评

    4.1代码截图

    同学代码

    我的代码

    4.2评论

    1.该同学的IP地址转换代码与我的不同,我在其中用了函数,而她是直接在main函数中写的
    2.我们的判断条件不同,我是取余8得7,她是i+1取余7得0
    3.在“.“的处理上不同,她用了if else判断,而我是直接不等于31

  • 相关阅读:
    【RocketMQ之介绍】
    1. JVM体系结构概述
    技术贴
    http协议
    如何在2个小时之内掌握48个国际音标?
    托业全真高频词汇(一)
    三. 托业单词之业务拓展 Business Development
    二、托业单词之人事及管理 Personnel & Management
    一、托业单词之办公室事宜 Office matters
    VUE 之让数字四舍五入
  • 原文地址:https://www.cnblogs.com/20000519yxn/p/9951756.html
Copyright © 2011-2022 走看看