第六次实验

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

#include <stdio.h>
int main()
{
	int sum1,b,c,d,e,sum2;
	for(sum1=1000;sum1<10000;sum1++)
	{
		b=sum1%10;
		c=sum1%100/10;
		d=sum1/100%10;
		e=sum1/1000;
        if(b==c||c==d||d==e)
        {
        	continue;
		}
		sum2=b*1000+c*100+d*10+e;
		if(sum1==4*sum2)
		{
			printf("原四位数为%d",sum1);
		}
	    else
	    {
	    	continue;
		}
	}
	return 0;
}

  

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include <stdio.h>
int main()
{
	long n,sum=0,m;
	printf("请输入一串数字");
	scanf("%ld",&n);
	while(n>0)
	{
		m=n%10;
		n=n/10;
		sum+=m;	
		
	}
	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;
}

  

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 i,j,k,A,sum=0,a;
	printf("请输入一个不大于6的正整数A
");
	scanf("%d",&A);
    if(A>=1&&A<=6)
 {
	for(i=A;i<=A+3;i++)
  { 
	for(j=A;j<=A+3;j++)
   {
	for(k=A;k<=A+3;k++)
	{
		if(i!=j&&i!=k&&j!=k)
		{
          sum=i*100+j*10+k;
          a++;
          printf("%4d",sum);
         if(a%6==0)
         {
         	printf("
");
		 }
       }
    }
   }
  }
 }
   else
   {
 		printf("error");
   }
	return 0;
}

  

综合小项目

自动出题器:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
	int a,b,d,result,g=0,i,y,s,x,z,q=0,answer,l=0;
	float accuracy1,accuracy2;
	char c,m;
	
do{
    for(i=1;i<=5;i++)
	{
	srand(time(NULL));
	a=rand()%100+1;
	b=rand()%100+1;
	d=rand()%4+1;
	switch(d)
	{
		case 1:c='+';
		result=a+b;
		break;
		case 2:c='-';
		result=a-b;
		break;
		case 3:c='*';
		result=a*b;
		break;
		case 4:c='/';
		s=a/b;
		y=a%b;
		break;
	}
	
	printf("%d%c%d=?
",a,c,b);
	printf("请输入答案");
	
	if(c=='/')
	{
		printf("请分别输出商和余数,用空格分开");
		scanf("%d %d",&x,&z);
		q++;
		if(x==s&&z==y)    
	{
		g++;
		l++;
		printf("答对了
"); 
		continue;
	}
	else
	{
		printf("答错了,正确的答案是商为%d,余数为%d
",s,y);
		continue;
	}
	}
		scanf("%d",&answer);
		q++;
	if(answer==result)
	{
		g++;
		l++;
		printf("答对了
"); 
	}
	else
	{
		printf("答错了,正确的答案是%d
",result);
    }
    if(i==5)
	    {
		accuracy1=l/5.0*100;
        printf("本次一共做对了%d道题,正确率为%.2f%%
",l,accuracy1);
        printf("继续吗?Y or N
");
        scanf(" %c",&m); 
       }
       
}
l=0;
}while(m==121||m==89);
accuracy2=(float)g/q*100;
printf("一共做了%d道题,做对了%d道题,正确率%.2f%%
!",q,g,accuracy2);
	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,b,c;
    for(a=0;a<=9;a++)
    for(b=0;b<=9;b++)
    {
    	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;
        }
       c=a+b;
		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==12&&a!=b&&a+b==c)
		{
			printf("%d+%d=%d
",a,b,c);
		}
}
    return 0;
}

  

实验总结:1.注意for语句的嵌套,注意大括号的位置,有时候程序问题往往就在大括号的位置。

              2.注意使用switch语句的使用,变量的初值设定。

              3..注意定义变量时,要注意分清定义的变量,避免混淆。

知识点总结:1.注意赋值和等于的区别。

                 2.循环嵌套时,外循环执行一次,内循环执行一回。

               

原文地址:https://www.cnblogs.com/a378/p/6050231.html