zoukankan      html  css  js  c++  java
  • 第六次作业

    一、实验内容   

    1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。

    #include<stdio.h>
    int main()
    {
    	int a,b,c,d,e,f;
    	for(a=1000;a<=9999;a++)
    	{
    		b=a/1000;
    		c=a%1000/100;
    		d=a%100/10;
    		e=a%10;
    		f=e*1000+d*100+c*10+b;
    		if(b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a==4*f)
    		{
    			printf("原四位数为%d,新的四位数为%d",a,f);
    		}
    
    	}
    	return 0;
    }
    

      

    2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include<stdio.h>
    int main()
    {
    	long long int a,sum;
    	sum=0;
    	printf("请输入一个多位数
    ");
    	scanf("%lld",&a);
    	while(a>0)
    	{
    		sum=sum+a%10;
    		a=a/10;
    	}
    prntf("%d "sum); if(sum>=1&&sum<=12) { switch(sum) { case 1: printf("January ");break; case 2: printf("February ");break; case 3: printf("March ");break; case 4: printf("April ");break; case 5: printf("May ");break; case 6: printf("June ");break; case 7: printf("July ");break; case 8: printf("August ");break; case 9: printf("September ");break; case 10: printf("October ");break; case 11: printf("November ");break; case 12: printf("December ");break; } } else { printf("*** "); } return 0; }

      

    3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

       输入格式:输入在一行中给出A。

       输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

       输入样例:2

       输出样例:234  235  243  245  253  254

                      324  325  342  345  352  354

                      423  425  432  435  452  453

                      523  524  532  534  542  543

    #include<stdio.h>
    int main()
    {
    	int a,b,c,d,e,x;
    	printf("请输入一个不超过6的正整数A
    ");
    	scanf("%d",&a);
    	while(1)
    	{
    	if(a<=0||a>6)
    	{
    		printf("输入错误,请重新输入
    ");
    	}
    	else if(a>0&&a<=6)
    	{
    		for(b=a;b<(a+3);b++)      
    		{
    			for(c=a;c<=(a+3);c++)
    			{
    				for(d=a;d<=(a+3);d++)
    				{
    					if(b!=c&&b!=d&&c!=d)
    					{
    						e=b*100+c*10+d;
    						printf("% d",e);
    						x++;
    						if(x%6==0)
    						{
    							printf("
    ");
    						}
    					}
    				}
    			}
    		}
    	}
    	}
    	return 0;
    }
    

      

     

     4、猜拳小游戏

    #include<stdio.h>
    #include<stdlib.h> 
    #include<time.h>
    int main()
    {
    	int computer,gamer,win,low,draw,great;
    	char a;
    	a=0,great=0,win=0,low=0,draw=0;
    	while(1)
    	{
    	    computer=rand()%3+1;
    		printf("欢迎来到猜拳小游戏,请输入1,2,3分别代表剪刀、石头、布
    ");
    		scanf("%d",&gamer); 
    		if(gamer<=0||gamer>=4)
    		{
    			printf("输入错误,请重新输入
    ");
    		} 
    		else if((gamer==1&&computer==3)||(gamer==2&&computer==1)||(gamer==3&&computer==2))
    		{
    			printf("你赢了
    ");
    			printf("电脑输出的是",computer);
    			if(computer==1){printf("剪刀
    ");}
    			if(computer==2){printf("石头
    ");}
    			if(computer==3){printf("布
    ");}
    			win++; 
    		}
    		else if((gamer==1&&computer==2)||(gamer==2&&computer==3)||(gamer==3&&computer==1))
    		{
    			printf("你输了
    ");
    			printf("电脑输出的是",computer);
    		    if(computer==1){printf("剪刀
    ");}
    			if(computer==2){printf("石头
    ");}
    			if(computer==3){printf("布
    ");}
    			low++;
    		}
    		else if((gamer==1&&computer==1)||(gamer==2&&computer==2)||(gamer==3&&computer==3))
    		{
    			printf("平局
    ");
    			printf("电脑输出的是",computer);
    			if(computer==1){printf("剪刀
    ");}
    			if(computer==2){printf("石头
    ");}
    			if(computer==3){printf("布
    ");}
    			draw++;
    		}
    		fflush(stdin);
    		printf("如果继续游戏请输入任意键,输入N结束游戏
    ");
    		scanf("%c",&a);
    	    if(a=='N')
    		{
    			printf("你的得分是%d,电脑的得分是%d",win,low);
    			break;
    		}
    	}
    		return 0;
    }
    

      

    附加题

      有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。

     注意:  1. 加号与等号各自需要两根火柴棍    2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. 16根火柴棍必须全部用上

      用火柴棍拼数字0-9的拼法如图所示: 

                  

    #include<stdio.h>
    int main()
    {
    	int a,b,c,A,C,B;
    	for(a=0;a<=9;a++)
    	{
    		for(b=0;b<=9;b++)
    		{
    			for(c=0;c<=9;c++)
    			{
    			switch(a)
    			{
    				case 0:A=6;break;
    				case 1:A=2;break;
    				case 2:A=5;break;
    				case 3:A=5;break;
    				case 4:A=4;break;
    				case 5:A=5;break;
    				case 6:A=6;break;
    				case 7:A=3;break;
    				case 8:A=7;break;
    				case 9:A=6;break;
    			}
    			switch(b)
    			{
    				case 0:B=6;break;
    				case 1:B=2;break;
    				case 2:B=5;break;
    				case 3:B=5;break;
    				case 4:B=4;break;
    				case 5:B=5;break;
    				case 6:B=6;break;
    				case 7:B=3;break;
    				case 8:B=7;break;
    				case 9:B=6;break;	
    			}
    			switch(c)
    			{
    				case 0:C=6;break;
    				case 1:C=2;break;
    				case 2:C=5;break;
    				case 3:C=5;break;
    				case 4:C=4;break;
    				case 5:C=5;break;
    				case 6:C=6;break;
    				case 7:C=3;break;
    				case 8:C=7;break;
    				case 9:C=6;break;
    			}
    
    			if(a+b==c&&A+B+C==12&&a!=b)
    			{
    				printf("%d+%d=%d
    ",a,b,c);
    			}
    			}
    		}
    	}
    		return 0;
    }
    

      

    二、对知识点总结

    1、顺序结构:程序的基本结构:(1)声明变量(2)输入(3)计算(4)输出 

    2、选择结构:if单分枝形式 if else 双分支形式 和 多分支形式。

    3、穷举法,把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出,并进行程序的优化,减少程序进行的复杂性。

    4、程序的调试、设置断点、单步调试,利用调试工具查找程序的错误。

    三、实验总结

    1、注意C语言的数学问题的正确算法 如3x为3*x

    2、输入的值太长时考虑字符的长度

    3、注意考虑数据的合法性

    4、循环的嵌套,先把最外层的进行完,在进行外层 以此类推

    5、考虑系统随机给的数的范围

  • 相关阅读:
    凌乱的DSP笔记(6)-直流电机&步进电机
    凌乱的DSP笔记(5)-按键
    凌乱的DSP笔记(4)-继电器
    凌乱的DSP笔记(3)-蜂鸣器播放音乐
    凌乱的DSP笔记(2)-LED流水灯
    凌乱的DSP笔记(1)-F28335基础知识
    Python GUI设计——tkinter菜鸟编程(上)
    Python基础知识
    R|Shiny练习
    R之ggvis学习笔记
  • 原文地址:https://www.cnblogs.com/lch1/p/6057650.html
Copyright © 2011-2022 走看看