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

    一、PTA实验作业

    题目1.

    1.实验代码

        int N,i;//定义N为查询的用户数,i为循环变量
        float height,height1;//定义height为输入身高,height1为其情侣身高
        char sex;//定义sex表示性别
        scanf("%d",&N);
        for(i=1;i<=N;i++){ //循环执行N次
            scanf(" %c%f",&sex,&height);
            switch(sex){
            case 'F':height1 = 1.09*height;//F表示女性
                break;
            case 'M':height1 = height/1.09;//M表示男性
                break;
            }
            printf("%.2f\n",height1);//输出其情侣身高并保留两位小数 
        }
    

    2.设计思路

    • (1)定义变量N为查询的用户数,i为循环变量,height为输入身高,height1为其情侣身高,sex为性别
    • (2)输入数据N
    • (3)i=1
    • (4)输入数据sex,height
    • (5)如果sex=‘F’,执行height1 = 1.09*height
    • (6)如果sex=‘M’,执行height1 = height/1.09
    • (7)i=i+1
    • (8)重复步骤4,5,6,7,直到i>N
    • (9)输出其情侣身高并保留两位小数

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

    • (1)问题:
      ①i赋值错误
      ②输入中未考虑上输入符号前还有一个回车




    • (2)解决方法:
      ①经过调试监视变量,发现i不应该赋值为0,应该使i=1;
      ②参考同学的代码,发现输入时应在%c之前加一个空格,存放回车

    4.本题PTA提交列表

    题目2.

    1.实验代码

    	int a,n,s,i,item;//定义整型变量a存放正整数,n存放a的个数,s存放累加和,item存放第i项的值 
    	s=0;
    	item=0;
    	scanf("%d%d",&a,&n);//输入a,n 
    	for(i=1;i<=n;i++){
    		item=a+item*10;//计算第i项的值 
    		s=s+item;//累加每一项 
    	}
    	printf("s = %d",s);	
    

    2.设计思路

    • (1)定义整型变量a存放正整数,n存放a的个数,s存放累加和,item存放第i项的值
    • (2)赋初值s=0,item=0
    • (3)输入a,n
    • (4)i=1
    • (5)item=a+item*10;
      s=s+item;
    • (6)重复步骤5,直到i>n
    • (7)输出s 的值

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

    • (1)问题: 本题未遇见问题(以下展示利用调试工具监视变量的截图过程)

    4.本题PTA提交列表

    题目3

    1.实验代码

    	int i,n,number,min;//定义变量n为整数个数,number为输入值,min为最小值 
    	scanf("%d",&n);
    	scanf("%d",&number);
    	min=number;//假设第一个成绩为最小值 
    	
    	for(i=1;i<=n-1;i++){
    		scanf("%d",&number); 
    		
    		if(min>number)//如果输入的整数比最小值小 
    		min=number;//再假设该成绩为最小值 
    	}
    	printf("min = %d",min);//输出最小值 
    

    2.设计思路

    • (1)定义变量n为整数个数,number为输入值,min为最小值
    • (2)输入数据n,number
    • (3)假设第一个成绩为最小值 ,即min=number
    • (4)i=i+1
    • (5)再次输入成绩number
    • (6)如果min>number,则再假设该成绩为最小值,即赋值min=number
    • (7)重复步骤5,6,直到i>n-1
    • (8)按照“min = 最小值”的格式输出n个整数中的最小值。

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

    • (1)问题:
      ①第一次,假设第一个成绩为最小值 ,却没有输入第一个成绩的值,导致错误
      ②第一次输入代码显示“n=1时,最小值为正”这一项错误,于是添加了一个if语句,发现依旧是错的
      ③未考虑到先输入过一个值,因此循环中的i应该是满足i<=n-1


    • (2)解决方法:
      ①经过检测变量,第一次赋值min=33是错的,因此发现是因为没有先输入一个number赋值给min,于是在赋值前加了输入number语句,且把i条件改为i<=n-1

    4.本题PTA提交列表

    题目4

    1.实验代码

    	int mynumber,yournumber,count,N,i;//定义变量mynumber存放随机数,yournumber存放猜测的数,count存放猜测数次,N存放猜测的最大次数 
    	count=0;//给count赋初值为0 
    	scanf("%d%d",&mynumber,&N);//输入随机数和猜测的最大次数 
    	for(i=1;i<=N;i++){
    		scanf("%d",&yournumber);//输入猜测的数 
    		count++; //累加猜测次数 
    		if(yournumber<0){//如果猜测的数小于0 
    			printf("Game Over\n");
    			return 0;
    		}
    		else {//如果猜测的数大等于0时 
    		if(yournumber==mynumber){
    		    if(count==1)//如果猜测次数为1次 
    	            printf("Bingo!");
    	        if(count>1&&count<=3)//如果猜测次数小于3 
    	            printf("Lucky You!");
    	        if(count>3&&count<=N)//如果猜测次数大于3小等于N 
    	            printf("Good Guess!");break;
    	        
    		    }
    		if(yournumber>mynumber){ 
    			printf("Too big\n");
    		}
    		if(yournumber<mynumber){
    			printf("Too small\n");
    		}
    		} 
    	} 
    	if(yournumber!=mynumber) 
            printf("Game Over");
    

    2.设计思路

    • (1)定义变量mynumber存放随机数,yournumber存放猜测的数,count存放猜测数次,N存放猜测的最大次数
    • (2)给count赋初值为0
    • (3)输入mynumber,N
    • (4)i=1
    • (5)重复步骤6~16,直到i>N
    • (6)输入yournumber
    • (7)count++累加猜测次数
    • (8)如果yournumber<0,直接退出,输出Game Over
    • (9)如果yournumber>mynumber,输出Too big
    • (10)如果yournumber<mynumber,输出Too small
    • (11)如果yournumber==mynumber时
    • (12)如果count==1,输出Bingo!
    • (13)如果count>1&&count<=3,输出Lucky You!
    • (14)如果count>3&&count<=N,输出Good Guess!
    • (15)如果yournumber!=mynumber&&count>N,输出Game Over
    • (16)i=i+1

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

    • (1)问题:
      ①判断count时写成count=1,最后输出结果为Bingo!
      ②题目未看清,count为4时也应该输出Good Guess!
      ③测评时系统提示“直接退出”一项错误,调式时发现输出两组Game Over。



    • (2)解决方法:
      ①count=1改成count==1
      ②重新审题,把count>1&&count<3改为count>1&&count<=3
      ③经同学提示,for循环语句中使用break只能做到退出该循环,不能满足题意,应该把break改成return 0才能满足题意直接退出程序。

    4.本题PTA提交列表

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

    PTA提交列表


    PTA排名

    三、本周学习总结

    1.你学会了什么?

    • 三种循环语句(for,while,do-while)
      ①循环次数已知时,使用for语句
      ②循环条件未知,且循环条件在进入循环时明确,使用while语句
      ③循环条件未知,且循环条件需要在循环体中明确,使用do-while语句(直到型循环)
    • while语句和do-while语句中,如果循环条件一开始就满足,两者结果一样;如果一开始不一样,do-while先执行一次
    • for循环中一旦执行break语句,循环提前结束,不再执行循环体中位于其后的其他语句
    • break结束循环,continue跳过后面语句继续循环,continue只能用于循环
    • 求阶乘的函数为fact( ),例如:i的阶乘调用fact(i)
    • 在做PTA作业时每一题都用到调试工具,多次使用对如何调试找出错误更熟悉

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

    • 对新的知识点了解不够透彻,用起来磕磕碰碰。对于while语句和do-while语句用法不熟,PTA中用到的都是for循环,且for循环也用的不到位,导致本次PTA作业做起来很吃力。
    • 循环结构的算法不太会写
    • 对于较复杂的题目会不确定哪些为需要循环的部分,导致程序写不下去
    • 嵌套循环不会使用

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

    (1)哪些地方错了,为什么?

    • 分段函数:绝对值调用的函数记错,耽误时间
    • 12-24小时制:题目较复杂,没有先写算法,每次都会漏掉一两个条件没有考虑
    • 计算油费:在用到字符型变量时,纠结要不要用到getchar()和putchar()

    (2)后续要怎么找程序错误?

    • 使用调试工具监测变量找错误
    • 在编程过程中加上注释,使程序更直观,容易找出错误点

    (3)对自己成绩满意么?不满意的话要怎么改进?

    • 不满意。把做过的题目抽时间再复习一遍重新打一遍代码,每周翻看前几周的博客,寻找以前犯过的错误,以防再次犯错,并再次复习巩固博客中的小结与问题。做题目时使用调试工具监测变量寻找错误点,减少耽误在找问题上的时间。
  • 相关阅读:
    springboot 基础
    spring 基础
    spring MVC 基础
    windows shell
    oracle 创建用户和视图并授权
    maven 安装本地依赖
    JAVA ssl 证书
    mybatis 递归
    MyBatis基础
    当年的毕设-cpf (一个简易的协议 fuzzer)
  • 原文地址:https://www.cnblogs.com/smtwula/p/7768149.html
Copyright © 2011-2022 走看看