• C语言博客作业--数据类型


    C语言博客作业--数据类型

    一、PTA实验作业

    题目1: 掉入陷阱的数字

    1. 本题PTA提交列表

    2. 设计思路

    1.定义变量bit,sum,num,numcopy,count=0,bit各位的数值,sum为运算后结果,num为输入数据,numcopy备份num数据,count统计次数
    2.输入num
    3.numcopy=num //备份num
    4.sum=0
    5.bit=num%10;//取出个位
    6.sum+=bit;//各位相加
    7.num/=10;//划掉个位
    8.if num!=0 返回5
    9.num=sum*3+1;//进行操作
    10.count++;//统计次数
    11.输出count和num
    12.if numcopy!=num,返回3

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    1.运行超时
    没有写入如果与上一轮的操作数相同就退出循环,所以就算已经相同也不会跳出循环
    解决方法:用一个numcopy,暂时保留了上一轮的操作数来与这一轮新的操作数比较,相同时即可跳出循环

    题目2:发红包

    1. 本题PTA提交列表

    2. 设计思路

    1.定义每种面额纸币数量存放变量和总金额sum
    2.输入sum
    3.if(hundred=sum/100)sum%=100;//如果sum除100得需要的张数,sum去掉该部分。
    4.if(fifty=sum/50)sum%=50;//如果sum除50得需要的张数,sum去掉该部分。
    5.if(twenty=sum/20)sum%=20;//如果sum除20得需要的张数,sum去掉该部分。
    6.if(ten=sum/10)sum%=10;//如果sum除10得需要的张数,sum去掉该部分。
    7.one=sum
    8.输出各面额张数

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    1.答案错误

    如图没有在该出打出空格,明明答案计算正确但是没分
    解决方法:补上空格,对齐
    2.刚开始以为该题与之前的题目相同,直接写了好几个for循环,然后因为数据太大,根本走不出循环,后来反应过来,这题应该不是用这种做法,重新考虑才想出来这种解决方法。

    题目3:简单计算器

    1. 本题PTA提交列表

    2. 设计思路

    • 主函数
      1.定义第一个操作数num1
      2.输入num1
      3.调用函数
    • operation函数
      1.传入数据num1
      2.定义num2为第二个操作数,flag判断除法分母为0或有非法运算符,字符op为运算符
      3.进入无限循环4-11
      4.输入op
      5.如果op不是‘=’,‘+’,‘-’,‘’,‘/’,flag=0
      6.如果op为‘=’结束循环
      7.否则输入num2
      8.如果op为‘+’num1+=num2;结束循环
      9.如果op为‘-’num1-=num2;结束循环
      10.如果op为‘
      ’num1*=num2;结束循环
      11.如果op为‘/’,如果num20,flag=0,结束循环,否则num1/=num2;结束循环
      12.如果flag
      0,输出ERROR,否则输出num1

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明。

    1.部分正确
    没有考虑到error的情况
    解决方法:引进了flag变量,当出现不合法运算符或者除数为0时,flag变为0,到最后判断flag的值,为0输出error否则输出最后结果。

    二、截图本周题目集的PTA最后排名。

    三、本周学习总结

    1.你学会了什么?

    1.1 一维数组如何定义、初始化?

    • 定义:数组类型 数组名[数组长度]
    • 初始化:
      1.类型名 数组名 [数组长度]={初值表}(特值)
      2.利用循环遍历(同一个值)
    for(i=0;i<n;i++){
        a[i]=0;
    }
    

    1.2 一维数组在内存中结构?可画图说明。数组名表示什么?

    • 结构:

    数组名是一个地址常量,存放数组内存空间的首地址

    1.3 为什么用数组?

    在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来互相区分,可以存储输入的数据,便于数据重现使用。

    1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.

    1.选择法:

    定义变量i,index,k,n,temp;
    输入n
    定义数组a[n]
    for i=0 to n-1
        输入a[i]
    end
    for k=0 to k<n-1
        ndex=k;存放最小值下标
        for i=k+1 to n
            if a[i]小于a[index]
                 index=i 
        end
        最小元素与下标为k的元素互换
    end
    for i=0 to n-1
        输出a[i]
    end
    

    2.冒泡法:

    定义变量i,j,k,n
    输入n
    定义数组a[n]
    for i=0 to n-1
        输入a[i]
    end
    for j=0 to n-i-1
        if a[j]大于a[j+1]
            互换a[j]和a[j+1]
    end
    for i=0 to n-1
        输出a[i]
    end
    

    3.直接插入排序

    定义变量i,j,k,n,temp
    输入n
    定义数组a[n]
    for i=0 to n-1
        输入a[i]
    end
    for i=1 to n-1
        for j=0 to i-1
            if a[j]<a[i] 
                a[i]插入到a[j]的位置
                原来a[j]到a[i-1]内的元素右移一位
        end
    end
    for i=0 to n-1
        输出a[i]
    end
    

    1.5 介绍什么是二分查找法?它和顺序查找法区别?

    • 二分法:
      (1)首先确定该区间的中点位置
      (2)然后将待查的K值与R[mid]比较
      (3)若相等,则查找成功并返回此位置
      (4)若R[mid]>K,则新的查找区间是R[1..mid-1]
      (5)若R[mid]<K,则新的查找区间是R[mid+1..n]
    • 区别:
      二分法只用于数据按顺序排列,但是比顺序法效率高
      顺序法可以用于无规律数据查找,但是效率比较低

    1.6 二维数组如何定义、初始化?

    • 定义:数组类型 数组名[数组行长度][数组列长度]
    • 初始化:
      1.利用循环遍历(同值)
    for(i=0;i<n;i++){
    for(j=0;j<n;j++){
        a[i][j]=0;
    }
    }
    
    

    2.类型名 数组名 [数组行长度][数组列长度]={初值表}(特值)

    1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。

    转置:

    //求a的转置矩阵,结果存于b中。
        int i,j;
        int a[M][N], int b[N][M];//M,N为任意值
        for(i = 0; i <M; i ++)
            for(j = 0; j < N; j ++)
                b[j][i] = a[i][j];//转置运算。
    
    

    关系:

    • 上三角:i<=j
    • 下三角:i>=j
    • 对称矩阵:a[i][j]==a[j][i]

    1.8 二维数组一般应用在哪里?

    一般用于数据间有位置规律的情况,如矩阵

    2.本周的内容,你还不会什么?

    字符数组的定义方法还是有不清楚,考试的结果虽然及格了,但也是刚好在线上,看来之前的学习也不是掌握的很充分,对数组的使用也不是很熟练,做pta时明明很简单的题目,不熟悉使用所以做的很慢,所以慢慢掌握数组的使用,提高效率。

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/doimpossible/p/7885999.html
Copyright © 2020-2023  润新知