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的方法就可以了。