问题标题: 酷町堂:3800回文数字

0
0
已解决
汤启恩
汤启恩
新手光能
新手光能

#include<bits/stdc++.h>
using namespace std;
int a[6],j=0;
bool f=0;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int k=i;
        while(k!=0){
            a[++j]=k%10;
            k/=10;
        } 
        for(int l=1;l<=j/2;l++){
        if(a[l]==a[j]){
            f=1;
        }
        else{
            f=0;
            break;
        }
        j--;
    }
    j=0;
    f=0;
    if(f==1)
    cout<<k<<" "; 

    return 0;
}

汤启恩在2020-07-16 09:26:30追加了内容

@包涵宇 

#include<bits/stdc++.h>
using namespace std;
int a[6],j=0;
bool f=1;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int k=i;
        while(k!=0){
            a[++j]=k%10;
            k/=10;
        } 
        int p=j;
        for(int l=1;l<=p/2;l++){
        if(a[l]==a[j]){
            f=1;
        }
        else{
            f=0;
            break;
        }
        j--;
    }
        if(f==1)
    cout<<k<<" "; 
    j=0;
    f=1;

    return 0;
}

还是不对

输入10

输出

0 0 0 0 0 0 0 0 0

汤启恩在2020-07-16 09:28:19追加了内容

对了

输出i不是输出j


0
已采纳
包涵宇
包涵宇
中级天翼
中级天翼

你的代码错误一点多

1.bool初值应该是1,应为10以内的数不会经过第二层FOR循环

2.应该先输出再初始化

3.j在循环中会改变,要用一个数存下来

所以,应将

bool f=0;

改为

bool f=1;

while(k!=0){
            a[++j]=k%10;
            k/=10;
        } 

后   

插入

int p=j;

for(int l=1;l<=j/2;l++){

改为

for(int l=1;l<=p/2;l++){

j=0;
    f=0;
    if(f==1)
    cout<<k<<" "; 

改为

    if(f==1)
    cout<<k<<" "; 
    j=0;
    f=1;

望采纳!!!

0
0
0
0
褚俊皓
褚俊皓
新手天翼
新手天翼

循环取位数然后判断是否一样

我要回答