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

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

时间:2017-11-26 00:45:19      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:位运算   矩阵转置   类型   return   tps   结构   顺序   code   putchar   

一、PTA实验作业

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

1.本题PTA提交列表

技术分享图片

2.设计思路

{
    int n,j,i,k; 
    输入n;
    /*输出上半部分*/ 
    for (i=1;i<=n;i=i+2) { 输出上半个菱形 
        for(j=n-i;j>0;j--)每一行输出的空格比上一行少两个
            printf(" "); 
        for(k=i;k>0;k--)每一行输出的* 等于行数
            printf("* ") ;
        putchar(‘\n‘);换行 
    } 
    /*输出下半部分*/
    for(i=n-2;i>0;i=i-2) {  下半部分与上半部分相反
        for(j=n-i;j>0;j--) 输出的空格数
            printf(" "); 
        for(k=i;k>0;k--)每一行输出的* 等于行数
            printf("* ") ;
        putchar(‘\n‘);换行
    }
    return 0;
}

3.代码截图

技术分享图片

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

  • 碰到的问题:输出空格时判断条件写成(j=n-i+1;j>0;j--),导致多输出一个空格
    技术分享图片

  • 调试过程:输入3,输出空格后
    技术分享图片
    输出*
    技术分享图片
    换行后,发现又输出了空格,n=3时,第二行应该没有空格
    技术分享图片
    技术分享图片

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

1.本题PTA提交列表

技术分享图片

2.设计思路

{
    定义变量分别存放原来的数以及计算后的数,定义count=1表示计算的次数
    输入第一个数num1 
    储存num1,令num2=num1
    调用trap函数,传入num1并将返还值存于num1 
    if(num1==num2)
        输出printf("%d:%d",count,num1); 
    else{
        while(num1!=num2){
            储存num1的值,num2=num1;
            调用函数num1=trap(num1);
            输出printf("%d:%d",count,num1); 
            count++; 
        } 
        循环结束再输出一次 printf("%d:%d",count,num1);
    }
    结束 ;
} 
int trap(int n)     计算陷阱数函数
{
    int x,sum=0;
    while(x>0){
        取出最低位x=n%10;
        累加到 sum;
        去掉最低位 x/=10;
        }
    sum = 3*sum+1;
    返还函数值 ;
} 

3.代码截图

技术分享图片

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

  • 碰到的问题:最开始没有储存num1的值,调用函数后没有判断num1==num2,导致本来应该不进入循环,只输出一遍结果,而进入循环后输出一遍结果循环结束后有输出了一次结果
  • 调试过程:输入值为13
    技术分享图片
    函数结束后返还值为13,此时应该直接输出结果然后结束程序,但没有判断返还前后的值是否相等,导致进入while循环
    技术分享图片
    循环中输出一次结果
    技术分享图片
    循环结束后再出输出,共输出两次,但是要输出一次就够
    技术分享图片

PTA列表说明:主要情况就是上述问题

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

1.本题PTA提交列表

技术分享图片

2.设计思路

{
    定义变量 int num,sum;
    char op;
    输入第一个数字num和第一个运算符op;
    赋值sum=num;
    while op!=‘=‘{
         输入数字num;
        if (op==‘/‘&&num==0)||(op!=‘+‘&&op!=‘-‘&&op!=‘*‘&&op!=‘/‘&&op!=‘=‘){    //如果运算符为‘/’同时输入数为0或者运算符不为‘+’,‘-’,‘*’,‘/’
                输出Error;
                结束 return 0;
        }
        else{
            switch(op){        //判断运算符并进行相应运算
                case ‘+‘:sum+=num;break;
                case ‘-‘:sum-=num;break;
                case ‘/‘:sum/=num;break;
                case ‘*‘:sum*=num;break;
                }
            输入下一个运算符 op;
        }
    }
    输出结果sum;
    结束 return 0;
} 

3.代码截图

技术分享图片

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

  • 本题调试过程碰到的问题: (op==‘/‘&&num==0)的条件写成 (op=‘/‘&&num==0),少了一个等号导致判断条件错误
    技术分享图片

  • PTA提交列表说明
    PTA2分的提交列表是因为op==‘/‘中少了一个等号,16分是因为没有对分母为0以及非法运算符进行判断

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

技术分享图片

三、本周学习总结

1.你学会了什么?

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

定义 : 类型名 变量名 [数组长度]
初始化:

  • 定义时直接初始化,如:int n[1]={0};
  • 通过循环结构实现,如:

    int n[10];
    for(i=0;i<10;i++){
        scanf("%d",n[i]);
    }

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

技术分享图片

1.3 为什么用数组?

数组是把相同类型的一系列数据统一编制到某一个组别中,这样就可以通过数组名+索引号简单快捷的操作大量数据。

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

选择法:
技术分享图片

冒泡法:
技术分享图片

直接插入排序:
技术分享图片

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

二分查找法:取中间元素与查找元素进行比较,如果查找元素比中间元素大,则在中间元素右边查找,如果查找元素比中间元素小,则在中间元素的左边查找。
与顺序查找法的区别:二分查找法的效率更高

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

二维数组定义:类型名 变量名 [行长度] [列长度]
初始化:

  • 分行赋初值:
    一般形式为: 类型名 变量名 [行长度] [列长度]{{初值表0},...{初值表k},...}
    例如:int a[2][3] = {{1,2,3},{4,5.6}}

  • 顺序赋初值:
    一般形式为: 类型名 变量名 [行长度] [列长度]{ 初值表 }
    例如:int [2][3]{1,2,3,4,5,6}

技术分享图片

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

矩阵转置过程:对角线上元素不变,其余元素两个下标互换,如:n[0][1] 转置后变为 n[1][0]
下三角:i>=j
上三角:i<=j
对称矩阵:i=j

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

应用在数组为矩阵形式的时候

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

  • 对于本周数组的内容,定义函数时,对于数组的传参还不是很熟悉
  • 对于数据类型的位运算也还不太会
  • 本周PTA主要问题及错误点:7-8 判断合法标识符:对于本题我最开始的思路是循环输入一串字符,分开判断第一个字符以及之后每个字符,如果出现非法的字符就输出NO,但运行过程中发现这样输出No之后,如果字符还没输入完,后面剩余的字符就会被当做另一个新的字符串,导致答案错误;于是改变思路定义一个 flag=0,循环输入每一个字符,同样进行判断,出现非法字符就 flag=1,循环结束后再通过判断 flag 的值输出Yes或No。

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

标签:位运算   矩阵转置   类型   return   tps   结构   顺序   code   putchar   

原文地址:http://www.cnblogs.com/xzjj/p/7881776.html

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