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

C\u8bed\u8a00\u7f16\u7a0b\uff0c\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

#include
#include
void input(char st[]);//\u5b9a\u4e49\u8f93\u5165\u51fd\u6570
void reverse(char st[]);//\u5b9a\u4e49\u53cd\u5e8f\u51fd\u6570
int main()
{
char s[20];
input(s);//\u8c03\u7528\u8f93\u5165\u51fd\u6570
printf("Original string: %s\n", s);//\u8f93\u51fa\u539f\u5b57\u7b26\u4e32
reverse(s);//\u8c03\u7528\u53cd\u5e8f\u51fd\u6570
printf("New string: %s\n", s);//\u8f93\u51fa\u53cd\u5e8f\u540e\u7684\u5b57\u7b26\u4e32
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//\u53cd\u5e8f\u51fd\u6570
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--);
}

\u6269\u5c55\u8d44\u6599\uff1agets()\u7528\u6cd5\uff1a
1\u3001gets() \u51fd\u6570\u662f\u4ece\u952e\u76d8\u8f93\u5165\u5b57\u7b26\u4e32\uff0c\u8be5\u51fd\u6570\u53ea\u6709\u4e00\u4e2a\u53c2\u6570\u3002\u53c2\u6570\u7c7b\u578b\u4e3a char* \u578b\uff0c\u5373 str \u53ef\u4ee5\u662f\u4e00\u4e2a\u5b57\u7b26\u6307\u9488\u53d8\u91cf\u540d\uff0c\u4e5f\u53ef\u4ee5\u662f\u4e00\u4e2a\u5b57\u7b26\u6570\u7ec4\u540d\u3002\u6253\u5f00\u7f16\u8f91\u5668\uff0c\u65b0\u5efa\u4e00\u4e2ac\u8bed\u8a00\u6587\u4ef6\uff0c\u5f15\u5165\u6807\u51c6\u5e93\u5e76\u65b0\u5efa\u4e3b\u51fd\u6570\uff1a

2\u3001gets() \u51fd\u6570\u7684\u529f\u80fd\u662f\u4ece\u8f93\u5165\u7f13\u51b2\u533a\u4e2d\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\u4e32\u5b58\u50a8\u5230\u5b57\u7b26\u6307\u9488\u53d8\u91cf str \u6240\u6307\u5411\u7684\u5185\u5b58\u7a7a\u95f4\uff0c\u8fd9\u91cc\u7684\u7a0b\u5e8f\u662f\u7528gets\u51fd\u6570\u8f93\u5165\u5b57\u7b26\u4e32\uff0c\u53ef\u4ee5\u770b\u5230\u4e0d\u50cfscanf\u90a3\u6837\u9700\u8981\u4f7f\u7528%\u53f7\uff0cgets\u51fd\u6570\u4e2d\u76f4\u63a5\u4f20\u5165\u5b57\u7b26\u4e32\u5373\u53ef\uff1a

3\u3001\u6700\u540e\u8fd0\u884c\u4e0b\u7a0b\u5e8f\uff0c\u8f93\u5165\u201ci love you\u201d\uff0c\u53ef\u4ee5\u770b\u5230gets\u51fd\u6570\u53ef\u4ee5\u76f4\u63a5\u8f93\u51fa\u7a7a\u683c\uff0c\u800cscanf\u51fd\u6570\u8f93\u51fa\u7a7a\u683c\u5219\u9700\u8981\u4f7f\u7528\u8f6c\u4e49\u5b57\u7b26\u5b9e\u73b0\uff0c\u56e0\u6b64gets\u51fd\u6570\u7684\u4f7f\u7528\u8981\u6bd4scanf\u7b80\u6d01\u7684\u591a\u3002\u4ee5\u4e0a\u5c31\u662fgets\u51fd\u6570\u4f7f\u7528\u65b9\u6cd5\u7684\u6f14\u793a\uff1a

\u4fee\u6539\u5982\u4e0b:

//---------------------------------------------------------------------------
#include
#include
void convert(char b[],char m[])
{int i,n;
n=strlen(b);
for(i=0,n--;n>=0;n--,i++)
m[i]=b[n];
}
void main()
{
int i;
char a[100],b[100]={0};
scanf("%s",&a);
convert(a,b);

printf("%s",b);
}


//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>
#define N 10 //可通过改变N 的值来改变输入字符串的长度
char a[30];
int i;
void main()
{
void Reverse(); //函数声明
printf("请输入字符串:");
scanf("%s",&a[i]);
printf("反转后的字符串:");
Reverse(); //函数调用
}

void Reverse() //函数定义
{
for(i=N;i>=0;i--)
printf("%c ",a[i]);
printf("\n");
}

Reverse是反转;当然,函数名你可以任意取
这个程序对初学者来说比较好,有函数调用的方法和实现过程!

#include <stdio.h>
void reorder(char* str)
{
char temp[100];
int i=0;
while(str[i]!='\0')
{
temp[i]=str[i];
i++;
}
for(int j=0;j<i;j++)
{
str[j]=temp[i-1-j];
}
}

void main()
{
char str[100]={'\0'};
printf("请输入一个字符串:");
scanf("%s",str);
reorder(str);
printf("倒序后的字符串是:%s\n",str);
}
我写个简单的,没有什么边界判断,字符串最长长度是100;
本来有其他安全的写法,不过现在写了你也看不懂,所以就这样吧。
VC6.0下测试通过
输入:hello
输出:olleh

问题很简单:你根本就没有翻转字符串!!!!
第一,你在调用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;
}
}

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

#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;
int i,j,k;
i=strlen(a);
for(j=0,k=i;j<=i;j++,k--)
d[k]=a[j];
return(d[100]);
}

void fnConvert(char a[80])
{
int i=0,j;
char t;
j=strlen(a);
while(i<j/2)
{
t=a[i];
a[i] = a[j-1-i];
a[j-1-i]=t;
i++;
}
a[j]= '\0'; /* 添加字符串结束符*/
}
void main()
{ char stridiom1[80];
printf("\nplease input the first idiom: ");
gets(stridiom1);
fnConvert(stridiom1);
printf("\nthe result is: %s",stridiom1);
getch();
}

  • 鍦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; ... 灞曞紑 楹荤儲...
  • 扩展阅读:学习c++的视频 ... 女孩为啥不推荐学软件工程 ... c++免费视频教程 ... 哪些人不适合学编程 ... c++语言入门自学 ... 为什么不建议孩子学编程 ... c十十编程教学视频 ... 免费的编程学习网站 ... 小学生学编程的十大忠告 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网