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


    一、PTA实验作业

    题目1:7-2 区位码输入法

    1. 本题PTA提交列表

    2. 设计思路

    {
    定义字符型变量 ch1,ch2,ch3,ch4;
    定义整数型变量 a,b;
    ch1=getchar(); //输入值
    ch2=getchar();
    ch3=getchar();
    ch4=getchar();
    a=10(ch1-48)+ch2-48+160; //运算结果
    b=10
    (ch3-48)+ch4-48+160;
    putchar(a);
    putchar(b);
    }

    3.代码截图

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

    问题1:刚开始只是用两个ch,有结果但是结果与答案不一样
    解决方法:在ch1,ch2后面加上printf,发现输出结果为‘1’,‘6’,就明白了没有‘大于10的字符’。

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

    1. 本题PTA提交列表

    2. 设计思路

    定义变量repeat(输入几位数字),count,count1(用于判断结果),n(判断结果),i(用于循环),ch                     
         输入repeat
    for(i=1;i<=repeat;i++){   //循环
    	n等于0;
    	count1等于0;
    	count等于0;
    如果((ch=getchar())!='
    '){    //输入字符
    		count1++;     //输入字符的数量
    		如果((n==0)&&(((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))||(ch>='0'&&ch<='9')))  //判断字符是否满足开头的要求
    		count++;
    		如果(n==1&&(((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))||(ch=='_'||(ch>='0'&&ch<='9'))))  //判断字符是否满足后面的要求
    		count++;
    		n=1;   
    		
    	}
    

    end
    如果(总量count=等于count1) //输出结果
    输出("Yes ");
    else
    输出("No ");

    3.代码截图

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

    问题一:写出代码,感觉没错,在dev上无结果
    解决方法:在代码一个个切割开来,判断哪个地方与结果不服,结果是ch=getchar()!=' '中ch=getchar()还要加括号

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

    1. 本题PTA提交列表

    2. 设计思路

     定义变量n,m,sum,count=0, op;
    输入n;
    sum=n;
    for(;;){
    	输入op)
         如果是等号,结束循环 
                 输入m
    	如果是+,运行下列式子,依次如下
    	sum=sum+m;
    	如果是-
    	sum=sum-m;
    	如果是*
    	sum=sum*m;
    	如果是-
    	if(m!=0)  //限制分母是0
    	sum=sum/m;
    	else
    	count++;
    } 
    else
    count++;//一些不符合要求的加1
    }
    如果(count>0)
    输出ERROR
    else
    输出sum;
    

    3.代码截图

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

    本题没有问题

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

    三、本周学习总结

    1.你学会了什么?

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

    一维数组定义要有类型名,数组名[数组长度]
    初始化可以用static

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

    在内存中分配了一段连续的存储单元,并对这些单元进行编号 ,详细请见C语言课本150页右上角
    数组名字是数组首地址

    1.3 为什么用数组?

    在特定的题目下需要重复使用一些先前的数据,所以用数组,还有一些题目用数组可以大大提高编程效率

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

    选择法

    定义 a[10],i,j,k,t,n=10;
    for(i=0;i<10;i++)
    输入 a[i]
    for(i=0;i<n-1;i++) //外循环控制,n个数选n-1次{
    k=i; /假设当前的第一个数为最值,记在k中 /
    for(j=i+1;j<n;j++) /
    从下一个数到最后一个数之间找最值
    /
    如果(a[k]<a[j]) /*如果满足条件

        k=j;         /*则将其下标记在k中*/ 
    在转换数值大小
    

    for(i=0;i<10;i++)
    输出a[i])

    冒泡法

    定义 a[10],i,j,t;
    for(i=0;i<10;i++)//输入10个值
    输出a[i]
    for(j=0;j<9;j++) /外循环控制排序次数,n个数排n-1次/
    for(i=0;i<9-j;i++) //内循环用于第j次比较n-j次
    if(a[i]>a[i+1]) /满足条件逆序则交换*
    { t=a[i];
    a[i]=a[i+1]; //转换数值
    a[i+1]=t;
    }
    for(i=0;i<10;i++) //依次输出结果
    printf("%d ",a[i]);

    直接插入排序

    定义 a[10],i,j,t;
    for(i=0;i<10;i++)
    输入a[i])
    for(i=1;i<10;i++) /外循环控制次数,n个数从第2个数开始到最后共进行n-1次插入/
    {
    t=a[i]; /将待插入数存储于变量t中/
    for( j=i-1 ; j>=0 && t>a[j] ; j-- ) /在有序序列(下标0 ~ i-1)中寻找插入位置/
    a[j+1]等于a[j]; /如果没有找到插入位置,则将元素后移一个位置/
    a[j+1]等于t; /找到插入位置,插入/
    }
    for(i=0;i<10;i++)
    输出a[i])

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

    就是取中间大小的数字与要找的数字进行比较,如果待查数字大于中间数字,把中间数字与大数字的中间数字
    在进行比较依次直到找到或者找不到为止。
    区别是2分查找法的效率高,顺序查找法效率低

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

    类型名 数组名[行长度][列长度]
    用static初始化比较简单,只要加上{0}

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

    定义一个2维矩阵inta[3]3
    123
    456
    789
    for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    如果i大于等于j
    a[i][j]等于a[j][i] //交换数组大小
    j=i=j^=i //行列交换
    输出结果
    147
    258
    369

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

    矩阵和一些用2维数组可以大大增加代码效率的编程

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


    1.对于这种题目还是没有思路,遇到复杂的代码,基本看不出它在做什么
    2.个人感觉数组的定义不是很难,难的是巧妙的应用它,对于冒泡法感觉不是很熟悉,对于行列互换掌握的不是很好
    3.对于字符的优先级没有搞清楚。

  • 相关阅读:
    将Color的格式转变成颜色值
    F# 学习笔记 1 基础学习
    GridView 72般绝技
    前台直接读取Web.config中的值的方法
    根据属性名称 获取对象的属性值
    字符集与字符编码简介(转)
    一个WinForm程序配置信息的简单模型和维护工具——设计说明
    扩展DLL调用扩展DLL的LINK2001错误的解决办法之一
    CProfile : 读写私有INI配置文件
    日记:如何在MFC中使用Winsock2
  • 原文地址:https://www.cnblogs.com/guobaoqing/p/7892573.html
Copyright © 2020-2023  润新知