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

    一、PTA实验作业

    题目1: 最佳情侣身高

    1.实验代码

    	char sex; //定义字符型变量sex存放性别
    	int N;     //定义整型变量N 表示人数
    	double height;   //定义浮点型变量height表示身高
    	scanf("%d",&N);
      for(N=N;N>0;N--){      //判断条件是否成立,成立则进入循环体
    		scanf(" %c%lf",&sex,&height);    //输入性别代表字符和身高
    		if(sex=='F'){        //判断性别
    		height=height*1.09;
    		printf("%.2f
    ",height);
    	}
    		if(sex=='M'){
    		height=height/1.09;
    		printf("%.2f
    ",height);
    	}
    	}
    

    2.设计思路

    • 第一步:定义字符型变量sex,F表示女性,M表示男性,定义变量N表示人数,定义浮点型变量hight表示身高
    • 第二步:输入N
    • 第三步:满足N>0,N--
    • 第四步:输入sex,hight
    • 第五步:若性别为女,hight=hight*1.09;
    • 第六步:输出hight
    • 第七步:若性别为男,hight=hight/1.09;
    • 第八步:输出hight

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

    • 每次只能输出一组数据,就结束程序。
    • 通过观看翁恺视频,知道了可以在scanf语句的第一个%d前面加一个空格,避免每按一次回车都开始执行,可以实现多组数据
    • 有过编译错误,for语句中要用;隔开

    4.本题PTA提交列表

    题目2: 特殊a串数列求和

    1.实验代码

    int a,n,s=0,i,m=0;//定义变量a,n,s,m,i,初始化变量s=0,m=0
    	
    	scanf("%d%d",&a,&n);//输入a和n
    	for(i=1;i<=n;i++){        //判断条件,条件成立则进入循环体
    	   m=m+a*pow(10,i-1);    //调用函数pow,用于计算每一项的值
    	    s=s+m;                      
    	}
    	printf("s = %d",s);
    

    2.设计思路

    • 第一步:定义变量a、n表示两个不超过9的整数,m表示每一项的值,s表示和,定义i
    • 第二步:输入a、n
    • 第三步:判断i<=n是否成立,若成立,进行第四步
    • 第四步: m=m+a*pow(10,i-1);
      s=s+m;
      n++
    • 第五步:重复三,四步,直到i>n
    • 第六步:输出s

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

    • 答案错误,误把题目理解为要求a+aa......+aa*a...的和,导致代码错误,输出14的结果
    • 格式错误,输出结果要用空格隔开
    • 通过重新看题,重敲代码改正错误

    4.本题PTA提交列表

    题目3: 找出最小值

    1.实验代码

    	int i,num,min,n;//定义变量num存放数字,min用于存放最小值,n存放数字个数
    	scanf("%d",&n);//输入n
    	scanf("%d",&num);//输入num
    	min=num;//将输入的第一个数赋值给min
    	for(i=1;i<n;i++){       //进行判断,条件成立则进入循环体
    		scanf("%d",&num);
    		if(min>num)
    		min=num;
    	}
    	printf("min = %d
    ",min);
    

    2.设计思路

    • 第一步:定义变量i,mark表示输入的数字,min表示最小值,n表示输入数字的个数
    • 第二步:输入n和第一个数据num
    • 第三步:赋值min=num
    • 第四步:判断i<n是否成立,若成立,执行步骤五
    • 第五步:输入数据num,
    • 第六步:若min>num
    • 第七步:min=num
    • 第八步:i++
    • 第九步:跳到步骤四,重复执行,直到i>=n
    • 第十步:输出最小值min

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

    • 运行程序,输入数据样例后,得到的结果是min=100

    • 经过几组数据检验,发现if中的条件打错了,应该是min>num,否则后面的数只要大于第一个输入的数就会结束

    4.本题PTA提交列表

    题目4: 猜数字游戏

    1.实验代码

    int number,N,mynumber,i;//number用于存放被猜数,N存放最大次数,mynumber存放猜的数
    	scanf("%d%d",&number,&N);
    	for(i=0;i<=N;){
    		i++;
    		scanf("%d",&mynumber);
    		if(mynumber<0){           //判断被猜数是否小于0
    			printf("Game Over");
    			break;
    		}
    		else{                           //否则进入下面的判断
    			if(mynumber>number){
    				printf("Too big
    ");
    			}
    			else if(mynumber<number){
    				printf("Too small
    ");
    			}
    			else if(mynumber==number&&i==1){
    				printf("Bingo!");
    				break;
    			}
    			else if(mynumber==number&&i<=3){
    				printf("Lucky You!");
    				break;
    			}
    			else if(mynumber==number&&i>3&&i<=N){
    				printf("Good Guess!");
    				break;
    			}
    			else{
    				printf("Game Over");
    			}
    		}
    	}
    

    2.设计思路

    • 第一步:定义变量number,mynumber,N,i=0,number表示正确数字,mynumber表示猜的数字,N表示最大次数
    • 第二步:输入number和N
    • 第三步:判断i<=N是否成立,若成立,跳到第四步执行
    • 第四步:i++
    • 第五步:输入mynumber
    • 第六步:如果mynumber<0,输出Game Over,结束程序
    • 第七步:如果mynumber>0,跳到第八步执行
    • 第八步:判断若mynumber>number,输出Too big,并跳到第三步
    • 第九步:若mynumber<number,输出Too Small,并跳到第三步
    • 第十步:若mynumbernumber&&i1,输出Bingo!,结束程序
    • 第十一步:若mynumber==number&&i<=3,输出Lucky You!,结束程序
    • 第十二步:若mynumber==number&&i>3&&i<=N,输出Good Guess!,结束程序
    • 第十三步:否则,输出Game Over

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

    • 第N次时,没有猜对是输出too big或者too small,不会输出game over,条件关系有点混乱,没有完全正确
    • 原先在for循环之前加了一个条件判断,判断number是否大于零,用数据尝试时无法执行
    • 后来去掉for前的判断,在循环体里面进行判断,得到了完全正确的答案

    4.本题PTA提交列表

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

    三、本周学习总结

    1.你学会了什么?

    • for循环结构,基本形式为for(expr1;expr2;expr3){ 循环体 }
      注意for中的三个expr要用;隔开
      基本流程:
      a.执行expr1
      b.判断expr2,若为真,则执行c,否则退出循环
      c.执行循环体
      d.执行expr3
      e.转到b执行
    • while循环结构,基本形式为while(expr){ 循环体 }
      注意while循环先判断再执行
      基本流程:
      a.判断expr,若为真则执行b,否者退出循环
      b.执行循环体
      c.转到a执行
    • do-while循环结构,基本形式do{ 循环体 }while(expr)
      注意do-while先执行再判断
      基本流程:
      a.执行循环体
      b.判断expr,若为真,则执行a,否则退出循环
    • 对for的嵌套循环有一定的了解,首先执行第一个大循环,若成立,进入小循环,直到小循环条件不成立,再跳到大循环判断,重复执行,直到条件都不成立,输出结果

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

    • 循环结构中常要进行条件判断,如if else等的语句,对这样的条件判断做的还不太好,经常要漏掉,导致结果部分正确
    • 对flag的运用还不太熟练,不大会用
    • 对for的嵌套循环还不太熟悉,真正操作有点困难
    • while循环中对while后面的条件判断应怎么选择还不太会
    • 对极端值的处理不太懂

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

    • (1)这次分支结构上机考试中犯了很多大小错误,在第一题分段函数中,对数的表达错误,对于整型数除以整型数得到的也是整型数的遗忘,导致此题便耗费了大量的时间;在第二题计算个人所得税中,犯了if条件句中不能出现类似3500<w<=4500的语句,还有对w>0&&w<=1600条件下的处理不合理,导致答案频频错误;第三题,由于前两题的失误,还有看到输入语句要处理:的符号,此时心里已经乱成一团,所以此题甚至还没开始做答;对于第四题成绩转换,一开始想到的是运用switch语句,但是由于格式等没有记牢,后面改用if语句,期间耗费了不少时间;第五题还没开始看题。我觉得,会犯这些错误的主要原因就是不够熟练,代码量还远远不够,对于一些基本的语法、格式还不熟,而且对调试工具的使用也不熟练;还有就是心态问题,有点紧张,遇到难点卡住了就不知所措。
    • (2)首先要保证程序的基本语法正确,不出现一些低级的语法错误,可以节省时间;其次,要熟练掌握对调试工具的使用,遇到程序错误时,要用调试监视变量的变化情况,找出错误的地方,并改正;再者,要学会用printf语句来调试程序,验证一些数据,比如极端值,看输出的结果是否正确,也可以找到程序的错误;最后,要调整心态,遇到程序问题不着急,冷静分析,才能找到错误。
    • (3)对自己这次的考试成绩非常不满意,甚至因此郁闷许久。我认为最大的问题就是自己的懒,练习量太少,课本还没有去看,考前也没复习。所以,在此之后,我要克服的最大困难就是自己,多去看书、看视频、查阅资料,巩固基础知识,还有就是要多打代码,遇到不会的自己先思考,再和同学讨论,或者请教老师,不心急,不暴躁,不应付,不放弃,我相信对改进学习是有帮助的。
  • 相关阅读:
    Linux找回root密码
    关于Linux的随笔笔记
    需求征集系统进度03
    需求征集系统进度02
    需求征集系统进度01
    第六周总结
    阅读笔记03
    第一周总结
    第五周总结
    阅读笔记02
  • 原文地址:https://www.cnblogs.com/mayifang/p/7766858.html
Copyright © 2011-2022 走看看