标题:c语言编程题,求正确代码和错误内容
只看楼主
emtfmmd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-10-25
结帖率:0
已结贴  问题点数:20 回复次数:7 
c语言编程题,求正确代码和错误内容
求大神指点,我的sum输不出值

问题 F: 实验3-8:回文数的个数
时间限制: 1 Sec  内存限制: 128 MB
提交: 3041  解决: 1648
[提交][状态][讨论版]
题目描述
求1-n中回文数的个数。回文数指正读和反读相同的整数,即该数和它的逆序数相等。如535,282等。
输入
输入包括多行,每行输入一个正整数n(n>=1)。若输入的正整数是0,则结束输入。
输出
与输入相对应,各行对应输出1-n中,回文数的个数。
样例输入
9
44
55
0
样例输出
9
13
14




#include <stdio.h>
int main()
{
    int n,x,i,t,newd,sum=0;
    while(scanf("%d",&n)!=0)
    for(i=1;i<=n;i++)
    {
        x=i;
        newd=0;
        do
        {
        t=x%10;
        newd=newd*10+t;
        x=x/10;
        }while(x>0);
        if(newd==i)
        sum++;   
    }
    printf("sum=%d\n",sum);
    return 0;
}
搜索更多相关主题的帖子: c语言编程 include 正整数 
2016-10-25 10:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:4 
没有说明最大值 是否超过 LONG LONG的限制

DO IT YOURSELF !
2016-10-25 10:17
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
得分:4 
n只是一个变量,一次输入多个数,它的值不会被覆盖吗?就像你举例,分别输入9,44,55,0,最后n=0吧
2016-10-25 10:35
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:4 
举例默认范围在整型范围内。
你代码的问题是scanf这块,是n为0而不是scanf的结果为0,这是有区别的

程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, x, i, t, newd,count = 0;
    int *sum = malloc(sizeof(int));
    while (scanf("%d", &n) != 0)
    {        
        sum[count] = 0;
        if (n == 0)
        {
            break;
        }
        for (i = 1; i <= n; i++)
        {
            x = i;
            newd = 0;
            do
            {
                t = x % 10;
                newd = newd * 10 + t;
                x = x / 10;
            } while (x > 0);
            if (newd == i)
                sum[count]++;
        }    
        count++;
        sum = realloc(sum, (count + 1)*sizeof(int));
    }
    for (i = 0; i < count; i++)
    {
        printf("%d\n", sum[i]);
    }
    free(sum);
    return 0;
}
2016-10-25 10:37
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:0 
重复发送了
2016-10-25 10:37
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:4 
[quote]以下是引用grmmylbs在2016-10-25 10:37:37的发言:

举例默认范围在整型范围内。
你代码的问题是scanf这块,是n为0而不是scanf的结果为0,这是有区别的


#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, x, i, t, newd,count = 0;
    int *sum = malloc(sizeof(int)); //int *sum=(int *)malloc(sizeof(int));漏了数据类型
    while (scanf("%d", &n) != 0)
    {        
        sum[count] = 0;
        if (n == 0)
        {
            break;
        }
        for (i = 1; i <= n; i++)
        {
            x = i;
            newd = 0;
            do
            {
                t = x % 10;
                newd = newd * 10 + t;
                x = x / 10;
            } while (x > 0);
            if (newd == i)
                sum[count]++;
        }   
        count++;
        sum = realloc(sum, (count + 1)*sizeof(int));  //sum=(int *)realloc(sum,(count+1)*sizeof(int)) 同上
    }
    for (i = 0; i < count; i++)
    {
        printf("%d\n", sum);
    }
    free(sum);
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2016-10-25 11:11
emtfmmd
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-10-25
得分:0 
回复 4楼 grmmylbs
十分感谢帮忙。
2016-10-25 12:10
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
得分:4 
好吧
2016-10-25 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470238-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.322822 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved