鱼C论坛

 找回密码
 立即注册
查看: 1250|回复: 4

[已解决]回文数

[复制链接]
发表于 2021-10-22 20:56:53 | 显示全部楼层 |阅读模式

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

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

x
课后作业
 #include <stdio.h>
#include<stdio.h>
#include <math.h>
int returnnum(double num)
{        int size=0,y,h=0;
        double i,Ringt;
        double num2=num;
double num1=num;
        for(num1;num1>1;num1=num1/10)
        {
                size=size+1;
         } 
        for(y=size-1;y>-1;y--)
        {
                if(y==0)
                {  i=num;
                   num=num-floor(i)*pow(10,y);
                }
                else
                {
                 i=num/pow(10,y);
                num=num-floor(i)*pow(10,y);
                }
         
                if(i!=0)
                {
                        Ringt=floor(i)*pow(10,h)+Ringt;
                
                } 
                else
                {
                        Ringt=floor(i);
                }
                h=h+1;
        
}

        if(Ringt==num2)
        {
                return 1;
        }
        
                return 0;
}

        
int main()
{
        int iflag;
        double i[2]={100,999};
        int result[2]={0};
        for(i[1]=100;i[1]<999;i[1]++) 
        {
                for(i[2]=999;i[2]>100;i[2]--)
                {
                        result[1]=i[1]*i[2];
                        
                        if(returnnum(result[1])==1)
                        {
                                if(result[1]>result[2])
                                {
                                        result[2]=result[1];
                                }
                        }
                }
                
        }
        printf("%d",result[2]);
 } 
课后题我是这么做的  但是有一个bug就是不加上if(i[1]==913&&i[2]==993)
                        {
                                printf("%f\n%f\n",i[1],i[2]) ;
                        }
这句他的结果就会变成888888
最佳答案
2021-10-22 22:02:18
 for(i[2]=999;i[2]>100;i[2]--)\\越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-22 20:58:37 | 显示全部楼层
因为我去看答案的时候  答案打印出来的结果不是888888然后我就看一下我的代码  
难道是因为i没到913 和993吗   结果都打到了  就是我那句if判断了一下   可我不判断的时候他输出的结果只有888888
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-22 22:02:18 | 显示全部楼层    本楼为最佳答案   
 for(i[2]=999;i[2]>100;i[2]--)\\越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-22 22:32:35 | 显示全部楼层

解决了解决了
一个数组越界一个没定义初始化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-22 22:35:26 | 显示全部楼层
本帖最后由 jhq999 于 2021-10-23 11:24 编辑
char val[32]={0};
i=0;
tmp=num;
while(tmp)
{
   val[i]=tmp%10;
   tmp/=10
   i++;
}
i--;
for(j=0;i>j;j++,i--)
{
    if(val[i]!=val[j])break;
}
if(j>=i)是回文数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-22 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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