为了账号安全,请及时绑定邮箱和手机立即绑定

求指出错误啊!

求指出错误啊!

C++
慕尼黑8549860 2023-01-03 17:13:09
#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; }}
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

我给大改了一下(也不在乎能不能被选为最佳了,嘿嘿)。

输入字符串和整数都可以,要以英文逗号分隔,长度不要超过500。

怕看不明白加了点注释,看不懂的可以问我:)


#include<stdio.h>#include<string.h>int ParseStr(char (&szInput)[500], char *(&arrRet)[500]){    int nCount = 0;     char szSeps[] = ","// 键盘输入的整数用英文逗号分隔.    char *token = NULL;    token = strtok(szInput, szSeps);    while (token!=NULL && nCount<500/*防止越界*/)    {        int nLen = strlen(token);        char *szToken = new char[500];  // 申请内存        if (szToken == NULL) // 分配内存失败            break;         arrRet[nCount++] = szToken;        if (nLen < 500)            strcpy(szToken, token);        else        {            strncpy(szToken, token, 500-1);            szToken[500-1] = 0;   // 结束符        }         token = strtok(NULL, szSeps);    }     return nCount;}void antitone(char *(&arrParsed)[500], int n){    int nMid = n/2;    for (int i=0; i<nMid; ++i)    {        char* szTemp = arrParsed[i];        arrParsed[i] = arrParsed[n-1-i];        arrParsed[n-1-i] = szTemp;    }} void PutoutResult(char *(&arrParsed)[500], int n){    for (int i=0; i<n; ++i)    {        if (i > 0)            printf(",");        printf("%s", arrParsed[i]);    }    printf("\n");}void FreeArrayData(char *(&arrParsed)[500], int n)  // 释放内存{    for (int i=0; i<n; ++i)    {        delete arrParsed[i];        arrParsed[i] = NULL;    }}void main(){    char szInput[500] = {0};    gets(szInput);  // 获取输入,以英文逗号分隔.     char *arrParsed[500] = {0};  // 解析结果    int nCount = ParseStr(szInput, arrParsed);     // 逆序    antitone(arrParsed, nCount);     // 输出结果    PutoutResult(arrParsed, nCount);     // 释放内存    FreeArrayData(arrParsed, nCount);}

嘿嘿,附个测试结果吧:


查看完整回答
反对 回复 2023-01-06
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

#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个数测试了一下,已经没问题了!

查看完整回答
反对 回复 2023-01-06
  • 2 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信