zoukankan      html  css  js  c++  java
  • C语言I博客作业10

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 C语言I作业10
    我在这个课程的目标是 熟练的使用C语言
    这个作业在那个具体方面帮助我实现目标 写PTA作业并掌握好循环结构
    参考文献 百度文库

    一.PTA实验作业

    1.输出三角形字符阵列
    题目内容描述:本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
    输入格式:
    输入在一行中给出一个正整数n(1≤n<7)。
    输出格式:
    输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
    输入样例:
    4
    输出样例:
    A B C D
    E F G
    H I
    J
    1.1.1数据处理
    1.定义了整形变量i,n,j,其中i,j用于控制循环,而n为行数。
    2.定义了字符变量ch。
    数据处理:

    伪代码

        #include<stdio.h>
        int main()
        {
    int i, n, j;                         //定义了整形变量i,n,j
    char ch;
    scanf("%d", &n);
    ch = 'A';                            //将'A'的值赋给ch
    
    for (i = 1; i <= n; i++)     //确定第几行
    {
        for (j = i; j <= n; j++)//确定这一行中输出几个字符
        {
    printf("%c ", ch);//输出字符ch
    ch++;            //ch自增
    }
    printf("
    ");      //输出换行
    }
    return 0;
        }
    

    1.1.2实验代码截图


    1.1.3 造测试数据

    输入数据 输出数据 说明
    1 A 输出1行由大写字母A开始构成的三角形字符阵列
    4 A B C D E F GH I J 输出4行由大写字母A开始构成的三角形字符阵列
    5 A B C D E F G H I J K L M N O 输出5行由大写字母A开始构成的三角形字符阵列

    1.1.4 PTA提交列表及说明

    提交列表说明:
    1.把&给打成8了。
    2.%c后面忘记打空格了。

    1.2 梅森数

    形如2n−1的素数称为梅森数(Mersenne Number)。例如2​2−1=3、2​3−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2​31−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
    本题要求编写程序,对任一正整数n(n<20),输出所有不超过2​n−1的梅森数。
    输入格式:
    输入在一行中给出正整数n(n<20)。
    输出格式:
    按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。

    输入样例:
    6
    输出样例:
    3
    7
    31

    1.2.1数据处理

    数据表达:定义整型变量b,c,flag,n,i;其中flag是表示判断的变量,当做标志,来判断梅森数,n为输入的数,c为输出的梅森数,b,i用来控制循环。
    数据处理:伪代码

        #include<stdio.h>                                                                                                
        #include<math.h>                                                                                                 
        int main()                                                                                                       
        {                                                                                                                
        int b, c = 0, flag = 0, n, i;               //定义整形变量b,c,flag,n,i;                                   
    scanf("%d", &n);                                                                                             
    if (n == 1)                               //当n=1时                                                           
    printf("None");                         //输出"None"                                                               
    for (b = 2; b <= n; b++)               //从2^2-1开始                                                             
    {                                                                                                            
    c = pow(2, b) - 1;                  //c=2^b-1                                                             
    for (i = 2; i < c; i++)            //判断是否为素数                                                     
    {                                                                                                        
    if (c % i == 0)                  //取余为0,可整除                                                
    {                                                                                                    
    flag = 1;                                                                                        
    break;                        //跳出循环                                                   
        }                                                                                                    
    }                                                                                                        
        if (flag == 0)              //如果flag=0,则代表i没有被2至i-1之间的任意数整除,即i为素数. 
    printf("%d
    ", c);         //输出c                                                   
    flag = 0;                                                                                                
    }                                                                                                            
    return 0;                                                                                                    
        }                                   
    

    1.2.2实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    3 3 7 在这个范围内总共有2个梅森数
    8 3 7 31 127 在这个范围内总共有4个梅森数
    6 3 7 31 在这个范围内总共有3个梅森数

    1.2.4 PTA提交列表及说明

    编译错误:“==”成了“=”。
    1.3同构数
    一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
    输出格式:
    在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
    输出样例:
    1 5 6 25 76 376 625

    1.3.1数据处理

    数据表达:定义整型变量i,判断i为输入的数。
    数据处理:伪代码

        #include <stdio.h>                           
        int main()
    {
    int i;                                                                 // 定义整形变量i,i为输入的数                                     
    for (i = 1; i < 1000; i++)                                    // 1~1000之间的同构数 
    if (i < 10 && i * i % 10 == i)                                       //处理10以下的数
    printf("%6d", i);                                                   //输出i
    else if (i >= 10 && i < 100 && i * i % 100 == i)                   //处理100以下的数
    printf("%6d", i);                                             //输出i
    else if (i * i % 1000 == i)                                  //处理1000以下的数
    printf("%6d", i);                                           //输出i
    printf("
    ");                                              //输出换行
    return 0;
    }                                                   
    

    1.3.2实验代码截图

    1.3.3 造测试数据

    输入数据 输出数据 说明
    1 5 6 25 76 376 625 1~1000内的所有同构数。

    1.3.4 PTA提交列表及说明


    提交列表说明:
    1.编译错误:刚开始时把&&写的是||
    2.编译错误:输出没有写成%6d

    二.代码互评

    同学代码:

    自己代码截图

    1.他是用的for循环来递减的,而我是用for循环来递增的。
    2.我是一开始直接定义整形变量的,而他则是在for循环里面声明整形变量的。他的声明周期就是for循环内部,每次进入都是新的变量,占用栈上空间,在for里面定义的局部变量只有在for语句块里是有效的可见的而已,到外面就撤销了、不存在了。
    同学代码:

    自己代码截图

    1.我是用多分支结构else-if语句来处理1~1000内的所有同构数,他是自定义函数求平方,他用for来计算求余除的数,但都是用的计算位数的方法求余,
    2.我是直接定义整形变量,为全局变量,而他在for循环语句中定义了局部变量

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第四周 10 140 如何用 MinGW-w64 来编译C程序
    第五周 20 160 学会了输入
    第六周 8 220 学会了if-else
    第七周 16 378 运用if,else语句
    第八周 20 341 运用for循环语句 对for的用法还不怎么会
    第九周 21 345 学习了如何使用自定义函数 自定义函数还不太会
    第十周 23 425 熟悉并掌握多分支结构、字符型数据类型和逻辑运算符结构
    第十一周 20 456 熟悉并掌握分支结构switch语句
    第十二周 25 430 学会使用while和do-while结构解决问题 各个运算符的意思还不太理解
    第十三周 27 340 嵌套循环,一.二维数组 多层嵌套还不太熟练
    第十四周 34 530 学习了指针和一维字符数组 有了一个初步的了解,但指针还不太会使用

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会
    这周的作业我感觉难度越来越高,比上周难多了,第一题就搞了好久的时间,这周我学习了一维字符数组,其实这和一维数组差不多,但还是有所不同,我也学习了指针变量,即类型名指针变量名1,指针变量名2,... *指针变量名n ;基本的怎样定义也知道了,但实际应用还不太行,不过我学到的指针好像是搞游戏外挂的基本原理,还有乱用会造成系统崩溃,下周得继续学习指针的实际应用,加油!

  • 相关阅读:
    HDU 5542 The Battle of Chibi (离散化+树状数组优化DP)
    UVaLive 7637 Balanced String (构造)
    ZOJ 3512 Financial Fraud (左偏树)
    HDU 1512 Monkey King (左偏树+并查集)
    POJ 2311 Cutting Game (博弈)
    POJ 2348 Euclid's Game (博弈)
    Gym 101142C CodeCoder vs TopForces (搜索)
    Gym
    Spring注解
    sql语句中的占位符?有什么作用
  • 原文地址:https://www.cnblogs.com/1bing/p/11945650.html
Copyright © 2011-2022 走看看