本文目錄一覽:
- 1、C語言中怎麼求逆序
- 2、C語言-逆序輸出
- 3、用C語言編程:將一個數組逆序輸出
- 4、用C語言寫 字元串逆序輸出
- 5、C語言簡單逆序程序
C語言中怎麼求逆序
因為這個數字很長,而且開頭允許以零開始,所以有必要使用字元串來保存這個數字。然後用兩個變數分別指向它的第一個數字和最後一個數字,在使用一個循環判斷這兩個數字是否相同,如果相同,就把前面的標加一,並且把後面的下標減去一,直到前面的下標大於後面的下標,或者兩個下標所指的數字不相同。只要退出的時候兩個下標的數字不相同,原來的數字就不是幸運數字,否則他就是一個幸運數字。
C語言-逆序輸出
①要求
將正整數或負整數
從個位開始逆序輸出。
涉及三個變數,
n是原數,
m用於儲存提取的個位數,
y用於儲存重新組合的逆序數。
~
②定義函數
#include stdio.h
int fun(int n)
{int m,y} ;
/*給y賦初值,組合數在組合之前為0。*/
y=0;
/*給m賦初值,將原數n的絕對值賦值給m。
我試了,也可以直接m=n,刪除y=(n=0)?y:-y,結果一樣有負號,絕對值具體還有什麼用,等待大神解答。*/
if(n=0)m=n;
else m=-n;
/*當m不為0時,循環繼續。
當m為0時,即提取到只剩一位數時,m=m/10=0,循環結束。*/
while(m!=0)
{y=y*10+m%10;
/*提取個位:m%10。
已經提取個位升為十位:y乘10。
逆序組合數:y。*/
m=m/10;}
/*降位提取個位:m/10
不斷除10取整,屏蔽個位;
不斷將十位降為個位,再提取;
直到只剩一位數,循環結束。*/
y=(n=0)?y:-y;
/*將負數的負號恢復。*/
return y;
}
③主函數
{int m1,m2;
scanf(“%d%d”,m1,m2);
printf(“%d的逆序是%d\t”,m1,fun(m1));
printf(“%d的逆序是%d\t”,m2,fun(m2));
return 0;
}
④思路整理
1.輸入原數:n
2.求絕對值:m=|n|
3.提取個位:m%10
4.逆序組合:y=y*10+m%10
5.高位降位:m/10
6.恢復負號:y=(n=0)?y:-y
用C語言編程:將一個數組逆序輸出
從最後一個元素,逆向遍歷到數組的0元素,逐一輸出即可實現。
1、創建數組;
2、輸入值;
3、逆序遍歷輸出數組。
代碼:int main(){ int a[10]; int i;
for(i = 0; i 10; i ++)
scanf(“%d”,a+i);
for(i = 9; i = 0; i –)
printf(“%d “, a[i]);}
擴展資料:
將一個數組逆序輸出。
1、程序分析:用第一個與最後一個交換。
2、程序源代碼:
#define N 5
main()
{ int a[N]={9,6,5,4,1},i,temp;
printf(” original array: “);
for(i=0;i printf(”%4d”,a[i]);
for(i=0;i {temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf(” sorted array: “);
for(i=0;i printf(”%4d”,a[i]);}
參考資料:百度百科 c語言
用C語言寫 字元串逆序輸出
逆序輸出有很多種,具體的實現方法取決於你題目的要求
1. 如果只是要求逆序輸出,那麼可以採用類似的方法:
void reverse(char *s)
{
if(*s==’\0′)
return;
reverse(s+1);
printf(“%c”,*s);
}
這種方法在s很長的情況下會一直遞歸到底,不是很好。
2. 如果需要將字元串整個逆序在函數外面輸出,那麼可能希望採用返回字元串指針的方式;實現如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1; //p是一個靜態變數,指向當前遞歸層處理的字元串尾,而s指向字元串頭
if(s p)
{
char c = *p; //交換頭尾字元
*p = *s;
*s = c;
p–; //尾向前挪一個
reverse(s+1); //相當於頭向後挪一個
}
return s;
}
3.1 當然,有的時候,並不需要reverse函數本身遞歸,而是可以藉助一些輔助的遞歸函數,比如說:
void reversehelp(char * head, char * end)
{
if (head end)
{
char c = *head;
*head = *end;
*end = c;
reversehelp(++head, –end);
}
}
然後在調用時像這樣調用:
char * reverse(char * s)
{
char * end = s + strlen(s) – 1;
reversehelp(s, end);
return s;
}
3.2 類似的輔助函數還可以採用一個字元串指針和一個長度參數的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n 1 )
{
char c = s[n-1];
s[n-1] = s[0];
s[0] = c;
reversehelp( s+1, n-2 );
}
}
然後在調用時如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) );
return s;
}
C語言簡單逆序程序
演算法沒有問題,只是
for(i=0;in-1;i++);
{
for(int
j=0;jn-i-1;j++);
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
去掉for循環之後的分號就好了
分號放在for循環之後,循環就只執行一次了~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/184871.html