zoukankan      html  css  js  c++  java
  • C语言博客作业嵌套循环

    一、PTA实验作业

    题目一: 打印九九口诀表

    本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

    1. 本题PTA提交列表

    2. 设计思路

    • 第一步:定义整数型变量N为用户输入数,k为乘法式第一个数,i为乘法式第二个数,result为算式每一个结果
    • 第二步:输入N
    • 第三步:i=1
    • 第四步:for(k=1;k<=i;k++)
      result=i*k;
    • 第五步:当i<=N时,i++,返回第三步

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

    结果和算式虽然正确,但在本题中忘记换行,导致所有的都是一排排完整才会换行

    题目二:梅森数

    1. 本题PTA提交列表

    2. 设计思路

    • 第一步:定义整数型变量i,n为用户输入数,num为梅森数,k
    • 第二步:输入n
    • 第三步:当n=1时,可知没有梅森数,即输出None
    • 第四步:当n>1时,i=2,求出num=pow(2,i)-1
    • 第五步:k=2;k<=sqrt(num);k++
      通过num%k是否为0,判断num是否为素数。
    • 第六步:如果是则输出num,否则进行下一步
    • 第七步:当i<=n时,i++,返回第三步

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

    一开始吧所有的num=pow(2,i)-1都输出来了,后面发现我是在条件不成立是忘记加大括号导致条件即使不符,也会往下走,不会跳出来

    题目三:

    1. 本题PTA提交列表

    2. 设计思路

    • 第一步:定义整数型变量repeat为重复输入次数,n为评委个数,max为最高分,min为最低分,all为总分数,num为分数,i,k,l,begin;定义浮点型变量score为最后得分
    • 第二步:输入repeat
    • 第三步:begin=1;当begin<=repeat时进行下一步
    • 第四步:输入n
    • 第五步:将all初始化为0
    • 第六步:输入分数num,all=all+num
    • 第七步:将max和min初始化为num
    • 第八步:i=1,当i<=n-1时进行下一步
    • 第九步:输入num,all=all+num
    • 第十步:比较max与num的大小,如果num大于max,则max=num
      否则比较min和num的大小,如果num小于min,则min=num
    • 第十一步:i++,返回第八步
    • 第十二步:all=all-max-min
    • 第十三步:score=all/(n-2)
    • 第十三步:输出score
    • 第十四步:begin++,返回第三步

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

    当第一次all=all+num时all=4.4,这让我很迷惑,现在也是不懂,是在后面重新编程一个代码才将这一题过了,至于为什么all=all+num时all=4.4现在依然不懂

    二、同学代码结对互评

    #include <stdio.h>
    int main()
    {
    	double apple,pear,orange,grape,exit,other,price;
    	int i,it;
    	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
    	apple=3.00;
    	pear=2.50;
    	orange=4.10;
    	grape=10.20;
    	other=0.00;
    	for(i=1;i<=5;i++){
    		scanf("%d",&it);
    		if(it==1)
    		{printf("price = %.2f\n",apple);}
    		else if(it==2)
    		{printf("price = %.2f\n",pear);}
    		else if(it==3)	
    		{printf("price = %.2f\n",orange);}
    	    else if(it==4)
    		{printf("price = %.2f\n",grape);}
    		else if(it==0)
    		{i=6;}
    		else
    		{printf("price = %.2f\n",other);}
    	}
    	return 0;
    }
    
    #include<stdio.h>//周炳辉同学
    int main()
    {
    	int i,number;
    	double price;
    	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
        for(i=1;i<=5;i++){
    		scanf("%d",&number); 
    		if(number==0) break;
    		else 
    		 switch(number){
    			case 1:
    				price=3.00;
    				break;
    			case 2:
    				price=2.50;
    				break;
    			case 3:
    				price=4.10;
    				break;
    			case 4:
    				price=10.20;
    				break;
    			case 0:
    				break;
    			default:
    				price=0;
    			}
    			printf("price = %.2f\n",price);
    		}
    		return 0;
     } 
    

    这一题我采用的是if-else-if的连环式,而周炳辉同学则采用switch语句,我的方案较为繁琐,如果当有九个选项时,我的毛病就凸现出来了,所以炳辉同学的代码比我好多了
    我现在感觉他的挺完美的

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

    四、本周总结

    1.你学会了什么?

    在本周中学会了break和continue语句,break语句是强制循环结束,执行break语句,循环会提前结束,不在执行循环体中位于其后的语句,而continue语句则是跳过continue紧跟的语句,接下去执行下一语句
    在本周学习嵌套循环,可以使用for、while、do-while三种循环语句。

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

    就像我之前粘连的pta第三题中所说情况就搞不懂为什么会那样,可能说是定义类型不同吧,发现在做pta的时候数学能力也很重要,需要加强数学能力,才能够写出更好的算法算式,在使用嵌套循环是也是觉得要思考太久,有时需要做一两个小时才能做出来,我觉得需要多打代码,加强编程,将会见到效果的。

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/gongshunde/p/7814794.html
Copyright © 2011-2022 走看看