码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-11-27 00:05:10      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:1.3   查找   ber   思路   1.7   学习   简洁   作业   error   

7-4 打印菱形图案

1. 本题PTA提交列表(要提交列表,不是结果)

技术分享图片

技术分享图片

2. 设计思路(用代码表示扣分)

  • 定义循环变量i,j,k,n,打印行数number,
    输入要打印的行数number
    for(i=1;i<=循环条件;i++)用于控制输出的行数
    for(j=1;j<=循环条件;j++)用于控制输出空格数
    先输出上半个菱形,输出(number+1)/2行
    输出每行前的空格个数,再输出 ,换行。
    输出下半个菱形
    for(i=1;i<=循环条件;i++)
    for(j=1;j<=循环条件;j++)
    输出((number+1)/2-1))行, 输出每行前的空格个数,再输出

    3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

  • 这是之前的错误代码
    技术分享图片

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

  • 1.一开始输出的上三角与输入的数字number一样多,不符合题目要求。
    技术分享图片

  • 解决办法:这个问题,,,用两个数字运行了两遍以后就发现是我的循环条件有错,我有试着找他们的规律,可是我找到的规律不具有普遍性,所以前面输出的空格个数用小数据测试还对,用大数据测试因为前面空格不够就都挤到后面,整个无法构成菱形,最后实在找不出来就求助了同学。
  • 2.本来我的设计思路是先输出上半个菱形后再输出下半个菱形,可是我,,,,,,又找不出循环条件。
  • 解决办法:这样的循环条件对我来说太难找了,所以室友建议我换个思路,在一开始就用条件来限制,当i小于(number+1)/2时进入第一个循环输出上三角,否则输出下三角。

7-6 掉入陷阱的数字

1. 本题PTA提交列表(要提交列表,不是结果)

技术分享图片

2. 设计思路(用代码表示扣分)

  • 定义输入的数字number,sum存放经过计算后的和,flag用于存放上一个产生的新数,digit用于存放取余得到的数,循环变量i,j。
    for(i=1;i>0;i++){
    将number的值赋给flag
    for(j=1;j>0;j++){
    对number取余,取出number的每一位数后进行运算sum=sum+digit;sum=sum*3+1;
    输出i:sum的值。
    将sum的值赋给number,将sum再次赋值为0。
    进行判断 if(flag==number)及当前运算所得数与上一个数相等时退出循环。}

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

技术分享图片

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

  • 1这题一开始将输入数字是个位数还是更多位数进行分开讨论导致代码十分长。
  • 解决办法:就是觉得代码怪怪的,就调试当中突然想到这两种情况能不能放在一起做,一开始我分成了两组来讨论一组一个循环,后来我直接将判断个位数那个循环删掉发现不可以做,后来换成嵌套循环就好了。
  • 2.当数字已经掉入陷阱,程序却无法退出循环。
    技术分享图片

  • 解决办法:一开始我本来想用数组来存放上一次产生的新数,可是我数组还不够熟练老是调不出来,后来同学建议在增加一个变量来存放上一次产生的数字,就可以正常退出循环了。

7-10 简单计算器

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(用代码表示扣分)

  • 定义两个变量value1,value2表示输入的操作数,定义ch为输入运算符。
    输入value1输入一个运算符op
    do{
    输入另一个操作数
    switch(ch){
    case ‘+‘: value1=value1+value2
    case ‘-‘: value1=value1-value2;
    case ‘‘:value1=value1value2;
    case ‘/‘: value1=value1*1.0/value2;
    如果value2==0输出ERROR
    default: printf("ERROR")}while(ch!=‘=‘)
    输出value1的值

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

  • 1.我一开始用了另一个变量result来存放value1和value2的运算结果,输出时就连1+2=都不对。
  • 解决办法:再次检查代码发现我的操作数和运算符是分开输入的,那么我的前两个运算数所得的结果应该也要参加下一次运算,可是我的程序没有做到这一点,所以我就放弃了result改用value来存放两个运算数的运算成果。
  • 2.除法分母为0或有非法运算符时我的程序就不正确了。
  • 解决办法:

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

技术分享图片

三、本周学习总结

1.你学会了什么?

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

  • 数组定义形式一般为 类型名 数组名[数组长度],初始化形式一般为 类型名 数组名[数组长度]={初值表},初始化可以只针对部分元素,没有初始化系统默认初始值为0

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

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

    1.3 为什么用数组?

  • 数组可以定义一些具有相同类型的变量并存放他们的值,运用数组可以使表达更简洁,可读性好,便于运用于循环结构。

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

  • 选择法:定义输入数字个数number,i,j,中间变量temp,最小值下标min.定义数组a[i]
    for(i=1;i<=number;i++){
    min=i;min用于存放最小值所在下标
    for(j=1;j<=i;j++){
    如果a[i]<a[min] 将a[i]与a[min]中的元素进行交换
    输出数组中的元素。
  • 冒泡法:定义输入的数字个数number,i,j,中间变量temp,数组a[i]
    for(int i=0;i<;i++){
         for (int j = array.length - 1; j > i; j--) {
    如果a[i]<a[i-1] 交换a[i]和a[i-1]中的元素
  • 直接插入排序:定义输入的数字个数number,i,中间变量temp,数组a[i]
    for(int i =1;i<number;i++){
    temp=a[i];
    while(temp<a[i+1]){
    判断a[i+1]与a[i+2]是否相等,不相等时结束循环}
    temp+a[ia=2];
    输出temp.

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

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

  • 二维数组的定义形式为 类型名 数组名[行长度] [列长度]。 初始化形式: 类型名 数组名[行长度] [列长度]={{初值表0}‘‘‘{初值表k},‘‘‘};

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

  • 转置时需设置一个中间变量x,x=a[i][j],a[i][j]=a[j][i];a[j][i]=temp。

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

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

  • 对于三种排序方法到底是怎么运用的还是一知半解,

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

标签:1.3   查找   ber   思路   1.7   学习   简洁   作业   error   

原文地址:http://www.cnblogs.com/1795759388-/p/7880622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!