• c语言博客作业02循环结构


    1.本章学习总结(2分)

    1.1 思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1 学习体会

    本周主要学习循环结构和循环的嵌套,相比较上周的学习来说,这周的学习明显难度加大了很多,每一题的代码量也变多了。对于我来说,循环的两个题集中的每一题都值得我认真研究,理清思路,保证自己是真正明白了,理解了。使用循环的嵌套后,程序中的中括号就变多了,因此在打代码时要更注意格式,确保程序看起来整齐,可读性强。同时,题目难度的加大也要求我们不要一看到题目就开始写程序,应该先尝试理一理思路,写出伪代码,这样正式开始写的时候思路就不会乱。然后自己接下来的小目标就是在做题时提高效率,努力做到写的又快又规范。
    

    1.2.2 代码累计

    2. PTA总分

    2.1 截图PTA中循环结构2次题目集的排名得分


    2.2 我的总分:

    循环结构(单层):175
    循环的嵌套:115
    总分:290
    

    3.PTA实验作业(6分)

    3.1 PTA题目1

    输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu
    

    3.1.1 算法分析

    定义n,i,mask=1,copy//n存放输入的数,i存放每个位数上的数,
    输入n
    if(n<0)then 
    n=-n,printf("fu")//为负数的时候
    end if
    if(n>0)
    copy=n
    end if
    while(copy>9)do
    mask*=10
    copy/=10//while循环计算出位数,mask=10代表两位,100代表三位
    for(mask>0)
    i=n/mask;//算出每个位数上的数
    switch(i)
    case 0:printf("ling");break;
    case 1:printf("yi");break;
    case 2:printf("er");break;		
    case 3:printf("san");break;		
    case 4:printf("si");break;
    case 5:printf("wu");break;
    case 6:printf("liu");break;
    case 7:printf("qi");break;
    case 8:printf("ba");break;
    default:printf("jiu");	
    n=n%mask
    mask=mask/10//将每个位数上的数转为拼音
    if(mask>0)
    printf(" ")//每个数之间输出空格
    结束循环
    

    3.1.2 代码截图


    3.1.3 测试数据

    3.1.4 PTA提交列表及说明


    Q1:刚开始在输出的拼音前加空格,后来提交发现部分正确,当输入0时前面也会出现空格
    A1:后来取消了拼音前的空格,改为空格在每一次循环之后单独输出

    3.2 PTA题目2

    本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称
    

    3.2.1 算法分析

    定义num,i,j,k,mid  定义字符型变量ch
    输入ch num
    mid=num/2+1//mid为中间量,菱形关于mid对称
    i=1; 
    ch=ch-1;                 
    for i=1 to i=num do   //i代表行
    for j=1 to j=fabs(i-mid) do
    printf(" ");      //控制前面的空格 
    end for
    if(i<=mid)
    ch=ch+1;
    end if
    for k=1 to k=2*i-1 do    //上半部分 
    if(k==1||k==2*i-1)
    printf("%c",ch);   //控制输出字母的位置
    else  
    printf(" ");	//控制输出空格的位置
    end if
    else  //下半部分
    ch=ch-1;
    for k=1 k =2*(num-i+1)-1 do
    if(k==1||k==2*(num-i+1)-1)
    printf("%c",ch);     //控制输出字母的位置
    else
    printf(" ");     //控制输出空格的位置
    end if
    结束循环
    

    3.2.2 代码


    3.2.3 测试数据!

    3.2.4 PTA提交列表及说明


    Q1:首先打算将上半部分和下半部分一起完成但发现难度比较大
    A1:将上半部分和下半部分分开
    Q2:一不完成空格和菱形的输出难度比较大
    A2:先输出一个实心菱形,然后再挖空
    Q3:遇到输出的字母不对,题目要求先加后减
    A3:在没有进入循环之前将ch-1,然后在循环内在进行加减

    3.3 PTA题目3

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内
    

    3.3.1 算法分析

    定义count count_0定义字符型变量n
    while((n=getchar())!='.'){
    if (n!=' ') 
    if(count>0&&count_0>0) //当且仅当字母位数大于 0 
    printf("%d ",count);          且后方有空格时才输出带有空格的位数 
    count=0; 
    end if
    count++;
    count_0=0;  
    continue;   
    end if
    if (n==' ')
    count_0++;
    end if    
    if (count>0) // 输出最后一个单词的个数 
    printf("%d\n", count);
    else
    printf("\n"); // 处理只有一个 . 的情况  
    end if
    

    3.3.2 代码

    3.3.3 测试数据

    3.3.4 PTA提交列表及说明

    Q1:开始时忽略了最后一个单词,最后一个单词后面没有空格但是要输出单词个数
    A1:单独列了一种情况

    4.代码互评

    4.1 代码截图

    同学代码截图

    自己的代码截图

    4.2 二者的相同和不同

    相同点:

    • 都对输出图形进行了分类,将不同情况的分开考虑
    • 同时对于输出空格还是字母也进行了分类

    不同点:

    • 该同学先考虑了首行和末行的输出格式,我先考虑的时将输出图案分为上半部分和下半部分
    • 该同学在考虑空中间行的两个字母时,分为输出的第一个字母不换行,第二个字母换行,我是按照改行的与输出字母的列的关系来分析,符合关系的输出字母,不符合的输出空格。
  • 相关阅读:
    行定位符、单词定界符实例用法
    什么是正则表达式?
    PHP正则表达式语法汇总
    PDO中的存储过程的详细介绍
    PDO中的事务处理具体介绍
    PDO中错误处理的方法
    PDO中错误处理的方法
    使用默认模式-PDO::ERRMODE_SILENT
    PDO中执行SQL语句的三种方法
    使用默认模式-PDO::ERRMODE_SILENT
  • 原文地址:https://www.cnblogs.com/zyxaa/p/9866139.html
Copyright © 2020-2023  润新知