数字错位问题
本人萌新,在学习小甲鱼的c语言教程,在做阶段测试时有一个联想问题,小甲鱼的题目是求倒置数,我就在想能不能求一个错位数,就比如123456右错三位变成456123,12345右错4位变成23451
如何用c语言将输入的整数按照指定的位数移动
比如输入12345,指定右移2位,则输出45123;
在不输入整数位数的情况下如何做到??请各位大佬讲解 萌新表示不会{:5_102:} #include <stdio.h>
main(void)
{
int a , b , c , d , e ;
a = 123456 ;
b = a % 100 ;
c = a / 100 ;
d = c ;
while(d > 0) {
b *= 10 ;
d /= 10 ;
}
e = b + c ;
printf("a = %d , e = %d\n" , a , e) ;
} 取余 #include <stdio.h>
dec_ror(int num , int w)
{
int a , b , c , d , e , r , u , v ;
e = num ;
for(r = 0 , d = num ; d > 0 ; d /= 10 , r ++) ;
if(r > w) {
for(u = 1 ; w > 0 ; w --) u *= 10 ;
a = num / u ;
b = num % u ;
for(c = a , v = 1 ; c > 0 ; c /= 10) v *= 10 ;
e = b * v + a ;
}
return e ;
}
dec_rol(int num , int w)
{
int a , b , c , d , e , r , u , v ;
e = num ;
for(r = 0 , d = num ; d > 0 ; d /= 10 , r ++) ;
if(r > w) {
w = r - w ;
for(u = 1 ; w > 0 ; w --) u *= 10 ;
a = num / u ;
b = num % u ;
for(c = a , v = 1 ; c > 0 ; c /= 10) v *= 10 ;
e = b * v + a ;
}
return e ;
}
main(void)
{
int e , n , w , r , l ;
n = 123456 ;
for(w = 1 ; w < 6 ; w ++) {
e = dec_ror(n , w) ;
printf("\t\tn = %d , e = %d\n" , n , e) ;
}
printf("\n") ;
for(w = 1 ; w < 6 ; w ++) {
e = dec_rol(n , w) ;
printf("\t\tn = %d , e = %d\n" , n , e) ;
}
printf("\n\n") ;
printf("\t\t 请输入一个整数:") ;
scanf("%d" , & n) ;
printf("\t\t 请输入移动位数:") ;
scanf("%d" , & w) ;
r = dec_ror(n , w) ;
l = dec_rol(n , w) ;
printf("\n") ;
printf("\t\t %d 右移 %d 位的结果:%d\n" , n , w , r) ;
printf("\t\t %d 左移 %d 位的结果:%d\n" , n , w , l) ;
printf("\n\n") ;
}
页:
[1]