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

    一.PTA实验作业

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

    1. 本题PTA提交列表

    2.设计思路

    定义变量N,i,g=1表示位数,a表示各位数字相加的和,b=0,j,N1,c,d用于储存N
     do{
          for(i=0;i<N1;i++){
          算出N的位数g 
    }
    for(j=g;j>0;j--){
         各位数字相加求和a
    	}
    N1=3*a+1;
    按格式输出printf("%d:%d",b,N1);其中b由1开始增加
    直到N1等于N结束循环
    
    

    3.代码截图

    4.本题调试过程中碰到的问题以及解决方案

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

    1. 本题PTA提交列表

    2.设计思路

    int n,a,i,l,j,k,g,h,count=0,count1=0;
    输入n
    if((n-1)%2==0)则继续
    由规律可以看出,
    上半部分(大三角型)有 (n+1)/2行 
    for(i=(n+1)/2;i>0;i--){
    行数count加1
    输入*的数量=2*count-1
    for(j=2*count-1;j>0;j--)
    在输入完每一行的*后输出换行
    
    for(k=(n-1)/2;k>0;k--){
    下半部分有 (n-1)/2行
    思路同上
    

    3.代码截图

    4.本题调试过程中碰到的问题以及解决方案

    • 1.思路错误:漏掉了空格的步骤
    • .解决方案:如上代码。根据空格数与行数的规律输出空格
    • 2.部分正确:if((n-1)%2==0)在判断奇数时,求余写成除法
      .
    • 解决方案:改为求余的%

    题目3:7-8 判断合法标识符

    1. 本题PTA提交列表

    2.设计思路

    定义一个数组 line[80],整型n(表示做n次下列运算 ) 
    输入n
    令j=1,k=0
    给数组赋值直到line[k]='
    ',期间k++
    判断第一个字符是否为下标号和字母,如果是则进行下面,不是则输出NO
    k=1
    从line[1]开始判断每个字符是否是下标号或字母或数字
    k++;
    continue;跳过后面语句
    直到line[k]!=''
    若有不是的
    printf(NO,换行)
    break;
    若每个都是,即line[k]==0
    printf(合格,换行) 
    
    j++,再次赋值数组 
    直到j=n
    
    

    3.代码截图

    4.本题调试过程中碰到的问题以及解决方案

    1.对数组赋值后进行判断时line[k]=0

    2.错误:进行判断的下标符输入错误
    解决方案:从题目复制

    3.错误:判断错误后没有结束循环导致输出两个结果
    解决方案:加break;

    二.截图本周题目集的PTA提交列表及最后排名

    三、本周学习总结(3分)

    1.你学会了什么?

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

    类型名 数组名 [数组长度];
    如:int a[10];
    

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

    • 一维数组再内存中结构是连续的,线性的;

    • 数组名指定数组内每个元素的类型

    1.3 为什么用数组?

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

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

    1.选择法

    • 考虑n个数的数组A:首先找出A中的最小元素并将其与A[0]中的元素进行交换,然后找出A中次最小元素并将其与A[1]中的元素进行交换,对A中的前n-1个元素进行该操作。
    定义数组a[具体数n]={数组赋值}
    定义i,j,temp;
    int b=n;
    for(i=0;i<n-1;i++) 
    {
    	for(j=i+1;j<b;j++)
    	{
    		如果a[i]>a[j]{ 
    		把两个记录的相反次序进行交换
    		} 
    	}
    }
    for(i=0;i<n;i++){
      printf("%d",a[i]);
    } 
     
    

    2.冒泡法

    • 冒泡排序法:即两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
    定义i=0,j,t; 
        for(i=0;i<len;i++)
        {
            for(j=0;j<len-i-1;j++)
            {
                if(a[j]>a[j+1])
                {
                   将a[j]和a[j+1]交换 
                }
            }
        }
        按顺序输出数组 
    }
     
    

    3.直接插入排序

    • 指每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。具体方法是第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程

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

    • 二分查找法就是先寻找数组中间位置的数,判断其是否为要寻找的数,不是的话,大于要找的数,则往左继续二分,小于要找的数,则往右二分。
    • 二分查找法适用于排序过的数组,速度快,顺序查找法要遍历数组,在数组很大时效率低,但对数组本身没有要求,适用于短数组

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

    • 二维数组定义格式为 类型名 数组名 [行长度][列长度]
    • 初始化格式为类型名 数组名 [行长度][列长度] = { {初值表0}, ... ,{初值表k}, ...} 如果初始化了全部行,则可以忽略行长度

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

    
    #include<stdio.h> 
    int main(void) {  
       int n1,m1,n2,m2,i,j;  
        printf("输入一个矩阵的行和列:");  
        scanf("%d%d",&n1,&m1);   
        m2=n1;  n2=m1;            /*将行和列交换定义*/  
        int a1[n1][m1],a2[n2][m2];     
        printf("输入%d*%d的矩阵
    ",n1,m1); 
       for(i=0;i<n1;i++)  
         for(j=0;j<m1;j++)     
      scanf("%d",&a1[i][j]);        
       for(i=0;i<n1;i++)   
        for(j=0;j<m1;j++)   
        a2[j][i]=a1[i][j];     
      for(i=0;i<n2;i++) 
      {  
         for(j=0;j<m2;j++)    
        printf("%d  ",a2[i][j]);    
        printf("
    ");  
     }     
      return 0; 
    }
    
    

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

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

    当数组中的数表示的不止一种含义时,比如我们要表示不同的人不同科目的成绩时,这里有两个变量,不同的人和不同科目,所以要用二维矩阵,在或者是矩阵时,就要用到二维数组

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

    • (1)对直接插入排序不是很理解
    • (2)其他的还没有遇到
  • 相关阅读:
    对 Sea.js 进行配置 seajs.config
    jquery 设置style:display
    Js获取当前日期时间及其它操作
    2.4 js数组与字符串的转换 > 我的程序猿之路:第十四章
    2.3 js刷新页面所有 > 我的程序猿之路:第十三章
    2.2 HTML/JSP中控制按钮的显示和隐藏与单页面多列表 > 我的程序猿之路:第十二章
    2.1 字符串替换字符或字符设置为空 > 我的程序猿之路:第十一章
    1.9 23种设计模式之单例模式详情 > 我的程序猿之路:第九章
    1.8 Oracle 登陆时报错信息:无监听程序 > 我的程序猿之路:第八章
    1.7 Oracle 11g )impdp(数据泵)--导入dmp文件(全过程) > 我的程序猿之路:第七章
  • 原文地址:https://www.cnblogs.com/Zeng99/p/7899711.html
Copyright © 2011-2022 走看看