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

第六次作业

一、实验内容   

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

#include<stdio.h>
#include<math.h>
int main()
{
	int num;
	int a,b,c,d,i;
	for(i=1000;i<10000;i++)
	{
		a=i%10;
		b=(i/10)%10;
		c=(i/100)%10;
		d=i/1000;
		if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
		{
			num=a*1000+b*100+c*10+d*1;
			if(i*4==num)
			{
                printf("%d*4=%d\n",i,num);
			}
		}
	}
		return 0;
}

  技术分享

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include<stdio.h>
int main()
{
	int i=0,sum=0;
	printf("请输入一个正数:\n");
	while(1)
	{
		scanf("%d",&i);
		if(i<=0)
		{
			printf("输入错误,重新输入:\n");
			continue;
		}
		else
		{
			break;
		}
	}
	while(i>0)
	{
		sum=sum+(i%10);
        i=i/10;
	}
	printf("%d",sum);
	if(sum==1)
	{
		printf("January");
	}
	else if(sum==2)
	{
		printf("February");
	}
	else if(sum==3)
	{
		printf("March");
	}
	else if(sum==4)
	{
		printf("April");
	}
	else if(sum==5)
	{
		printf("May");
	}
	else if(sum==6)
	{
		printf("June");
	}
	else if(sum==7)
	{
		printf("July");
	}
	else if(sum==8)
	{
		printf("August");
	}
	else if(sum==9)
	{
		printf("September");
	}
	else if(sum==10)
	{
		printf("October");
	}
	else if(sum==11)
	{
		printf("November");
	}
	else if(sum==12)
	{
		printf("December");
	}
	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>
#include<stdlib.h>
int main()
{
	int a,b,c,d,e,f,i=0;
	printf("输入一个整数,要求在1-6之间:\n");
	while(1)
	{
		scanf("%d",&a);
		if(a>=7||a<=0)
		{
			printf("输入错误,重新输入:\n");
			continue;
		}
		else
		{
			system("CLS");
			break;
		}
	}
		printf("输入的数字是%d:\n",a);
		for(b=a;b<(a+4);b++)
			for(c=a;c<(a+4);c++)
				for(d=a;d<(a+4);d++)
				{
					f=b*100+c*10+d;
					if(b!=c&&c!=d&&b!=d)
					{
						i++;
						printf("%d",f);
						if(i%6==0)
						{
							printf("\n");
						}
					}
				}
	return 0;
}

  技术分享

4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)

猜拳游戏

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	char gamer;
	int computer;
	int result,score=0;
	while(1)
	{
		printf("这是一个猜拳的小游戏,请你输入你要出的拳。\n");
		printf("A:剪刀\nB:石头\nC:布\nD:不玩\n");
		scanf(" %c",&gamer);
		switch(gamer)
		{
		    case 65:
			case 97:
			gamer=4;
			break;
			case 66:
			case 98:
			gamer=7;
			break;
			case 67:
			case 99:
			gamer=10;
			break;
			case 68:
			case 100:
			return 0;
			default:
			printf("你的选择为%c,选择错误,退出。\n",gamer);
			getchar();
			system("CLS");
			return 0;
			break;
		}
		computer=rand()%3;//获取0~2的随机数
		result=(int)gamer+computer;
		printf("电脑出");
		switch(computer)
		{
		   case 0:printf("剪刀\n");
			   break;
		   case 1:printf("石头\n");
			   break;
		   case 2:printf("布\n");
			   break;
		}
		printf("你出");
		switch(gamer)
		{
           case 4:printf("剪刀\n");
			   break;
		   case 7:printf("石头\n");
			   break;
		   case 10:printf("布\n");
			   break;
		}
		if(result==6||result==7||result==11)
		{
			printf("你赢了。\n");
			score++;
		}
		else if(result==5||result==9||result==10)
		{
            printf("你输了。\n");
		}
		else
		{
			printf("平局。\n");
		}
		printf("继续下一轮游戏吗?回复N退出游戏,回复其他继续游戏。\n");
		scanf(" %c",&gamer);
		printf("对战情况:\n");
		printf("你得分%d",score);
	}
		return 0;
} 

  技术分享

 二、知识点总结(对顺序结构、选择结构、循环结构做综合总结)

1.头文件#include<math.h>,#include<stdlib.h>的使用,四位数换位的方法,个位与10求余,十百千位各除10取余。

2.输出的格式注意,例第一题新组成的数为原来数的四倍   printf("i*4==%d\n",i,new num);。

3.编程时先判断不符的情况,强制输出,若符合就执行,表述清楚,思维清晰,例第二题的格式,注意大括号内的语句。

4.在比较长的编程中,中间可以使用清屏语句,system("cLs");。

  三、实验总结(实验中遇到的问题及解决方法)

1.第一道题遇到的问题还是大括号的使用,if语句的循环嵌套,以后要特别注意。

2.第二道题是主用while语句

3.做猜拳游戏的编程时遇到的问题比较多,然后解决是先确定电脑出拳,然后定一个值代表玩家和电脑出拳指的数值之和,再做判断,然后得分情况也出现了错误,输入的时候没有赋出值,在程序里也没循环起来,这都是要注意的地方。

第六次作业