| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2033 人关注过本帖
标题:求解,高手进
只看楼主 加入收藏
C虾
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-5-7
收藏
 问题点数:0 回复次数:31 
求解,高手进
题目:
1.输入一个小于8位的数
2.倒序
3.每一位数加5(大于10的除10取余数)
4.首尾互换
5.输出所得数据

例如:输入2008
      倒序:8002
       每一位数加5(大于10的除10取余数):3557
       首尾互换:7553
        输出:7553

高手写出c代码啊。谢谢拉
搜索更多相关主题的帖子: 求解 
2008-05-17 12:17
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 
不会

qq:304742297
2008-05-17 20:36
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*********************************************************************  ]

            题目:
            1.输入一个小于8位的数
            2.倒序
            3.每一位数加5(大于10的除10取余数)
            4.首尾互换
            5.输出所得数据

            例如:输入2008
            倒序:8002
            每一位数加5(大于10的除10取余数):3557
            首尾互换:7553
            输出:7553


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        bccn人才济济,这点小问题高手们是不屑于于作的,让偶小小菜鸟
    抛砖引玉,希望能再出现高深的代码。

        程序写到现在,出现个问题,想了很久,想不出来对策:数组越界问题。
    我试过用EOF以及“*”结束,可都出现问题,现在输入多于8个数字,也会运
    行。请哪位指点迷津,谢谢。

        由于是菜鸟,所以算法稀松平常,大家担待则个。

*********************************************************************/
#include<stdio.h>
#include<string.h>
void daoxu(char *p,int n)  /*  倒序函数  */
{
        char *q;
        char ch;
        q=p+n-1;
        while(q>p)
        {
                ch=*p;
                *p=*q;
                *q=ch;
                p++;
                q--;
        }
}
void jia5(char *p,int n)  /* 加5函数 */
{
        int i;
        for(i=0;i<n;++i)
        {
                *(p+i)=(*(p+i)+5);
                if(*(p+i)>=58)    /* 如果ascII码大于数字10*/
                        *(p+i)-=10;  /* 当前值减去10 */
        }
}
void jiaohuan(char *p,int n)  /* 首尾交换函数 */
{       
        char ch;
        ch=*p;
        *p=*(p+n-1);
        *(p+n-1)=ch;
}
int main(void) /*********主函数********/
{
        char a[8];
        int n;
        printf("请输入待转换的数字:\n");
        gets(a);
        n=strlen(a);
        daoxu(a,n);
        printf("倒序:%s\n",a);
        jia5(a,n);
        printf("每一位加5:%s\n",a);
        jiaohuan(a,n);
        printf("首尾交换:%s\n",a);


        getch();
}

2008-05-17 23:22
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-5-17 23:22 的发言:[/bo]

程序写到现在,出现个问题,想了很久,想不出来对策:数组越界问题。

            ...

可以读取完数字后,在下一位做个标记,
每个函数操作以0至标记位置为操作对象

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-17 23:34
fambit025
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-3-6
收藏
得分:0 
#include<stdio.h>
#include<string.h>
main()
{
    char n[8];
    int m[8],h[8];
    int i,j,k,s;
    printf("请输入一个小于8位的整数:\n");
    scanf("%s",&n);
    k=strlen(n);
    for(i=0,j=k-1;i<k;i++,j--)
    {
        m[i]=n[i]-48;
        h[j]=m[i];
    }
    for(i=0;i<k;i++)
        h[i]=(h[i]+5)%10;
    s=h[0];
    h[0]=h[k-1];
    h[k-1]=s;
    for(i=0;i<k;i++)
        printf("%d",h[i]);
    
    printf("\n");
}
2008-05-18 00:40
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*********************************************************************  ]

            题目:
            1.输入一个小于8位的数
            2.倒序
            3.每一位数加5(大于10的除10取余数)
            4.首尾互换
            5.输出所得数据

            例如:输入2008
            倒序:8002
            每一位数加5(大于10的除10取余数):3557
            首尾互换:7553
            输出:7553


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        感谢4#朋友的指点,程序已经更改过来。谢谢了。

*********************************************************************/
#include<stdio.h>
#include<string.h>
#define X {char c;c=getchar()!='\n';}
void daoxu(char *p,int n)  /*  倒序函数  */
{
        char *q;
        char ch;
        q=p+n-1;
        while(q>p)
        {
                ch=*p;
                *p=*q;
                *q=ch;
                p++;
                q--;
        }
}
void jia5(char *p,int n)  /* 加5函数 */
{
        int i;
        for(i=0;i<n;++i)
        {
                *(p+i)=(*(p+i)+5);
                if(*(p+i)>=58)    /* 如果ascII码大于数字10*/
                        *(p+i)-=10;  /* 当前值减去10 */
        }
}
void jiaohuan(char *p,int n)  /* 首尾交换函数 */
{       
        char ch;
        ch=*p;
        *p=*(p+n-1);
        *(p+n-1)=ch;
}
int main(void) /*********主函数********/
{
        char a[10];
        int n;
        printf("请输入待转换的数字,程序将数字限定为前8位有效:\n");
        gets(a);
        n=strlen(a);
        if(n>8)    /* 限定数字位数 */
        {
                n=8;
                a[8]='\0';
        }
        daoxu(a,n);
        printf("倒序:%s\n",a);
        jia5(a,n);
        printf("每一位加5:%s\n",a);
        jiaohuan(a,n);
        printf("首尾交换:%s\n",a);


        getch();
}

2008-05-18 00:50
zhuwei168
Rank: 1
来 自:东软信息学院
等 级:新手上路
帖 子:180
专家分:0
注 册:2008-2-13
收藏
得分:0 

不会写
那个首尾的不知道怎么换
想用指针又用不来
2008-05-18 10:19
C虾
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-5-7
收藏
得分:0 
非常感谢大家的热心啊
看来我得好好把c语言学好了

强烈要求斑竹给热心的网友奖励
2008-05-18 11:53
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 
[bo]以下是引用 [un]fambit025[/un] 在 2008-5-18 00:40 的发言:[/bo]

for(i=0,j=k-1;i<k;i++,j--)
    {
        m[i]=n[i]-48;
        h[j]=m[i];
    }
 

m[i]=n[i]-48;
h[j]=m[i];
这两句怎么解释啊?看不明白?

qq:304742297
2008-05-18 21:57
xnm890325
Rank: 1
来 自:福建福州
等 级:新手上路
帖 子:63
专家分:0
注 册:2008-5-10
收藏
得分:0 
2008-05-19 13:51
快速回复:求解,高手进
数据加载中...
 
   



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

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