Zeng-fh 2022-02-18 21:36 采纳率: 89.8%
浏览 39
已结题

这两段代码运行报错,请教一下是什么原因呀?

代码一

#include <stdio.h>
#include <string.h>
char *fun(char *s1,char *s2,char *r)
//功能:将两个长度相等的数字字符串当作两个加数,求其代表的数值之和并以字符串的形式存入r所指内存且返回 
{
    int len,cy=0,md;
    char *p,*q,*t;
    len=strlen(s1);
    p=s1+len-1;
    q=s2+len-1;
    t=r+len;
    *(t+1)='\0';//
    while(p>=s1)
    {
        md=*p-'0'+*q-'0'+cy;//
        if(md>=10)
           cy=1;
        else
           cy=0;
        *t=md%10+'0';
        p--;
        q--;
        t--;
    }
    if(cy==1)//
       *t='1';
    else
    {
        while(*r++=*++t);
    }
    return r;
}
void main()//报错     [Error] '::main' must return 'int'
{
    char s1[100],s2[100],s3[100];
    strcpy(s1,"65743");
    strcpy(s2,"85339");
    fun(s1,s2,s3);
    printf("%s+%s=%s\n",s1,s2,s3);
}// 

代码二

#include <stdio.h>
#include <string.h>
void fun(char *s0,char *s1,char *s2,char *s3)
//功能:将s0所指字符串分解成3个字符串,分别存入s1,s2,s3所指内存中
//分解的方法是,s1,s2,s3从s0中依次按顺序每隔3个字符取1个 
{//
    char *p1=s0,*p2=s0+1,*p3=s0+2;
    int len=strlen(s0),i=0,j=0,k=0;
    while(p1<s0+len||p2<s0+len||p3<s0+len)
    {
        if(p1<s0+len)
        {
            s1[i++]=*p1;
            p1=p1+3;
        }
        if(p2<s0+len)
        {
            s2[i++]=*p2;
            p2=p2+3;
        }
        if(p3<s0+len)
        {
            s3[i++]=*p3;
            p3=p3+3;
        }
    }
    s1[i]='\0';
    s2[j]='\0';
    s3[k]='\0';
}//
void main()//报错     [Error] '::main' must return 'int'
{
    void NONO();
    char s0[100],s1[40],s2[40],s3[40];
    printf("请输入一行字符串\n");
    gets(s0);
    fun(s0,s1,s2,s3);
    puts(s1);
    puts(s2);
    puts(s3);
    NONO();
}
void NONO()
{
    FILE *fp=fopen("out.dat","w");
    chars0[10][100]={"1234567890qazwsx","abcdefghij","0987654321plmokn","fsdjfsdlrj564342dsf","gfdklgjdsfl4754398",
    "zxcvbnmasdfg","asdfghjkl123","qwertyuiop456","qweasdzxc789","poiuytrewqwsxqaz"};
    //报错 [Error] 'chars0' was not declared in this scope
    //报错 [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11
    char s1[40],s2[40],s3[40];
    int i;
    for(i=0;i<10;i++)
    {
        fun(s0[i],s1,s2,s3);//报错     [Error] 's0' was not declared in this scope
        fprintf(fp,"s1=%s,s2=%s,s3=%s\n",s1,s2,s3);
    }
    fclose(fp);
}
  • 写回答

1条回答 默认 最新

  • 四海一叶秋 2022-02-18 22:21
    关注

    void main改int main。
    chars0[10][100]第一行错误改char s0[10][100]。
    第二行错误是你当前编译器的c++标准版本过低不支持这种声明方式,可能需要修改编译器参数。
    fun(s0[i],s1,s2,s3);问题上面解决了自然解决。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 修改了问题 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效