• 第六次作业


    一、实验内容   

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

    1.1 代码:

    #include <stdio.h>
    int main ()
    {
    	int a,b,c,d,e,i;
    	for(i=1000;i<=9999;i++)
    	{
    		a=i/1000;
    		b=i%1000/100;
    		c=i%100/10;
    		d=i%10;
    		e=d*1000+c*100+b*10+a;
    		if(i==4*e)
    		{
    			printf("%d
    ",i);
    		}
    	}
    	return 0;
    }

    1.2 程序运行结果:

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    2.1 代码:

    #include <stdio.h>
    int main ()
    {
    	long a,b,c,sum=0;
    	printf("请输入一个多位数字
    ");
    	scanf("%ld",&a);
    	if(a<9)
    	{
    		printf("error
    ");
    	}
    	else
    	{
    		while(a>0)
    		{
    			b=a%10;
    			a=a/10;
    			sum=sum+b;
    		}
    		printf("%d
    ",sum);
    		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;
    			default : printf("***
    ");
    		}
    	}
    	return 0;
    }
    

    2.2 程序运行结果:

    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

    3.1 代码:

    #include <stdio.h>
    int main()
    {
    	int A,i,j,k,a,sum=0;
    	printf("请输入一个不超过6的正整数
    ");
    	scanf("%d",&A);
    	if(A<0||A>6)
    	{
    		printf("error");
    	}
    	else
    	{
    		for(i=A;i<=A+3;i++)
    		{
    			for(j=A;j<=A+3;j++)
    			{
    				for(k=A;k<=A+3;k++)
    				{
    					if(i!=j&&j!=k&&k!=i)
    					{
    						sum=i*100+j*10+k;
    						a++;
    						printf("%4d",sum);
    						if(a%6==0)
    						{
    							printf("
    ");
    						}
    					}
    				}
    			}
    		}
    	}
    	return 0;
    }
    

    3.2 程序运行结果:

    4.猜拳游戏

    4.1 代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main ()
    {
    	int player,computer,b=1,n,i=0,j=0,k=0;
    	char a,y;
    while (1)
    	{
    			srand(time(NULL));
    			computer=rand()%3+1;
    			printf("***猜拳游戏***
    ");
    			printf("第%d次对决,请做出你的选择:
     1.石头 2.剪刀 3.布
    ",b);
    			scanf("%d",&player);
    		while (player<1||player>3)
    		{
    			printf("输入错误,请重输
    ");
    			scanf("%d",&player);
    		} 
    		
    		{
    			if(computer==1) 
    			{
    				printf("电脑出了石头
    ");
    				switch(player)
    				{
    					case 1:printf("你出了石头
     平局
    ");i++;break;
    					case 2:printf("你出了剪刀
     你输了
    ");j++;break;
    					case 3:printf("你出了布
     你赢了
    ");k++;break;
    				}
    			}
    			if(computer==2) 
    			{
    				printf("电脑出了剪刀
    ");
    				switch(player)
    				{
    					case 1:printf("你出了石头
     你赢了
    ");k++;break;
    					case 2:printf("你出了剪刀
     平局
    ");i++;break;
    					case 3:printf("你出了布
     你输了
    ");j++;break;
    				}
    			}
    			if(computer==3) 
    			{
    				printf("电脑出了布
    ");
    				switch(player)
    				{
    					case 1:printf("你出了石头
     你输了
    ");j++;break;
    					case 2:printf("你出了剪刀
     你赢了
    ");k++;break;
    					case 3:printf("你出了布
     平局
    ");i++;break;
    				}
    			}
    				printf("是否继续?按n退出,按其他键继续 
    ");
    				scanf(" %c",&a);
    				if (a=='n')
    				break;
    		} 
    				b++; 
    	}
    		if(j>k)
    			{
    				printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局
    ",b,k,j,i);
    				printf("你输了
    ");
    			}
    		else if(j<k)
    			{
    				printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局
    ",b,k,j,i);
    				printf("你赢了
    ");
    			}
    		else
    			{
    				printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局
    ",b,k,j,i);
    				printf("平局
    ");
    			}
    		exit (0);
    		return 0;
    }
    

    4.2 程序运行结果:

    附加题

      有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的拼法如图所示: 

     

    二、知识点总结

    1.switch语句后要有相应的break.

    2.for循环和while循环要分开,注意两者的使用条件

     三、实验总结

    1.注意运行的是否为副本,副本运行出的结果与源程序是不一样的。

    2.记得要对程序进行合法性验证,给出错误数据的解决方法

    3.注意穷举法的应用.

    4.数据对齐时要注意空位.

     

     

  • 相关阅读:
    Windows 驱动加载程序代码
    coding push 上传文件
    MinGW 可以编译驱动的
    通过使用 NTLite 工具实现精简Windows系统
    一些常用的注入技巧
    Python 图片转字符图
    MySQL数据库及注入方法
    路由器被蹭网后,我有被黑的风险吗?
    markdown 实现代码折叠效果
    Windows 签名伪造工具的使用,Python,签名
  • 原文地址:https://www.cnblogs.com/wei530/p/6059923.html
Copyright © 2020-2023  润新知