猿问

求指出错误啊!

#include<stdio.h>
#include<string.h>
void antitone(int a[],int n);
main()
{
int a[100],i,t,n;
for(i=0;a[i]!='\0';i++)
{
scanf("%d",&a[i]);
antitone(a,N);
for (i=0;a[i]!='\0';i++)
printf("%d\n",a[i]);
}
}
void antitone(int a[],int n)
{
int i,t;
for(i=0;a[i]!='\0';i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t; 
}
}

慕尼黑8549860
浏览 220回答 2
2回答

慕的地10843

我给大改了一下(也不在乎能不能被选为最佳了,嘿嘿)。输入字符串和整数都可以,要以英文逗号分隔,长度不要超过500。怕看不明白加了点注释,看不懂的可以问我:)#include<stdio.h>#include<string.h>int&nbsp;ParseStr(char&nbsp;(&szInput)[500],&nbsp;char&nbsp;*(&arrRet)[500]){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;nCount&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;szSeps[]&nbsp;=&nbsp;",";&nbsp;//&nbsp;键盘输入的整数用英文逗号分隔.&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*token&nbsp;=&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;=&nbsp;strtok(szInput,&nbsp;szSeps);&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(token!=NULL&nbsp;&&&nbsp;nCount<500/*防止越界*/)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;nLen&nbsp;=&nbsp;strlen(token);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*szToken&nbsp;=&nbsp;new&nbsp;char[500];&nbsp;&nbsp;//&nbsp;申请内存&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(szToken&nbsp;==&nbsp;NULL)&nbsp;//&nbsp;分配内存失败&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrRet[nCount++]&nbsp;=&nbsp;szToken;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(nLen&nbsp;<&nbsp;500)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(szToken,&nbsp;token);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strncpy(szToken,&nbsp;token,&nbsp;500-1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;szToken[500-1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//&nbsp;结束符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;=&nbsp;strtok(NULL,&nbsp;szSeps);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;nCount;}void&nbsp;antitone(char&nbsp;*(&arrParsed)[500],&nbsp;int&nbsp;n){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;nMid&nbsp;=&nbsp;n/2;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i<nMid;&nbsp;++i)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char*&nbsp;szTemp&nbsp;=&nbsp;arrParsed[i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrParsed[i]&nbsp;=&nbsp;arrParsed[n-1-i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrParsed[n-1-i]&nbsp;=&nbsp;szTemp;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;void&nbsp;PutoutResult(char&nbsp;*(&arrParsed)[500],&nbsp;int&nbsp;n){&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i<n;&nbsp;++i)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;>&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(",");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%s",&nbsp;arrParsed[i]);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");}void&nbsp;FreeArrayData(char&nbsp;*(&arrParsed)[500],&nbsp;int&nbsp;n)&nbsp;&nbsp;//&nbsp;释放内存{&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i<n;&nbsp;++i)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;arrParsed[i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrParsed[i]&nbsp;=&nbsp;NULL;&nbsp;&nbsp;&nbsp;&nbsp;}}void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;szInput[500]&nbsp;=&nbsp;{0};&nbsp;&nbsp;&nbsp;&nbsp;gets(szInput);&nbsp;&nbsp;//&nbsp;获取输入,以英文逗号分隔.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*arrParsed[500]&nbsp;=&nbsp;{0};&nbsp;&nbsp;//&nbsp;解析结果&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;nCount&nbsp;=&nbsp;ParseStr(szInput,&nbsp;arrParsed);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;逆序&nbsp;&nbsp;&nbsp;&nbsp;antitone(arrParsed,&nbsp;nCount);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;输出结果&nbsp;&nbsp;&nbsp;&nbsp;PutoutResult(arrParsed,&nbsp;nCount);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;释放内存&nbsp;&nbsp;&nbsp;&nbsp;FreeArrayData(arrParsed,&nbsp;nCount);}嘿嘿,附个测试结果吧:

沧海一幻觉

#include<stdio.h>#include<string.h>void antitone(int *m,int *n);void main(){int a[10],i;for(i=0;i<10;i++){scanf("%d",&a[i]);}for(i=0;i<5;i++)antitone(&a[i],&a[10-i-1]);for(i=0;i<10;i++)printf("%4d",a[i]);printf("\n");}void antitone(int *m,int *n){int t;t=*m;*m=*n;*n=t;}功能已经实现了!希望我的解答能带给你帮助!就是你最好不要给整型数组赋字符值,那样很容易出错,还有传数组给函数时最好用指针!先用了10个数测试了一下,已经没问题了!
随时随地看视频慕课网APP
我要回答