C语言第三次博客作业---单层循环结构

一、PTA实验作业

题目1

1.实验代码

int i,N;
double height;//定义height表示身高
char sex;//定义sex表示性别
scanf("%d\n",&N);
for(i=1;i<=N;i++){
	scanf("%c",&sex);	
	if(sex=='M'){
	 scanf("%lf\n",&height);
	 printf("%.2f\n",height/1.09);//计算男性最佳情侣的身高
	}
	else{
	  scanf("%lf\n",&height);
	 printf("%.2f\n",height*1.09);//计算女性最佳情侣的身高

2 设计思路

  • (1)定义整型变量i,N,浮点型变量height表示身高,字符型变量sex表示性别
  • (2)输入N表示为前来查询的用户数
  • (3)输入用户的性别,若sex='M',输入身高并计算输出height/1.09,若sex='F',输入身高并计算输出height*1.09
  • (4)重复步骤3,直到i >N时结束循环

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

  • 1.


    看了题目的输入输出格式就想当然的在每个输入中加入了换行,由于本题中有字符型变量,导致空格被字符型变量捕捉,出现了以上错误。
  • 2.调试发现输入两组数据只有一组数据被计算输出。

4.本题PTA提交列表

题目2

1.实验代码

int i,a,n,s;
s=0;
scanf("%d %d",&a,&n);//输入a,n
for(i=1;i<=n;i++)
	s=i*a+s*10;//计算公式
	printf("s = %d",s);

2 设计思路

  • (1)定义整型变量i,n,a,s存放计算结果
  • (2)输入a,n
  • (3)计算s=ia+s10
  • (4)重复步骤3,直到i>n时结束循环
  • (5)输出s

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

  • 1.
    看题目计算a+aa+aaa+...+aa..a的和以为是a*a的意思,所以就很疑惑为什么题目的例子会输出246的答案。
  • 2.想了很久还是没懂这个题,就求助了室友,才明白aa是22的意思。

4.本题PTA提交列表

题目3

1.实验代码

int i,number,min,n;
scanf("%d",&n);
scanf("%d",&number); //输入number
min=number; //赋值min为number
for(i=1;i<n;i++){
scanf("%d",&number); //再次输出number
if(min>number) //比较min和number的大小
min=number;
}
printf("min = %d",min); //输出min

2 设计思路

  • (1)定义整型变量i,n,number表示输入的数字,min代表最小值
  • (2)输入n.number,赋值min=number
  • (3)再次输入number,若number小于min,赋值min=number
  • (4)重复步骤3,直到i<n结束循环
  • (5)输出min

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


通过调试发现忘了对min赋值,虽然对于这个题没有影响,但有可能这种细节不注意,对于以后的编程有一定的影响。

4.本题PTA提交列表

题目4

1.实验代码

    int i,N,number,n;
    scanf("%d%d",&number,&N);//输入电脑产生的数和循环次数
    for(i=1;i<=N;i++){
        scanf("%d",&n);//输入玩家猜的数字
        if(n>number)//n大于number
        printf("Too big\n");
        else if(n<number&&n>0)//n大于0且小于number
        printf("Too small\n");
        else if(n==number&&i==1){//n等于number且i等于1
        printf("Bingo!\n");break;}
        else if(n==number&&i>1&&i<=3){//n等于number且i等于2或3
        printf("Lucky You!\n");break;}
        else if(n==number&&i>3&&i<=N){//n等于number且i大于3小于N
        printf("Good Guess!\n");break;}
        else if(n<0){//n小于0
        printf("Game Over");break;}
    }
    if(n!=number&&i>N)//n不等于number且i大于N
        printf("Game Over\n"); 

2 设计思路

  • (1)定义整型变量i,N为可以猜的次数,number为电脑随机产生的数字,n为玩家输入的数字
  • (2)输入number,N
  • (3)输入n为玩家输入的数字
  • (4)当i<=N时,若n大于0小于number, 输出Too small. 若n 大于number, 输出Too big. 若i=1且n等于number 输出Bingo!
    若i 等于1或2且n 等于number 时,输出Lucky you! 若i 大于3小于等于N 且n 等于number 时输出Good Guess! 若n 小于0时输出Game Over
  • (5)当i>=N且n不等于number时输出Game Over

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

  • 1.
    发现如果猜中后程序并没有结束,通过调试想起来没有加break语句跳出循环。
  • 2.对于输出Too small的条件没有严谨,忘记n大于0的条件,输入负数的时候会输出Too small的情况。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 1.知道了嵌套循环的定义以及基本的使用方法和规则。
  • 2.学会使用嵌套循环来计算1!+2!+...+100!
  • 3.对于三种循环语句的选择原则和特点有了一定的了解,给定循环次数,首选for语句,循环次数不明确需要其他条件控制循环,选择while或do-while语句,如果必须进去循环,选择do-while语句。
  • 4.能使用两重循环的题就好不使用多重循环。

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

  • 1.对于字符型变量的使用不熟练,在写代码时不严谨导致代码答案错误。
  • 2.一些题的循环体语句很难总结出来,没有思路。
  • 3.循环语句的选择,有时不能一次选择正确。
  • 4.觉得学的东西在慢慢变难,理解力和编程量已经有点跟不上。

3.分支结构上机考试总结。

  • 1.这次考试没有考取满分,心里有些遗憾,但更多的是反思,有些题型和语句已经比较熟练,但有的非常生疏,还有有的数学函数因为平常也没有刻意的去记,到了考试更是想不起来了。
  • 2.这次考试最大的失误就是最后一题对于字符型变量的考察,由于没有在输入的时候打空格,导致一直出错,虽然也调试了,但脑子里恨是没有想到空格是字符型变量。由此看出我对于字符型变量的使用非常生疏。
  • 3.这次的考试让我看清了自己对这门课程的不足之处,希望在以后的学习中填补缺点和不足,怀着严谨的态度学习知识。
posted @ 2017-11-02 21:39  yawlc  阅读(254)  评论(3编辑  收藏  举报