zoukankan      html  css  js  c++  java
  • 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时明明很简单的题目,不熟悉使用所以做的很慢,所以慢慢掌握数组的使用,提高效率。

  • 相关阅读:
    Oracle数据库中。varchar 和 varchar2的区别
    gvim 编辑器初学
    鼠标事件以及clientX、offsetX、screenX、pageX、x的区别
    清除浮动的5种方法
    按钮的单双击事件
    webstrom中的快捷键
    限制 input 输入框只能输入纯数字
    控制<标签>不可被点击
    way.js
    ECharts 折线图and柱状图
  • 原文地址:https://www.cnblogs.com/doimpossible/p/7885999.html
Copyright © 2011-2022 走看看