• 第六次实验


    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.循环嵌套时,外循环执行一次,内循环执行一回。

                   

  • 相关阅读:
    Git
    vue
    vue
    echarts,dojo和兼容问题
    js数组对象以某一对象排序
    滚动条与图片移动
    vue
    vue
    vue页面组件化-父子组件传值
    phpquery笔记
  • 原文地址:https://www.cnblogs.com/a378/p/6050231.html
Copyright © 2020-2023  润新知