當前位置:首頁 » 編程語言 » c語言字元倒序輸出字元串

c語言字元倒序輸出字元串

發布時間: 2022-04-19 05:03:12

c語言遞歸法把字元倒序輸出

#include <stdio.h>

#include <string.h>

#define N 1//這里的1可以改,改成10同時可以玩10個串串


void printfmm(char *s,int len){

if(len==0){printf("%c ",s[len-1]);return;}

else {printf("%c",s[len-1]);printfmm(s,len-1);}

}


void main() {

char str[N][30],t;

int i,s[52]={0},j;

printf("上串串:");

for(i=0;i<N;i++)

gets(str[i]);

for(i=0;i<N;i++)

printfmm(str[i],strlen(str[i]));


}

② 用c語言倒序輸出字元串

思路:
用一個足夠長的字元數組來接受用戶的輸入,然後從最後數組最後一個位置開始輸出字元。
代碼如下:
#include<stdio.h>
#include<string.h>
#defineBUFFER1024/*定義常量BUFFER,值為1024,作數組長度*/
intmain(void)
{
inti;
chara[buffer];
gets(a);/*將用戶的輸入存進字元數組*/
for(i=strlen(a)-1;i>=0;i--)/*從數組的最後位置開始輸出字元*/
printf("%c",a[i]);/*以字元的格式依次顯示每個字元*/
printf(" ");
return0;
}
程序運行截圖如下:

③ c語言 倒序輸出字元串

您好,一個漢字佔用兩個位元組(擴展ASCII碼),而getchar()每次只能讀入一個位元組,因此讀入漢字時,則需要用gets()函數。
倒敘輸出漢字串時,有兩種方法,一是從字元串末端開始,每次輸出兩個位元組,二是直接漢字將字元串在數組中倒置,然後再用puts()函數直接輸出。
以上兩種方法都有局限性,一旦含有非漢字字元,極有有可能造成亂碼。
#include <stdio.h>
#include <string.h>
unsigned char *InverseStr(unsigned char t[],unsigned char s[]) {
int i,j,len = strlen((char *)s);
for(i = len - 1,j = 0; i >= 0; --i,++j) {
if(s[i] > 0X7F) { // 是漢字
t[j++] = s[i - 1];
t[j] = s[i];
--i;
}
else t[j] = s[i];
}
t[j] = '\0';
return t;
}
int main() {
unsigned char s[] = "C語言char數據類型練習";
unsigned char t[25];
printf("s = \"%s\"\n",s);
printf("t = \"%s\"\n",InverseStr(t,s));
return 0;
}

④ 用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語言字元串逆序輸出。

#include<stdio.h>
#include<string.h>

intmain()
{
inti;
intstr_len;
charstr[81];
gets(str);
str_len=strlen(str);
//str_len-1就是最後一個元素的下標不理解的話可以想想"abc"長度3最後c的下標是2理解了吧
//然後一直自減到i=0也就是第一個字元那麼下面的for循環的意思就是
//從最後一個字元逐個倒著輸出這個字元串的元素
for(i=str_len-1;i>=0;i--)
{
printf("%c",str[i]);
}

return0;
}

⑥ 請教C語言字元串倒序輸出

#include<stdio.h>
#include<string.h>
void main()
{
char string1[200]; //用於存放輸入的字元串
char string2[200]; //用於存放倒序後的字元串
int invertion(char *ch1, char *ch2); //聲明函數
printf("Please input a sentences:\n");
gets(string1); //這里不要用scanf,因為scanf遇到空白符就會結束
printf("Your inputed sentences is:%s\n", string1);

invertion(string1, string2);
printf("The invertion sentences is:%s\n", string2);
getchar();
}

int invertion(char *ch1, char *ch2)/*char1 接收實參傳過來的原字元串指針 char2 接收倒序後的新字元串返回主函數*/
{
int count = 1,num=0;
char *ch=ch1;
for(;*ch1!='\0';ch1++)// 統計單詞個數
{
if(*ch1==' ')
count++; //單詞數等於空格數加1,前面把count初始化為1就是這個原因
if(*ch1==' '&&*(ch1+1)==' ') //防止單詞之間有2個空格符而多計數了一個單詞數
count--;
}
printf("count = %d\n", count);
ch1=ch1-1;//前面的ch1經過循環之後已經指向字元串的結束標志'\0',這里減1是為了讓它指向字元串的最後一個字元
while(ch1>=ch)//讓ch1從指向string1的最後一個字元開始往前遞減,當減到字元串的首個字元時結束
{ int j=num; //保存num,後面要用到這個數
if(*ch1!=' ')//記錄每個單詞的長度 ,以空格符作為標志
num++;
else // 知道了每個單詞的長度之後,就可以用循環將字元以單詞為單位寫入數組string中,這樣的話單詞內就不會倒序了
{
for(int i=1;i<=j;i++,num--)
*(ch2-num)=*(ch1+i);
*ch2=*ch1;
}
ch1--;
ch2++;
}
for(int i=1;i<=num;i++,ch2++)//因為string1的第一個單詞前沒有空格符,肯定輸不出來,所以單獨用一個循環將其輸出
*(ch2-num)=*(ch1+i);
*ch2='\0'; //string2的結束標志
}

這是我做了修改之後的程序,看看符不符合要求!!
你的那個定義的變數太多,很混亂!循環語句太亂了,if判斷條件與循環條件不正確
已經做了修改,看符合要求不,不行的話,再說!!!
又做了修改了,看符合要求不??
不會吧,我調試通過還運行了!!不然怎麼會發上來啊!!至於演算法問題我給注釋吧,你看看!!

⑦ C語言關於字元倒序輸出

為什麼我用你的程序測試是正常的?
你的程序邏輯搞復雜了,我給你改一個版本:
#include
int
main()
{
int
i=5;
void
converse(int
n);
printf("Input
5
characters:");
converse(i);
printf("\n");
return
1;
}
void
converse(n)
{
char
next;
if(n
==
0)
return;
next=getchar();
converse(n-1);
putchar(next);
}
記住你輸入的任何字元都會算入5個之內,包括空格,換行,table等

⑧ c語言怎麼把字元串倒序

反序方法見 下面 函數 void op(char *s). 主函數是調用的例子。
#include <stdio.h>
void op(char *s){
int i,k;
char c;
k = strlen(s);
for (i=0;i<k/2;i++){c=s[i];s[i]=s[k-i-1];s[k-i-1]=c;};
};

int main()
{
char s[200];
printf("input one line string:\n");
gets(s);
op(s);
printf("%s\n",s);
return 0;
}
輸入:abc123
輸出:321cba

⑨ C語言:輸入一個字元串,然後逆序輸出

可以將整數當做字元串(字元串長度不超過10)接收,然後反向輸出字元數組元素即可。

字元串實際長度可以用strlen函數來計算。

方法程序如下:

#include<stdio.h>

#include<string.h>

main()

{char a[10];int i,j;

scanf("%s",a);

j=strlen(a);

for(i=j-1;i>=0;i--)

printf("%c",a[i]);

printf(" ");}

(9)c語言字元倒序輸出字元串擴展閱讀:

C語言高效編程技巧:

一:以空間換時間

計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題

二:數學方法解決問題

數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。

三:使用位操作

實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。

在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。

⑩ c語言關於 字元串倒序並輸出

for
(i
=
0;
i
<
len
;
i++)
{
a1[i]
=
a[len
-
i
-
1];
//
這樣寫整個轉了一圈,而且數據被破壞了,你沒有先保存原a[i]的值,丟了!
}
for
(i
=
0;
i
<
len
/
2;
i++)
這是正確寫法,前半部分與後半部分交換!!
{
temp
=
a[i];
//保存
a[i]
=
a[len
-
i
-
1];
後面的移前面
a[len
-
i
-
1]
=
temp;
//將前面的保存的數據,移到後面
}

熱點內容
我的世界伺服器倒計時清理指令 發布:2024-04-23 14:21:14 瀏覽:465
五班資料庫 發布:2024-04-23 13:59:57 瀏覽:797
在c語言中數字029是一個 發布:2024-04-23 13:52:13 瀏覽:740
我的世界電腦版伺服器怎麼禁足 發布:2024-04-23 13:24:49 瀏覽:547
y壓縮包 發布:2024-04-23 12:41:20 瀏覽:166
內網互相訪問 發布:2024-04-23 12:36:23 瀏覽:319
安卓國際服在哪裡看賬號 發布:2024-04-23 12:30:29 瀏覽:299
android開發伺服器 發布:2024-04-23 12:24:42 瀏覽:237
騰訊雲個人伺服器 發布:2024-04-23 12:24:40 瀏覽:803
debian下載源碼 發布:2024-04-23 12:20:43 瀏覽:479