鱼C论坛

 找回密码
 立即注册
查看: 3930|回复: 2

程序崩溃何解

[复制链接]
发表于 2013-5-2 14:33:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 格瓦拉之剑 于 2013-5-2 14:40 编辑
  1. /*
  2. ID:azurefa2
  3. LANG:C++
  4. PROG:palsquare
  5. */
  6. #include<iostream>
  7. #include<string.h>
  8. #include<stdio.h>

  9. using namespace std;

  10. bool function1(char* number);  //判断回文
  11. char* function2(int number,int system); //进制转换
  12. char function3(int number); //数字转换成字符
  13. int main()
  14. {
  15.     int n,i;  
  16.     char *a,*b;
  17.     scanf("%d",&n);
  18.     for(i = 1;i <= 300;i++)
  19.         if(function1(function2(i*i,n)))
  20.         {
  21.             a = function2(i,n) ;
  22.             b = function2(i*i,n) ;
  23.             cout<<a<<" "<<b<<"\n";
  24.             delete[] a;
  25.             delete[] b;
  26.         }
  27.     return 0;
  28. }

  29. bool function1(char* number)
  30. {
  31.     int length = strlen(number);
  32.     int i;
  33.     if(length%2 == 0)
  34.     {
  35.         for(i = 0;i  <=  length/2-1;i++)
  36.         {
  37.             if(number[i] != number[length-1-i])
  38.                 return false;
  39.         }
  40.         return true;
  41.     }
  42.     else
  43.     {
  44.         for(i = 0;i  <=(length-1)/2-1;i++ )
  45.         {
  46.             if(number[i] != number[length-i-1])
  47.                 return false;
  48.         }
  49.         return true;
  50.     }
  51. }

  52. char* function2(int number,int system)
  53. {
  54.     char *a = new char[20];
  55.     int i = 0,sum = number,length;
  56.     for(i = 0;i <20 ;i++)
  57.         a[i] = 61;
  58.     length = strlen(a);
  59.     for(i = 0;sum != 0;i++)
  60.     {
  61.         a[length-1-i] = function3(sum%system);
  62.         sum = (sum-sum%system)/system;
  63.     }
  64.     for(i = 0;a[i]  == 61;i++)
  65.         ;
  66.     return a+i;

  67. }

  68. char function3(int number)
  69. {
  70.     if(number<10)
  71.         return number+48;
  72.     else
  73.         return 55+number;
  74. }
复制代码

写了感觉没错,可是有时运行会崩溃,测试数据为2时程序错误。大家看看哪有问题
题目:回文数是指从左向右念和从右像做念都一样的数。如12321就是一个典型的回文数。 给定一个进制B(2<=B<=20十进制),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。






小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 16:09:50 | 显示全部楼层
看的我好晕
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 16:27:29 | 显示全部楼层
题目看的好晕..............
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-29 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表