c語言倒序輸出單詞
Ⅰ c語言 單詞倒序輸出
改好了
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void fun(char a[],char b[])
{int i; // j多寫了
for(i=strlen(a)-1;i>=0;i--)
if((i==0||!isalpha(a[i-1]))&&isalpha(a[i]))
{strcat(b,&a[i]);
strcat(b," "); // 這樣寫即可
if(i) // i == 0時不能執行下步操作; 沒有這句在vc2005等嚴謹的ide中調試時會報錯
a[i-1]=0;
}
}
void main(){
char a[]="i am you";
char b[10];
int i;
for(i=0;i<10;i++)
b[i]=0;
puts(a);
fun(a,b);
puts(b);
}
順便說下 回答者: jiankunsmile - 助理 三級 的根本就是亂搞..
日本人也叫人...
Ⅱ 請教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判斷條件與循環條件不正確
已經做了修改,看符合要求不,不行的話,再說!!!
又做了修改了,看符合要求不??
不會吧,我調試通過還運行了!!不然怎麼會發上來啊!!至於演算法問題我給注釋吧,你看看!!