2009
05-14

各位前辈:


    菜鸟正处于初学阶段,请帮忙写一下程序吧,不胜感谢!


    有一辆在高速公路上行驶的汽车,在某一时刻显示的里程数是95859,7小时后,里程表上又出现了一个回文数,求此回文数和汽车时速?(注:高速公路限速60公里以上,汽车的里程表为5位数)


新手求助!》有 8 条评论

  1. mhjerry 说:

    #include “stdafx.h”
    #include <stdio.h>
    int main()
    {
     int a,b,c,d,e;
     int p=0,q=0,m=0;
     for(a=1;a<=9;a++)
     {
      for(b=0;b<=9;b++)
      {
       for(c=0;c<=9;c++)
       {
        for(d=0;d<=9;d++)
        {
         for(e=0;e<=9;e++)
         {
          p=a*10000+b*1000+c*100+d*10+e;
          q=e*10000+d*1000+c*100+b*10+a;
          if(p==q && p>=95859)
          {
           printf(“%10ld”,p);
           m++;
                                if(m%10==0)
            printf(“\n”);
          }
         }
        }
       }
      }
     }
     printf(“\n”);

    }

  2. lxnini 说:

    mhjerry:你好!谢谢你的解答!

    还有以下问题想继续请教:

    1、#include “stdafx.h”这是一个什么样的头文件。我在Turbo C for windows环境下运行时,编译提示“找不到此头文件”。

    2、那些变量是否都应定义成long int型?

    3、修改上述问题后,结果显示为从95859到100000间所有的回文数。那要求7小时后的那个回文数和汽车时速又该怎么写程序呢?

      静候回复,不胜谢意!

     

  3. mhjerry 说:

    名称的英文全称为:Standard Application Fram Extend

    编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include “stdafx.h”前的代码都是预编译的,它跳过#include “stdafx. h”指令,使用projectname.pch编译这条指令之后的所有代码。

    因此,所有的MFC实现文件第一条语句都是:#include “stdafx.h”。

                                                    ——————摘自百度百科

    我建议你用visual c++来学习C语言,我们老师就是这样要求我们的。

    “我在Turbo C for windows环境下运行时,编译提示“找不到此头文件””那你就直接用 #include <stdio.h> 试试看,也可以到安装目录里的include文件夹里,看有没有stdafx.h文件

    无所谓long int 还是 int ,结果一样吧

    知道95859后的第一个回文数,95959然后95959-95859=100 不符合

    也就是7小时走了100公里,时速100/7=14.2857 km/h

    如果取数字96096-95859=210   210/7=30 km/h  不符合

    。。。。。。。。

    取96369-95859=510 510/7=72.85 km/s  符合条件

    。。。。。。。。。。。。。。。。。。。。。

    程序实现:

    #include “stdafx.h”
    #include <stdio.h>
    int main()
    {
     int a,b,c,d,e;
     int p=0,q=0,m=0,v=0;
     for(a=1;a<=9;a++)
     {
      for(b=0;b<=9;b++)
      {
       for(c=0;c<=9;c++)
       {
        for(d=0;d<=9;d++)
        {
         for(e=0;e<=9;e++)
         {
          p=a*10000+b*1000+c*100+d*10+e;
          q=e*10000+d*1000+c*100+b*10+a;
          if(p==q && p>=95859)
          {
           printf(“%10d”,p);
           v=(p-95859)/7;     /*速度*/
           printf(“%10d”,v);
           m++;               /*个数*/
           printf(“%10d\n”,m);
                                /*if(m%10==0)
            printf(“\n”);*/
          }
         }
        }
       }
      }
     }
     printf(“\n”);

    }
    鄙人也是初学,可能比较肤浅,不吝赐教!

     

  4. lxnini 说:

    mhjerry:你好!

       程序运算时没有符合以下条件的数呀,运行时没有任何输出结果呀?

        if(p==q && p>=95859)
          { printf(“%10d”,p);
           v=(p-95859)/7;     /*速度*/
           printf(“%10d”,v);
           m++;               /*个数*/
           printf(“%10d\n”,m);
                                              /*if(m%10==0)
            printf(“\n”);*/
          }

  5. mhjerry 说:

    #include “stdafx.h”
    #include <stdio.h>
    int main()
    {
     int a,b,c,d,e;
     int p=0,q=0,m=0,v=0;
     for(a=1;a<=9;a++)
     {
      for(b=0;b<=9;b++)
      {
       for(c=0;c<=9;c++)
       {
        for(d=0;d<=9;d++)
        {
         for(e=0;e<=9;e++)
         {
          p=a*10000+b*1000+c*100+d*10+e;
          q=e*10000+d*1000+c*100+b*10+a;
          if(p==q && p>=95859)
          {
           printf(“%10d”,p);
           v=(p-95859)/7;     /*速度*/
           printf(“%10d”,v);
           m++;               /*个数*/
           printf(“%10d\n”,m);
                                /*if(m%10==0)
            printf(“\n”);*/
          }
         }
        }
       }
      }
     }
     printf(“\n”);

    }
    我这有结果呀,你再试试吧,不行,自己敲敲吧,其实很简单!

  6. yy_uestc 说:

      v=(p-95859)/7;     /*速度*/

                                           if(v>60&&v<xx)/*加上这个判别条件就比较完整了*/
           printf(“%10d”,v);

    =========

    开始没弄明白什么叫回文数!

  7. lxnini 说:

    mhjerry、yy_uestc、各位朋友:你们好!:)

             上面的问题已解决了。我把前面的变量a,b,c,d,e,p,q都定义成long int型,再加上  if(v>60&&v<xx)  这个条件就可以了。谢谢各位的指教。

       下面还有一问题,想向各位请教:

        程序填空题:任意输入坐标平面上一点(x,y),求该点到原点(0,0)间的距离。

      #include<stdio.h>
     #include<math.h>
     #include<malloc.h>
     typedef struct  Node
     { float x;
      float y;
     }Node;
     main()
     { Node *p;
      p=(Node *)malloc(sizeof(p));
    printf(“input two number:”);
      scanf(“%f,%f”,p->x,p->y);
          printf(“%5.1f”,sqrt(p->x*p->x+p->y*p->y));
                                                                 
     }
      除了最后一条语句我用,运行时总是没输出结果,即x,y没接收到值,也就说明动态内存语句错了:p=(Node *)malloc(sizeof(p));   是这个原因吗?那三个空应该怎么填?   

  8. yy_uestc 说:

    p=(Node *)malloc(sizeof(p));

    改为p=(struct Node*)malloc(sizeof(struct Node));

    scanf(“%f,%f”,p->x,p->y);

    改为scanf(“%f,%f”,&p->x,&p->y);

    应该是scanf()少了2个&符号

留下一个回复