C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符 C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函...

C\u8bed\u8a00\u9898\u76ee\u5199\u4e00\u4e2a\u51fd\u6570\uff0c\u4f7f\u8f93\u5165\u7684\u4e00\u4e2a\u5b57\u7b26\u4e32\u6309\u53cd\u5e8f\u5b58\u653e\uff0c\u5728\u4e3b\u51fd\u6570\u4e2d\u8f93\u5165\u548c\u8f93\u51fa\u5b57\u7b26\u4e32\u2026

\u53ef\u4ee5\u4f7f\u7528string.h\u6807\u51c6\u51fd\u6570\u5417\uff1f
\u53ef\u4ee5\u7684\u8bdd \u8fd9\u6837\u505a
#include #include void Reverse_string(char *str){int len = strlen(str), i;char t;for(i = 0; i <= len / 2; i ++){t = str[i];str[i] = str[len - i - 1];str[len - i - 1] = t;}}int main(){char buffer[100];gets(buffer);Reverse_string(buffer);printf("%s\n", buffer);return 0;}

#include
#include
void printit(char *str,int length) //\u8fd4\u5e8f\u8f93\u51fa\u51fd\u6570
{

int i;
for(i=length-1;i>=0;i--) //\u4ece\u7ed9\u5b9a\u7684\u5b57\u7b26\u4e32\u7684\u6700\u540e\u4e00\u4f4d\u4f9d\u6b21\u5411\u524d\u904d\u5386\u5404\u5b57\u7b26
putchar(*(str+i)); //\u6bcf\u5411\u524d\u4e00\u4e2a\u5b57\u7b26\u5373\u6253\u5370\u8be5\u5b57\u7b26\uff0c\u76f4\u81f3\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e3a\u6b62\u3002
}
int main()
{ char str[80]=""; //\u5b9a\u4e49\u4e00\u4e2a\u957f\u5ea6\u4e3a80\u5b57\u8282\u7684\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u5e76\u521d\u59cb\u5316
gets(str); //\u4ece\u952e\u76d8\u4e2d\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32(\u9047\u56de\u8f66\u952e\u7ed3\u675f)
printit(str,strlen(str)); //\u8c03\u7528\u4e0a\u9762\u5b9a\u4e49\u7684\u51fd\u6570\u53cd\u5e8f\u8f93\u51fa\u5b57\u7b26\u4e32
printf("\n"); //\u8f93\u5165\u4e00\u4e2a\u56de\u8f66\u6362\u884c\u7b26\uff0c\u4f7f\u540e\u7eed\u8f93\u51fa\u80fd\u53e6\u8d77\u4e00\u884c
return 0;
}

#include <stdio.h>

#include <string.h>

void input(char st[]);//定义输入函数

void reverse(char st[]);//定义反序函数

int main()

{

char s[20];

input(s);//调用输入函数

printf("Original string: %s
", s);//输出原字符串

reverse(s);//调用反序函数

printf("New string: %s
", s);//输出反序后的字符串

return 0;

}

void input(char st[])

{

printf("Please enter string: ");

gets(st);

}

//反序函数

void reverse(char st[])

{

int n=strlen(st);

for (int i=0, j=n-1, t; i<(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);

}

扩展资料:

gets()用法:

1、gets() 函数是从键盘输入字符串,该函数只有一个参数。参数类型为 char* 型,即 str 可以是一个字符指针变量名,也可以是一个字符数组名。打开编辑器,新建一个c语言文件,引入标准库并新建主函数:

2、gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间,这里的程序是用gets函数输入字符串,可以看到不像scanf那样需要使用%号,gets函数中直接传入字符串即可:

3、最后运行下程序,输入“i love you”,可以看到gets函数可以直接输出空格,而scanf函数输出空格则需要使用转义字符实现,因此gets函数的使用要比scanf简洁的多。以上就是gets函数使用方法的演示:



问题很简单:你根本就没有翻转字符串!!!!
第一,你在调用char yuan(char a)后,用什么来接受它的返回值?对吧,在主函数中根本没有任何char组来接受它。你似乎可以将 gets(a);
后的语句改写成 a = yuan( a ); 然后输出。告诉你这也样行不同的,只因为接下来的第二点。
第二,你的yuan函数设计有问题。你犯了一个初学者很容犯的错误试图从被调用函数中返回一个数组(或指针)的值。要知道,被调用的函数编译后存储在堆栈当中:它在被调用时创建,结束调用时销毁。所以说,不能用它来返回数组(或指针)的值。

至此,你的提问已经解决。下面给出我的想法,
现在思考你要解决的问题:将一个字符串(或者说是字符数组)翻转。这就要求你必须为yuan函数传递个字符串参数a;然后就是翻转,但是翻转的字符串不会超出原字符串的长度,故而可设计用它自身将翻转值带出。可将翻转函数原型设计为 void yuan(char *a); 实现如下:
void yuan(char *a){
char temp;
int i;
int count;
count = strlen( a ) - 1; /*这里用count表示可用的最大下标,如当数组元素为5是,可用的最大下标应为4。明白这一点很重要,也很有意思*/
for(i = 0; i < count / 2; i++){
temp = a[i];
a[i] = a[count - i];
a[count - i] = temp;
}
}

再到这里似乎没什么话可说了,不过还是要给出几点建议:
第一,合理使用空白,是你的程序更具可读性;
第二,为设计标识符可以适当学习一下英语;
综上,在学习初期养成良好的编程风格很重要。
谨祝,
学习进步!

那个两次循环有问题,先每次循环完了都是将b 赋值成同一个值,到最后一次循环b会都复制成h

可以下面这个 合并下,不过感觉很啰嗦啊哈哈

void fun(char a[],char b[])

{  int n,i,j;

   n=strlen(a);

 for(j=n-1,i=0;j>=0,i<n;j--,i++)

    b[i]=a[j];

 b[i]='\0';

}



#include<stdio.h>
#include<string.h>
void printit(char *str,int length) //返序输出函数
{

int i;
for(i=length-1;i>=0;i--) //从给定的字符串的最后一位依次向前遍历各字符
putchar(*(str+i)); //每向前一个字符即打印该字符,直至第一个字符为止。
}
int main()
{ char str[80]=""; //定义一个长度为80字节的字符串数组,并初始化
gets(str); //从键盘中输入一个字符串(遇回车键结束)
printit(str,strlen(str)); //调用上面定义的函数反序输出字符串
printf("\n"); //输入一个回车换行符,使后续输出能另起一行
return 0;
}

...您这是用什么语言啊?C++的应该是这样的吧:(现写的,可能会有一点问题,但大体是这样的)
int main()
{
char str[40]; //假设40是存放的字符串最大值
char str2[40];
cin>>str; //连续输入字符串,以空格,回车结束
//字符串存储是以‘\0’结束
int i=0; //循环起点
while(str[i]!='\0') //判断是否是结束符,不是的情况下循环,是的情况下退出循环,i值就是字符串长度,也可以直接在括号中写sri[i]进行判断是否非空值
{
i++;
}
int length=i;
int j=0;
for(i=i-1;i=0;i--) //判断条件是i为0,循环条件是i--
{
str2[j]=str[i];
j++; //逆序拷贝
}
str2[j]='\0'; //结束符
cout<<str2; //输出,不过有些地方好像不支持直接输出,也可以用for循环逐个输出
}

以上==不过我也不是什么高手,程序要是有问题的话欢迎交流~大家一起进步~

  • 鍦c璇█涓浣杈撳叆涓涓鏁存暟?
    绛旓細鍦C璇█涓紝鍙互浣跨敤scanf鍜宲rintf鍑芥暟瀹炵幇鏁存暟鐨勮緭鍏ヨ緭鍑恒備互涓嬫槸鏁存暟鐨勭ず渚嬩唬鐮侊細鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戜滑棣栧厛瀹氫箟浜嗕竴涓暣鍨嬪彉閲弉um锛岀劧鍚庝娇鐢╬rintf鍑芥暟鎻愮ず鐢ㄦ埛杈撳叆涓涓鏁存暟銆傛帴鐫锛屼娇鐢╯canf鍑芥暟璇诲彇鐢ㄦ埛杈撳叆鐨勬暣鏁帮紝骞跺皢鍏跺瓨鍌ㄥ埌num鍙橀噺涓傛渶鍚庯紝浣跨敤printf鍑芥暟杈撳嚭鐢ㄦ埛杈撳叆鐨勬暣鏁般♡♡ 鏈...
  • 鍐欎竴涓嚱鏁,杈撳叆涓涓崄鍏繘鍒剁殑鏁,杈撳嚭鐩稿簲鐨勫崄杩涘埗鏁般傜敤c璇█缂栫▼...
    绛旓細include<stdio.h> include<math.h> include<string.h> int main(){ char a[10];void convert(char a[]);printf("璇杈撳叆鍗佸叚杩涘埗鏁:");gets(a);//杈撳叆鍗佸叚杩涘埗鏁 convert(a);return 0;} void convert(char a[]){ int n,i,num=0;n=strlen(a);for(i=n-1;i>=0;i--){ if(a>...
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏鐨勪竴涓瓧绗︿覆鎸夊弽搴忓瓨鏀,鍦ㄤ富鍑芥暟涓緭鍏ュ拰...
    绛旓細鍑芥暟澹版槑鏈濂芥斁鍦╩ain鍓嶉潰 scanf("%s",a); //杩欏彞鏀规垚杩欐牱 瀛愬嚱鏁颁腑鐨勬暟缁刟鍜宮ain鍑芥暟涓殑鏁扮粍a, 骞朵笉鏄悓涓涓鏁扮粍 include <stdio.h>#include <stdlib.h>#define N 10void fanzhuan(char* a);int main() {int i;char a[N]={'\0'};printf("璇杈撳叆瀛楃涓:");scanf("%s",a)...
  • 鍏充簬c璇█,鍐欎竴涓嚱鏁,浣胯緭鍏鐨勪竴涓瓧绗︿覆鎸夊弽搴忓瓨鏀,鍦ㄤ富鍑芥暟涓緭鍏ュ拰...
    绛旓細"please enter a string:\n"); //for(i=0;i<=19;i++) gets(str);// oppose(str); //for(i=0;i<=19;i++) puts(str);// return 0;}void oppose(char string[20]){char *p=string,*q=string+strlen(string)-1,t;while(p...
  • C璇█ 鍐欎竴涓嚱鏁 杈撳叆涓涓崄鍏繘鍒舵暟 杈撳嚭鐩稿簲鐨勫崄杩涘埗
    绛旓細include<string.h> include<math.h> / 鍑芥暟锛歝onvert 鍔熻兘锛氬崄鍏繘鍒惰浆鍗佽繘鍒 / void conver(char arr[]){ int i,j=0,k=0,sum=0,n=strlen(arr);int num[100];for(i=0;i<n;i++){ switch(arr){ case'A':num[j++]=10;break;case'B':num[j++]=11;break;case'C':num[j++]...
  • C璇█璁捐涓涓嚱鏁,杈撳叆涓瀛楃涓,閫愪釜閲嶅杈撳嚭,渚嬪杈撳叆abc,杈撳嚭aa
    绛旓細include <stdio.h>int main(void){ char temp = 0; printf("璇杈撳叆瀛楃涓:"); while((temp = getchar()) != '\n') for(int i = 0; i < 2; ++i) printf("%c",temp); printf("\n"); return 0;} ...
  • 鐢C璇█鍐欎竴涓嚱鏁,瑕佹眰杈撳叆涓1鏃,杈撳嚭涓2;杈撳叆涓2鏃,杈撳嚭涓1.
    绛旓細include<stdio.h> main(){ int x;scanf("%d",&x);printf("%d\n",(x==1)?2:1);}
  • C璇█缂栧啓涓涓鑷富鍑芥暟,瀹炵幇杈撳叆涓や釜鏁,閫氳繃璋冪敤A鍜孊缂栧啓鐨勫嚱鏁,姹傚嚭涓...
    绛旓細鍙傝冧唬鐮佸涓:include<stdio.h> double add(double x, double y){ return x+y;} double sub(double x, double y){ return x-y;} int main(){ double a,b;scanf("%lf%lf",&a,&b);printf("%.2lf\n",add(a,b));printf("%.2lf\n",sub(a,b));return 0;} ...
  • 鍦C璇█涓,鎬庢牱瀹氫箟涓涓嚱鏁,浣垮緱浠绘剰杈撳叆涓涓暣鏁,鑻ヤ负姝f暟,鍒欒緭鍑...
    绛旓細void Positive(int m){ int m,n;printf("璇杈撳叆涓涓鏁存暟锛歕n");scanf("%d",&m);if(m>0)printf("杩欎釜鏁存暟涓猴細%d",m);else Positive(n);} 涓昏鐢ㄤ簡閫掑綊鐨勬濇兂锛岄殢鎵嬪啓鐨勶紝搴旇鍙互杩愯锛屼笉琛岀殑璇濊拷闂
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏鐨勪竴涓瓧绗︿覆鎸夊弽搴忓瓨鏀,鍦ㄤ富鍑芥暟涓緭鍏ュ拰...
    绛旓細#include <stdio.h> #include <string.h> void main() {char yuan(char a[100]); char a[100]; printf("璇杈撳叆涓涓插瓧姣峔n"); gets(a); yuan(a); printf("鍙嶈浆鍚庣殑瀛楁瘝涓蹭负\n"); puts(a); } char yuan(char a[100]) {char d[100]; char f; ... 灞曞紑 楹荤儲...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网