| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:循环左{右}位移怎么实现?有具体题目问!
只看楼主 加入收藏
w872189787
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-11-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
循环左{右}位移怎么实现?有具体题目问!
a是系统给定的外部整型变量(不
需要自行定义),其值是一个3位十进制数。编写
程序,将a的值循环右移1位。例如,若a=123,则
移位后a=312;若a=360,则移位后a=36。
**********/
void main()
{

}
搜索更多相关主题的帖子: 编写程序 十进制 
2014-11-30 11:18
poppyboy
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2014-11-26
收藏
得分:5 
用求回文数的方法可以啊
sum=0
sum=sum*100+a%10

[ 本帖最后由 poppyboy 于 2014-11-30 12:44 编辑 ]
2014-11-30 12:41
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:5 
我来个思路复杂点的,只是为了练手,不为算法求精。原代码不完善,新代码在5楼。

[ 本帖最后由 longwu9t 于 2014-11-30 16:49 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-11-30 15:39
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
原代码不完善,新代码在5楼。

[ 本帖最后由 longwu9t 于 2014-11-30 16:49 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-11-30 16:22
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
循环右移左移并打印。。。。。
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int count(int);
int newnumRight(int, int);
int newnumLeft(int n, int num);

int main(void) {
    int num,n,i,numnew;
L:
    printf("INPUT NUM: ");
    scanf("%d", &num);

    if(num<0 || num>INT_MAX) {
        printf("INPUT ERROR!\n");
        goto L;
    }

    n=count(num);

    printf("\n循环右移...\n");
    for(i=0; i<n; i++) {
        numnew=newnumRight(n, num);
        num=numnew;
        printf("NEWNUM = %d\n", numnew);
    }
    printf("\n循环左移...\n");
    for(i=0; i<n; i++) {
        numnew=newnumLeft(n, num);
        num=numnew;
        printf("NEWNUM = %d\n", numnew);
    }

    return 0;
}

int count(int num) {
    int n=0;

    if(num>=0 && num<=9) {
        n=1;
    } else {
        do {
            num/=10;
            n++;
        } while(num>=1);
    }

    return n;
}

int newnumRight(int n, int num) {
    int i;
    char *cnum;
    char *newcnum;
    cnum = malloc((n+1)*sizeof(char));
    if(cnum == NULL) {
        printf("first malloc error... again!\n");
        exit(0);
    } 
    *(cnum+n)='\0';
    newcnum = malloc((n+1)*sizeof(char));
    if(newcnum == NULL) {
        printf("second malloc error... again!\n");
        exit(0);
    } 
    *(newcnum+n)='\0';

    itoa(num,cnum,10);
    i=--n;

    for(n=0; n<i; n++) {
        *(newcnum+n) = *(cnum+n+1);
    }

    *(newcnum+i)=*cnum;
    num=atoi(newcnum);
    free(cnum);
    free(newcnum);
    return num;
}

int newnumLeft(int n, int num) {
    int i;
    char *cnum;
    char *newcnum;
    cnum = malloc((n+1)*sizeof(char));
    if(cnum == NULL) {
        printf("first malloc error... again!\n");
        exit(0);
    } 
    *(cnum+n)='\0';
    newcnum = malloc((n+1)*sizeof(char));
    if(newcnum == NULL) {
        printf("second malloc error... again!\n");
        exit(0);
    } 
    *(newcnum+n)='\0';

    itoa(num,cnum,10);
    i=--n;
    for(; n>0; n--) {
        *(newcnum+n) = *(cnum+n-1);
    }
    *newcnum=*(cnum+i);
    num=atoi(newcnum);
    free(cnum);
    free(newcnum);
    return num;
}


这个算修正版了。

[ 本帖最后由 longwu9t 于 2014-11-30 16:48 编辑 ]

Only the Code Tells the Truth             K.I.S.S
2014-11-30 16:39
w872189787
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-11-30
收藏
得分:0 
回复 5 楼 longwu9t
如果只是回答我的问题呢?谢谢
2014-12-02 00:39
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
收藏
得分:5 
回复 楼主 w872189787
既然是三位十进制整数,那只要一句代码就行了啊。

a = ( a % 10 ) * 100 + a / 10 ;

[qq]949654600[/qq]
2014-12-02 08:25
maqiangdemo
Rank: 2
等 级:论坛游民
帖 子:78
专家分:98
注 册:2014-2-26
收藏
得分:5 
回复 楼主 w872189787
#include"stdio.h"
int main()
{ int i;
  printf("请输入一个整数,如果不是三位数就退出!\n");
  scanf("%d\n",&i);

  if(1<=(i/100)&&(i/100)<=9)
       i=(i%10)*100+i/10;
  else
         break;
  printf("%d",i);
  return 0;
}
2014-12-02 16:01
快速回复:循环左{右}位移怎么实现?有具体题目问!
数据加载中...
 
   



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

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