zoukankan      html  css  js  c++  java
  • C语言作业数据类型

    一、PTA实验作业

    题目1:7-4 打印菱形图案

    1. 本题PTA提交列表

    2. 设计思路

    定义整型变量 n,i,space,m,q,其中n表示行数,space表示空格
    输入一个奇数n
        菱形上半部分
    	space=1 
               满足space<=(n+1)/2-i
               space递增,实现循环输出空格
               m=1
               满足m<=2*i-1
               m递增,实现循环输出星号后跟空格	
         循环结束后换行
    
          菱形下半部分
        space=1
           满足space<=i-(n+1)/2
            space递增,循环输出空格
          q=1
           满足q<=2*n-2*i+1
           q递增,实现循环输出星号后跟空格
               循环结束后换行
    
                i递增,直到不满足i<=n
               return 0;
    

    3.代码截图

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

    主要就格式问题,明明不管怎么输都是正确的图案,提交一直显示是格式错误。。。包括换行,包括空格都有考虑进去,但是图案是越改越离奇。就从代码开始分析,发现利用if语句判断后实现循环结束换行完全是多余的,转换成循环体外加一个输出换行就可以实现我们想要的效果了。删掉后,提交显示正确。

    题目2:7-6 掉入陷阱的数字

    1.本题PTA提交列表

    2.设计思路

    函数声明int fun(int a);
    int i,N0,其中N0表示第一个数
    输入N0
    int a[3000];
    把N0的值赋给a数组第一个元素
    调用函数计算 fun(N0),并将它赋值给a[i]
    i=2;
    满足要求a[i-1]!=a[i-2],输出行数i-1和a[i=1]
    不满足条件,执行a[i]=fun(a[i-1]),i递增

    函数int fun(int a)
    定义变量ones表示末尾数字,sum表示各数字和,result表示计算结果
    sum=0;
    当a不等于0时
    计算末尾数字ones=a%10;
    去除末尾数字a=a/10;
    各数字和sum=sum+ones;
    计算结果result=sum*3+1;
    返回计算结果result

    3.代码截图

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

    这一题没遇到什么问题,主要就是利用了刚学的数组,不太熟悉,就写下怎么写的吧
    这一题阅读完题目后发现下标很重要,而数组特别适合用来表示下标,于是选择了数组。另外计算result的过程有多次,选择利用函数,这样通过引用函数来进行计算代码比较清晰

    题目3:7-10 简单计算器

    1.本题PTA提交列表

    2.设计思路

    定义俩个整型变量 m,n;
    定义整型变量 result表示是计算结果
    定义字符型变量op
    scanf("%d",&m);
    result=m;
    读入的字符不是等号时
    	scanf("%d",&n);
    	    如果字符为 '+':result=m+n;跳出循环
    	     如果字符为'-':result=m-n;跳出循环
    	     如果字符为 '*':result=m*n;跳出循环
    	     如果字符为 '/':
    			如果n不为0
    		        计算result=m/n;
    			如果n为0,输出ERROR,程序结束
    	     如果字符不是加减乘除 printf("ERROR"),程序结束
    	               m=result
                           输出result
                               程序结束
    

    3.代码截图

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

    问题:没有判断输入m后输入的字符是= 这种情况

    解决办法:增加if语句,判断输入字符是=,但是运行发现这个问题是解决了,但是正常输入,结果都是ERROR,经过调试发现直接跳到default这个分支,输出ERROR.。可以将m赋值给result,就可以实现输出类似1=1这种情况

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

    三、本周学习总结

    1.你学会了什么?

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

    一维数组定义一般形式: 类型名 数组名 [数组长度] 如 int a[10]
    (1)类型名指定数组中每个元素的类型
    (2)数组名是数组变量的名称,是一个合法的标识符
    (3)数组长度是一个整型常量表达式,设定数组大小

    初始化
    数组中有若干元素,可以在{}中给出各数组初值,各初值之间用逗号隔开,把{}中初值依次赋值给各元素
    注意:初始化的数据个数不能超过数组元素的个数,否则出错,如 int a[4]={1,2,3,4,5}是错的

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

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

    1.3 为什么用数组?

    在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分。表达简洁,可读性好,便于使用循环结构

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

    (1)选择法排序

    定义整型变量i,index,k,n,temp,index存放最小值所在的下标
    定义数组a[10]
    输入n
    i=0
    当i<n时,输入数, i递增
    将输入的数依次赋给数组a的n个元素
    k=0;k<n-1,用index来存放最小值所在下标
    判断数组a中元素与a[index]大小
    如果a[i]<a[index],index=i,最小元素与下标为k的元素交换
    temp=a[index];
    a[index]=a[k];
    a[k]=temp;
    输出排好后的n 个数组元素的值

    (2)冒泡法排序
    定义数组a[n]
    定义整型变量i,j,temp,n
    i=0
    满足i<=n-1时
    输入数
    i++
    将这组数据依次赋值给a[n]
    判断相邻俩个数据,如果a[j]>a[j+1]
    temp=a[j]
    a[j]=a[j+1]
    a[j+1]=temp
    像这样的过程要重复n=q-i次
    循环结束后输出新数组

    (3)直接插入法排序
    定义数组a[n]
    定义整型变量i,j,k,temp
    i=0;
    满足i<=n-1时
    输入数
    i=0;
    temp表示最小值的角标
    判断数据a[j]和temp的大小
    如果temp<a[j],a[j]=temp
    通过a[k+1]=a[k]实现插入位置后的数据整体往右挪
    重复n -1次,输出新数组

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

    对一组有序的数字中进行查找,传递相应的数据,比较与元数据相同的数据,查找到后返回对应数组下标

    区别:顺序查找的特点是从第一个元素开始一个一个往下查找,如果和目标一致的元素,则查找成功,如果到最后一个元素仍没有目标元素,则查找失败。而二分查找就是从表的中间查找目标元素,如果找到一致元素,这查找成功,如果中间元素比目标元素小,仍用二分查找表的后半部分,反之,中间元素比目标元素大,则查找表的前半部分。

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

    二维数组定义形式:类型名 数组名 [行长度][列长度]

    初始化:
    (1)分行赋初值
    一般形式:类型名 数组名 [行长度][列长度]={{初值表0},...,{{初值表k},...}
    把初值表中的K中所有数据依次赋给第k行的元素

    (2)顺序赋值法
    一般形式:类型名 数组名 [行长度][列长度] = {初值表}
    根据数组元素在内存中的存放顺序,把初值表中的数据依次赋给元素

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

    行下标与列下标互换。 下三角:i<=j 上三角:i>=j 对称矩阵: a[i][j]=a[j][i]

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

    (1)矩阵的转置
    (2)求最大元素值及其行列号

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

    开始接触伪代码,明白代码意思,但是不熟悉伪代码要如何表达,写的很混乱,尤其是像冒泡,插入,顺序排序这种,看上面的就知道是个什么状态了

  • 相关阅读:
    poj2886 Who Gets the Most Candies?
    poj1201 Intervals
    poj3109 Inner Vertices
    poj1990 MooFest
    poj3368 Frequent values
    NOIP练习赛题目6
    NOIP练习赛题目5
    NOIP练习赛题目4
    NOIP练习赛题目3
    NOIP练习赛题目2
  • 原文地址:https://www.cnblogs.com/tajiyu/p/7895317.html
Copyright © 2011-2022 走看看