1. c语言中,如何逆序任意输出的字符串 求简单易懂的方法。
一般的逆序用两个while,但没多少人用,给你三种常见方法
一 设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。
char *Reverse(char *s){ // p指向字符串头部 char *p = s ; // q指向字符串尾部 char *q = s ; while(*q) ++q ; q -- ; // 交换并移动指针,直到p和q交叉 while(q > p) { char t = *p ; *p++ = *q ; *q-- = t ; } return s ;}二 用递归的方式,需要给定逆序的区间,调用方法:Reverse(s, 0, strlen(s)) ;
// 对字符串s在区间left和right之间进行逆序,递归法char *Reverse( char *s, int left, int right ){ if(left >= right) return s ; char t = s[left] ; s[left] = s[right] ; s[right] = t ; Reverse(s, left + 1, right - 1) ;}三 非递归法,同样指定逆序区间,和方法一没有本质区别,一个使用指针,一个使用下标。
// 对字符串str在区间left和right之间进行逆序char *Reverse( char *s, int left, int right ){ while( left < right ) { char t = s[left] ; s[left++] = s[right] ; s[right--] = t ; } return s ;}
2. c语言逆序数怎么编程
在C语言中。先读取一个整数,然后每次获取整数的个位数。再把这个个位数从原来的数据去掉。把每次获得的个位数拼装成为一个新的整数。下面是相关的代码。
int
x,y=0;
scanf("%d",&x);
for(;x;x/=10)y=y*10+x%10;
printf("%d\n",y);
3. C语言中怎么求逆序
因为这个数字很长,而且开头允许以零开始,所以有必要使用字符串来保存这个数字。然后用两个变量分别指向它的第一个数字和最后一个数字,在使用一个循环判断这两个数字是否相同,如果相同,就把前面的标加一,并且把后面的下标减去一,直到前面的下标大于后面的下标,或者两个下标所指的数字不相同。只要退出的时候两个下标的数字不相同,原来的数字就不是幸运数字,否则他就是一个幸运数字。
4. C语言求逆序输出各位数字
思路:逆序输出一个整数,最简单的方法就是利用字符数组接收该整数,求出数组长度,依次从数组的高位到低位输出即可。
参考代码:
#include<stdio.h>
#include<string.h>
intmain()
{
chara[100];
inti,n;
gets(a);//输入整数字符数组接收
n=strlen(a);//求数组长度
for(i=n-1;i>=0;i--)//从数组高位到低位输出
printf("%c",a[i]);
return0;
}
/*
运行结果:
12345
54321
*/
5. C语言多组n个数,求逆序!大神快来!
//C:
#include<stdio.h>
intn,i,a[21];
intmain()
{
scanf("%d",&n);
while(n)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=n;i>1;i--)
printf("%d",a[i]);
printf("%d ",a[1]);
scanf("%d",&n);
}
return0;
}
//C++:(因为iostream速度太慢所以用cstdio)
#include<cstdio>
#defineREP(I,start,end)for(intI=start;I<=end;I++)
#definePER(I,start,end)for(intI=start;I>=end;I--)
usingnamespacestd;
intn,a[21];
intmain()
{
scanf("%d",&n);
while(n)
{
REP(i,1,n)
scanf("%d",&a[i]);
PER(i,n,2)
printf("%d",a[i]);
printf("%d ",a[1]);
scanf("%d",&n);
}
return0;
}
6. c语言求数组逆序
如果你直接用b[i]=b[10-1-i]; 这句的时候, 最后的结果会变成45654 数据会被覆盖了
因为你把b[9]的值赋值给b[0]的时候 会把b[0]的值覆盖了,所以要先把b[0]的值存在t里面
for(i=0;i<=10\2;i++) 你这个循环的条件是
i<=10\2 只循环5次。 t当然只是b0b1b2b3b4的值了
7. C程序逆序数求教
我们知道,减法是加法的逆运算,除法是乘法的逆运算,那么,加法是不是减法的逆运算呢,乘法是不是除法的逆运算呢?
关于这个问题,可以从运算的数学意义角度理解。
一般说运算都指代数运算,它是集合中的一种对应。对于集合A中的有序元素对a、b,有集合A中唯一确定的第三个元素c与它们对应,叫做集合A中定义了一种运算。(例如,(3,2)这对数按照某种法则与5相对应,这就是一种加法运算,3+2=5。如果这对数与6相对应,就是乘法运算,3×2=6。)
所谓逆运算,就是把c以及a、b中的一个当作已知,把a、b中的另一个当做所求的运算。这样看来,对于前面元素对a,b与c对应的运算来说,就存在两种逆运算。它的第一个逆运算是:对于元素对c、b,使元素a与它们对应;它的第二个逆运算是:对于元素对c、a,使元素b与它们对应。
如果一个运算满足交换律,即这个运算对于任意一对元素a、b或b、a,永远得到同一的结果,那么,这个运算的两个逆运算是一致的。也就是说,在这种情况下,这个运算有唯一的逆运算。
对于整数集来说,任意两个整数的加法运算满足加法交换律,加法算式中的两个加数都可以用“和减去一个加数等于另一加数”求出来,所以加法有唯一的逆运算——减法。 例如,数对(3,2)与5对应,确定加法运算后,已知3和5,可以用减法求出2,已知2和5也可以用减法求出3。
但是,每一个运算并不都有逆运算。例如,减法算式中的被减数和减数,只有被减数可以用“差与减数相加”这种加法运算得到,减数却不能用加法运算得到。例如,数对(3,2)与1对应确定减法运算后,已知2和1可以用加法求出3,但已知3和1,却不能用加法求出2。
所以不能说加法是减法的逆运算,也就不能说加法和减法互为逆运算。
同样道理,我们也不能说乘法是除法的逆运算,或者乘除法是互逆运算
8. 关于C语言求整数逆序数
这个题目犯不着用该数组的,
核心代码如下
intres=0;
while(x!=0)
{
res=res*10+x%10;
x=x/10;
}
9. C语言求逆序数
#include<stdio.h>
intmain()
{
intn,m=0;
scanf("%d",&n);
while(n)
{m=m*10+n%10;n/=10;}
printf("%d",m);
return0;
}
运行示例:
请自行对照。
10. C语言中怎么求一个数的反序数
不用求原来的数字到底是几位,直接用取余数乘10的方法就可以了。