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

一、PTA实验作业

题目1

1.实验代码


	int N,i;//N为用户数,i为循环变量
	double height_in,height_out;//输入和输出的身高
	char ch;//判断符,F为女,M为男
	scanf("%d",&N);
	for(i=1;i<=N;i++){
		scanf(" %c%lf",&ch,&height_in);
		switch(ch){
		    case 'F':
		        height_out = 1.09*height_in;
		        break;
		    case 'M':
		        height_out = height_in/1.09;
		        break;
		}
		printf("%.2f\n",height_out);
	}

2 设计思路

  • 1.定义变量:int类型变量N为用户数,i为循环变量;double类型变量height_in和height_out作为输入和输出的身高,字符型变量ch作为判断符,F为女,M为男。
  • 2.输入用户数N。
  • 3.i=1
  • 4.若i<=N,重复步骤5到8。
  • 5.输入字符ch和身高。
  • 6.判断ch:若ch为F,height_out = 1.09*height_in;若ch为M,height_out = height_in/1.09。
  • 7.输出保留两位小数的height_out。
  • 8.i++

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

  • 字符与数字混合输入,每个值无法精确给到。

解决方法:在第二个输入的%c前加了一个空格,用于吸收回车,否则回车会以字符形式给到ch,ch就无法得到F或M。

4.本题PTA提交列表

题目2

1.实验代码


	int a,n,i;//a为每一项重复的数字,n为项数,i为循环变量
	int sum = 0;//变量初始化
	int item = 0;
	scanf("%d%d",&a,&n);
	for(i=1;i<=n;i++){
	    item = item*10+a;//计算每一项
	    sum = sum + item;//累加每一项
	}
	printf("s = %d",sum);


2 设计思路

  • 1.定义int类型变量a,n,i,sum和item,a为每一项重复的数字,n为项数,i为循环变量,sum和item初始值均为0。
  • 2.输入a和n
  • 3.i=1
  • 4.若i<=n,重复步骤5到7
  • 5.item = item*10+a
  • 6.sum = sum + item
  • 7.i++
  • 8.输出sum。

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

  • 刚开始为设置item变量,直接累加到sum里面,导致结果错误。解决方法:设置了item,计算每项的值再累加。

  • 调试结果:

4.本题PTA提交列表

题目3

1.实验代码

    int i,n,min,num;//i为循环变量,n为输入数据个数,num为输入数据
	scanf("%d",&n);
	scanf("%d",&num);
	min=num;//将第一输入的值给min,为暂定最小值
	for(i=1;i<=n-1;i++){
		scanf("%d",&num); 
		if(min<=num)//每一轮输入的num与min比较,最小值给min
                min=min;
		else 
                min=num;
	}
	printf("min = %d",min);

2 设计思路

  • 1.定义int变量i,n,min,num,i为循环变量,n为输入数据个数,num为输入数据。
  • 2.输入n和num
  • 3.min=num
  • 4.i=1
  • 5.若i<=n-1,重复步骤6到8
  • 6.输入num
  • 7.若min<=num,min=num,否则min=min
  • 8.i++
  • 9.输出min

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

  • 本题第一次提交时为如下代码:

虽然结果也正确但是有点取巧,所以改为现在的样子。

  • 调试过程:

4.本题PTA提交列表

题目4

1.实验代码


	int yournum,time,guessnum,i;//yournum表示输入数据,time表示输入次数,guessnum为被猜数,i为循环变量
	int count = 0;//计数器初始化
	scanf("%d%d",&guessnum,&time);
	for(i=1;i<=time;i++){
		scanf("%d",&yournum);
		count++;//计算输入次数
		if(yournum==guessnum&&count==1){
            printf("Bingo!\n");
            break:
        }//如果1次猜出该数,提示“Bingo!”
		else if(yournum==guessnum&&count<=3){
            printf("Lucky You!\n");
            break;
        }//如果3次以内猜到该数,则提示“Lucky You!”
	    else if(yournum==guessnum&&count>3){
            printf("Good Guess!\n");
            break;
        }//如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”
		else if(count>time){
            printf("Game Over\n");
            break;
        }//如果超过N次都没有猜到,则提示“Game Over”,并结束程序。
		else if(0<yournum){//提示大了(“Too big”),还是小了(“Too small”)
			if(yournum<guessnum)
                         printf("Too small\n");
			else if(yournum>guessnum)
                         printf("Too big\n");
	    }
		else if(yournum<0){
                  printf("Game Over\n");
                  break;
               }//如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
	}
	if(yournum!=guessnum&&count==time){
            printf("Game Over\n");
      }//补充最后一次没猜对仍输出提示大小,然后才输出“Game Over”,并结束程序。

2 设计思路

  • 1.定义变量yournum,time,guessnum,i,count,yournum表示输入数据,time表示输入次数,guessnum为被猜数,i为循环变量,count计算输入次数,初始值为0
  • 2.输入guessnum和time
  • 3.i=1,若i<=time,重复步骤4到12
  • 4.输入getnum
  • 5.count++
  • 6.如果yournumguessnum&&count1,输出Bingo!并换行。
  • 7.如果yournum==guessnum&&count<=3,输出Lucky You!并换行。
  • 8.如果yournum==guessnum&&count>3,输出Good Guess!并换行。
  • 9.如果count>time,输出Game Over并换行。
  • 10.如果0<yournum,判断如果yournum<guessnum,输出Too small并换行。如果yournum>guessnum,输出Too big并换行。
  • 11.如果yournum<0,输出Game Over并换行。
  • 12.i++
  • 13.如果yournum!=guessnum&&count==time,输出Game Over并换行。

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

  • 本题条件复杂,循环里面和外面都要考虑到多种情况,而自身的测试数据不够很多隐藏的条件没有注意到。解决方法:放到pta里一遍遍测试,慢慢补充条件直到最后通过。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 本周通过做pta题目,能更加熟练的使用循环语句了。
  • 对字符及数字的混合输入有了进一步的认识,输入数字后跟的空格会被%c接受,要能准确输入字符要在%c前加一个空格,相当于留一个位置给空格,之后输入的字符才能被%c吸收。
  • 学到了循环的嵌套,可以套判断,也可以套循环。

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

对于循环嵌套还不是很熟练,其他的内容基本上都会了。

posted on 2017-10-28 10:33  斯慕  阅读(226)  评论(6编辑  收藏  举报