首页 > 代码库 > 第六次作业

第六次作业

一、实验内容   

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("请输入一个多位数\n");
	scanf("%lld",&a);
	while(a>0)
	{
		sum=sum+a%10;
		a=a/10;
	}
	if(sum>=1&&sum<=12)
	{
		switch(sum)
		{
			case 1: printf("January\n");break;
			case 2: printf("February\n");break;
			case 3: printf("March\n");break;
			case 4: printf("April\n");break;
			case 5: printf("May\n");break;
			case 6: printf("June\n");break;
			case 7: printf("July\n");break;
			case 8: printf("August\n");break;
			case 9: printf("September\n");break;
			case 10: printf("October\n");break;
			case 11: printf("November\n");break;
			case 12: printf("December\n");break;
		}
	}
	else 
		{
			printf("***\n");
		}
	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\n");
	scanf("%d",&a);
	while(1)
	{
	if(a<=0||a>=6)
	{
		printf("输入错误,请重新输入\n");
	}
	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("\n");
						}
					}
				}
			}
		}
	}
	}
	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分别代表剪刀、石头、布\n");
		scanf("%d",&gamer); 
		if(gamer<=0||gamer>=4)
		{
			printf("输入错误,请重新输入\n");
		} 
		else if((gamer==1&&computer==3)||(gamer==2&&computer==1)||(gamer==3&&computer==2))
		{
			printf("你赢了\n");
			printf("电脑输出的是",computer);
			if(computer==1){printf("剪刀\n");}
			if(computer==2){printf("石头\n");}
			if(computer==3){printf("布\n");}
			win++; 
		}
		else if((gamer==1&&computer==2)||(gamer==2&&computer==3)||(gamer==3&&computer==1))
		{
			printf("你输了\n");
			printf("电脑输出的是",computer);
		    if(computer==1){printf("剪刀\n");}
			if(computer==2){printf("石头\n");}
			if(computer==3){printf("布\n");}
			low++;
		}
		else if((gamer==1&&computer==1)||(gamer==2&&computer==2)||(gamer==3&&computer==3))
		{
			printf("平局\n");
			printf("电脑输出的是",computer);
			if(computer==1){printf("剪刀\n");}
			if(computer==2){printf("石头\n");}
			if(computer==3){printf("布\n");}
			draw++;
		}
		fflush(stdin);
		printf("如果继续游戏请输入任意键,输入N结束游戏\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\n",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、考虑系统随机给的数的范围

 

第六次作业