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

    一、PTA实验作业

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

    1. 本题PTA提交列表

    2. 设计思路

    • 定义变量n,s,i,j,n表示菱形长度
    • 输入n;s=n/2+1;
    • 上半部分菱形for(i=1;i<=s;i++) //从1到s行;
      for(j=0;j<s-i;j++) //第i行,输入的空格数与s和i的关系,注意每次输出两个空格;
      printf(" ");
      for(j=0;j<i2-1;j++) //输入星号与i的关系,格式为星号+空格
      printf("
      ");
    • 每次循环结束后换行;
    • 下半部分菱形for(i=1;i<=n/2;i++) //余下n/2行另外算
      for(j=0;j<i;j++)
      printf(" ");
      for(j=0;j<(n/2-i)2+1;j++)
      printf("
      ");

    3.代码截图

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

    • 提交列表显示格式错误和部分正确,在Dev c上运行,输出的菱形不对称;
    • 用#号代替空格观察菱形的格式,发现输出*号之前输出的空格数不对,在第s行开头应该没有空格输出,将j<=s-i和j<=i改为j<s-i和j<i
    • 发现输出*号前输出的空格数还是不对,少了一倍,所以将每次输出一个空格改为每次输出两个空格,得到正确结果

    题目2:7-7 发红包

    1. 本题PTA提交列表

    2. 设计思路

    • 定义数组a[7]={100,50,20,10,5,2,1}表示面值,数组b[7]={0}表示各面值的张数,定义变量money表示面值,定义i;
    • 输入money
    • for(i=0; i<7;i++) 此循环用于计算各面值的张数
      {
      b[i]=money/a[i]; 计算面值a[i]的张数,并记录在b[i]
      money-=a[i]*b[i]; 减去已取的金额,money为下一次循环的金额
      printf("%3d元:%3d张 ", a[i], b[i]);
      }

    3.代码截图

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

    • 一开始没有用数组进行编程,而是用了七个for语句,提交结果显示运行超时,Dev c上也运行不了;
    • 改用数组做,提交显示格式错误,编译器上运行结果排版错误,题目要求严格按个位对齐;
    • 将输出语句该为%3d,每个数值占三位,得到正确结果

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

    1. 本题PTA提交列表

    2. 设计思路

    • 定义变量char ch='0' ,int i,sum,flag=0,flag用于判断被除数为零和非法字符
    • 输入初始数值sum
    • 进入循环while(ch!='='){ 输入ch
      如果ch'=',循环结束;
      输入数值i;
      如果ch
      '+',sum=sum+i
      如果ch'-',sum=sum-i
      如果ch
      '',sum=sumi
      如果ch=='/',当i!=0时,sum=sum/i,否则flag=1
      否则flag=1
    • 如果flag=1,输出ERROR;否则输出sum

    3.代码截图

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

    • 提交多次部分正确,提示错误为非法字符的处理不正确,在Dev c上运行结果也不对;

    • 发现自己用的都是if语句,忽略了非法字符的判断,最后改用if , else if的结构,在判断完加减乘除的后面,用else判断非法字符,若为非法字符,flag=1
      得到正确答案;

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

    三、本周学习总结

    1.你学会了什么?

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

    • 定义数组:一般形式为 类型名 数组名 [数组长度]
    • 数组的初始化:类型名 数组名 [数组长度]={初值表},从下标为0开始逐一对应,静态数组没有初始化,所有元素均为0

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

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

    1.3 为什么用数组?

    • 数组是最基本的构造类型,它是一组相同类型数据的有序集合。在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标加以区分,它的有点是表达简洁,可读性好,便于使用循环结构

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

    • 选择排序法:1)输入n,数组a[n]
      2)for(k=0;k<n-1;k++){
      index=k; //index用于存放最小值所在下标
      for(i=k+1;i<n;i++) //寻找最小值所在下标
      if(a[i]<a[index]) index=i
      temp=a[index];a[index]=a[k];a[k]=temp; } //最小元素与下标为k的元素交换
      3)依次输出n个数组元素的值
    • 冒泡排序法:1)输入n,数组a[n]
      2)for (k=0; k< n-1; k++) {
      for (i=0; i<n-k-1; i++) { //比较相邻元素
      if a[i]>a[i+1]) { //如果前面大于后面,下标不变,交换元素的值
      temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;}}
      3)依次输出n个数组元素的值
    • 直接插入排序法:1)输入n,数组a[n]
      2)for (k=1; k< n; k++) {
      temp=a[k]; //用来临时保存将要进行插入操作的元素temp
      for (i=k-1; i>=0&&a[i]>temp; j--) { //寻找插入位置并移动元素
      a[i+1]=a[i];}
      a[i+1]=temp; } 将tmp插入到寻找到的位置i+1
      3)依次输出n个数组元素的值

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

    • 二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
    • 区别:顺序查找的特点就是从表的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败;而二分查找法是从中间开始查找,逐步缩小范围,对于大数据的处理比较适用,减少了循环次数,效率更高;

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

    • 二维数组的定义:类型名 数组名 [行长度] [列长度]
    • 初始化:分行赋初值:类型名 数组名 [行长度] [列长度]={ {初值表0},..... ,{初值表k},...... },把初值表k中的数值依次赋给第k行;
      顺序赋值法:类型名 数组名 [行长度] [列长度]={初值表},依次赋值;

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

    • 矩阵转置:for(i=0;i<n;i++)
      for(j=0;j<n;j++)
      if(i<=j){
      temp=a[i][j];a[i][j]=a[j][i];a[j][i];}
    • 下三角:i>=j 上三角:i<=j 对称:ij 或 i+jN-1

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

    • 有一系列元素时用一维数组,如果这些元素有一定的位置逻辑,如矩阵,就用二维数组

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

    • pta题目中第九题切分表达式——写个tokenizer吧还不会做,我的做法是首先用循环输入一个合法表达式,直到输入=,接着再用循环拆分表达式并输出,但是,在输出完数字之后怎么换行不会,所以每次输出完之后还会再输出一个字符,再换行,问题还没有解决;以下我的代码,望大佬帮忙
    • 还有这次期中测试,发现很多计算机基本理论和一些逻辑运算还不懂,尤其是位运算,与、或、异或等等;
    • 对二位数组的应用还不太了解,与循环结合常用于解决那些问题?
  • 相关阅读:
    php使用PHPMailer邮件类发送邮件
    apache一个IP一个端口对应多个域名
    网页宽度自动适应手机屏幕宽度的方法
    PHP抓取网页图片
    innodb存储引擎
    mysql存储引擎概述
    mysql事务
    mysql字符集
    mysql数据对象
    SQL-基础学习4--聚集函数:AVG(),COUNT(),MAX(),MIN(),SUM();聚集不同值:DISTINCT
  • 原文地址:https://www.cnblogs.com/mayifang/p/7891869.html
Copyright © 2011-2022 走看看