C语言第四次博客作业--嵌套循环

一、PTA实验作业

7-3 编程打印空心字符菱形

1.本题PTA实验结果

1232087-20171110185350419-1480655742.png

2. 设计思路

  • (1)定义三个整型变量n,i,j,n代表菱形高度,i和j都为循环变量。定义一个字符型变量c代表起始字母。
  • (2)输入起始字母c,菱形高度n。
  • (3)若(c=>'A'&&c<='G')&&(n<=10&&n%2!=0)),则正常执行下一条语句;若为非法输入,则不输出。
  • (4)先对菱形的上半部分即(n+1)/2部分进行循环。
  • (5)i=1。
  • (6)j=0。
  • (7)输出空格。
  • (8)j++,重复步骤7,直到j>=n-i-(n-1)/2,则结束循环。
  • (9)输出字符c+i-1。
  • (10)若i-1>0,则再输出字符c+i-1。
  • (11)输出换行符。
  • (12)i++,重复步骤6,直到i>(n+1)/2,则结束循环。
  • (13)对菱形的下半部分进行循环。
  • (14)i=(n+1)/2-1。
  • (15)由于对称,所以输出的格式同上半部分,不同的是此时进行i--,直到i<=0,结束循环。

3.本题调试过程碰到问题及解决办法

  • (1)总的就是没观察好整个格式输出的规律,设置的几个判断函数不能完全符合。
    1232087-20171110201234919-1956669171.png
    1232087-20171110201242106-1645281645.png
    1232087-20171110201247684-760049718.png
  • 解决方法:通过多次计算和尝试,改正了函数表达式。

7-5 梅森数

1.本题PTA实验结果

1232087-20171110201542091-276713426.png

2. 设计思路

  • (1)定义五个整数型变量n代表2的最大次方数,i和j代表循环变量。
  • (2)输出n。
  • (3)若n<2,则输出None。
  • (4)若n>=2&&n<20,则进入循环语句。
  • (5)i=2。
  • (6)y=pow(2,i)-1。
  • (7)m=sqrt(y)。
  • (8)j=2。
  • (9)计算y%j。若!=0,则j++,重复直到j>m,结束循环;若==0直接退出循环,说明y不是素数。
  • (10)若j>m,则输出y。
  • (11)i++,重复步骤6,直到i>n,结束循环。

3.本题调试过程碰到问题及解决办法

  • (1)没有对n的上限做出限制。
    1232087-20171110203601716-43548824.png
  • 解决办法:添加if(n>=2&&n<20)

7-7 歌唱比赛评分系统

1.本题PTA实验结果

1232087-20171110203945528-1177662540.png

2. 设计思路

  • (1)定义八个整数型变量repeat代表做repeat次运算,n代表评委数,i和j为循环变量,grade代表分数,max代表最高分,min代表最低分。定义一个浮点型变量score代表最终得分。
  • (2)输出整数repeat。
  • (3)j=1。
  • (4)total=0。
  • (5)输入整数n。
  • (6)输入第一个分数grade。
  • (7)赋初值,max=min=grade。
  • (8)i=1。
  • (9)计算total,total=total+grade。
  • (10)再输出一个分数grade。
  • (11)若grade>max,则max=grade。
  • (12)若grade<min,则min=grade。
  • (13)i++,重复步骤9,直到i>(n-1),则结束循环。
  • (14)计算total,total=total+grade。
  • (15)计算score,score=1.0*(total-max-min)/(n-2)。
  • (16)输出score(保留两位小数)。
  • (17)j++,重复步骤4,直到j>repeat,则结束循环。

3.本题调试过程碰到问题及解决办法

  • (1)没有把所有的步骤放入repeat的循环中。
    1232087-20171110220019903-1512504488.png
  • 解决方法:经过多次审核和询问老师得以解决问题。

二、同学代码结对互评

1.互评同学名称

  • 7-3:李于程

2.我的代码、互评同学代码截图

我的代码

#include<stdio.h>
main()
{
 int n,i,j;
 char c;
 scanf("%c %d",&c, &n);
 if((c>='A'&&c<='G')&&(n<=10&&n%2!=0)){
 for(i=1;i<=(n+1)/2;i++)
 {
  for(j=0;j<n-i-(n-1)/2;j++) 
  printf(" ");
  printf("%c",c+i-1);
  for(j=1;j<=2*i-3;j++) 
  printf(" ");
  if(i-1>0) 
  printf("%c",c+i-1);
  printf("\n");
 }
 for(i=(n+1)/2-1;i>0;i--)
 {
  for(j=0;j<n-i-(n-1)/2;j++) printf(" ");
  printf("%c",c+i-1);
  for(j=1;j<=2*i-3;j++) 
  printf(" ");
  if(i-1>0) 
  printf("%c",c+i-1);
  printf("\n");
 }
 }
 return 0;
}

李某代码

#include<stdio.h>

int main()
{
    int i,h,m,k,l;
    char ch;
    ch=getchar();
    scanf("%d",&h);
    m=(h+1)/2;
    if(m==1){
        for(k=1;k<=m-1;k++){
            printf(" ");
        }
        printf("%c",ch);
    }
    else{
        for(k=1;k<=m-1;k++){
            printf(" ");
        }
        printf("%c",ch);
        printf("\n");
        for(i=1;i<=m-1;i++){
            ch=ch+1; 
            for(k=1;k<=m-1-i;k++){
            printf(" ");}
            printf("%c",ch);
            for(k=1;k<=i*2-1;k++){
                printf(" ");}
                printf("%c",ch);
                printf("\n");
            }
            for(i=1;i<=m-2;i++){
            ch=ch-1;
            l=(m-2-i+1)*2-1;
            for(k=1;k<=i;k++){
            printf(" ");}
            printf("%c",ch);
            for(k=1;k<=l;k++){
            printf(" ");}
            printf("%c",ch);
            printf("\n");
        }
        for(k=1;k<=m-1;k++){
        printf(" ");}
        printf("%c",ch-1);
    }
        return 0;           
    }

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

  • 不同:对上下半菱形代码的处理方式不同
  • 各自优势:我的上下半代码相似,较为简单易懂。而该同学的代码则从上往下一步一步,较为直观。
  • 我更喜欢自己的代码风格,处理对称的方式较为简单。

三、截图本周题目集的PTA提交列表及最后排名。

1.PTA提交列表

1232087-20171110222010966-695438400.png
1232087-20171110222018372-1971564745.png

2.PTA排名

1232087-20171110222144278-1509534654.png

四、本周学习总结

1.你学会了什么?

  • 我学会了嵌套结构,并利用嵌套循环解决一些简单问题。
  • 学会了判断素数的方式。
  • 使用嵌套循环结构时,将所有条件都在循环里才算完整。
  • 学会了在循环结构中,恰当的使用在break跳出循环。
  • 懂得了函数的基本应用,全局变量和局部变量的特征。

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

  • 写的代码还是无法做到比较简洁
  • 容易在循环结构中犯迷糊,不能直接明白各种变量的变换情况。
  • void的函数还是不够熟悉。

转载于:https://www.cnblogs.com/oracler0103/p/7816945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值