zoukankan      html  css  js  c++  java
  • C语言第三次博客作业---单层循环结构

    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
    ",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!
    ");
                break:
            }//如果1次猜出该数,提示“Bingo!”
    		else if(yournum==guessnum&&count<=3){
                printf("Lucky You!
    ");
                break;
            }//如果3次以内猜到该数,则提示“Lucky You!”
    	    else if(yournum==guessnum&&count>3){
                printf("Good Guess!
    ");
                break;
            }//如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”
    		else if(count>time){
                printf("Game Over
    ");
                break;
            }//如果超过N次都没有猜到,则提示“Game Over”,并结束程序。
    		else if(0<yournum){//提示大了(“Too big”),还是小了(“Too small”)
    			if(yournum<guessnum)
                             printf("Too small
    ");
    			else if(yournum>guessnum)
                             printf("Too big
    ");
    	    }
    		else if(yournum<0){
                      printf("Game Over
    ");
                      break;
                   }//如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
    	}
    	if(yournum!=guessnum&&count==time){
                printf("Game Over
    ");
          }//补充最后一次没猜对仍输出提示大小,然后才输出“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.本周的内容,你还不会什么?

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

  • 相关阅读:
    mysql存储过程详细教程
    js timestamp与datetime之间的相互转换
    spring集成httpclient配置
    Spring使用@scope("session")爆org.springframework.beans.factory.UnsatisfiedDependencyException
    算术编码Arithmetic Coding-高质量代码实现详解
    String Reduction
    (转)Maximum subarray problem--Kadane’s Algorithm
    判断一个字符串在至多删除k个字符后是否为回文串
    最小区间使得至少包含每组元素中的一个
    Pots of gold game:看谁拿的钱多
  • 原文地址:https://www.cnblogs.com/doimpossible/p/7745478.html
Copyright © 2011-2022 走看看