新手求教!!!

雀食 2021-01-23 05:00:32
这是做oj时候的问题。
#include <stdio.h>
int main(){
int a;
while(~scanf("%d",&a)){
int b[a],c[a];
for(int i=0;i<a;i++){
scanf("%d",&b[i]);
}
for(int i=0;i<a;i++){
c[i]=0;
}
for(int i=0;i<a-1;i++){
for(int j=i+1;j<a;j++){
if(b[i]==b[j])c[i]++;
}
}
int max=c[0];
for(int i=1;i<a;i++){
if(c[i]>max)max=c[i];
}
printf("%d",max+1);
}
return 0;
}
这个代码我电脑上是可以编译的,然后提交上去后就说编译错误,具体是这个样子的:
0_0_35177313_6881.c
0_0_35177313_6881.c(5) : error C2057: 应输入常量表达式
0_0_35177313_6881.c(5) : error C2466: 不能分配常量大小为 0 的数组
0_0_35177313_6881.c(5) : error C2133: “b”: 未知的大小
0_0_35177313_6881.c(5) : error C2133: “c”: 未知的大小。
我也不知道为什么求大佬教教我,感激
...全文
276 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2021-01-25
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main()
{
int a;
int *b, *c;

while(~scanf("%d",&a)) {
b = (int *)malloc(sizeof(int) * a);
c = (int *)malloc(sizeof(int) * a);
for(int i=0;i<a;i++) {
scanf("%d",&b[i]);
}
for(int i=0;i<a;i++){
c[i]=0;
}
for(int i=0;i<a-1;i++){
for(int j=i+1;j<a;j++){
if(b[i]==b[j])c[i]++;
}
}
int max=c[0];
for(int i=1;i<a;i++){
if(c[i]>max)max=c[i];
}
printf("%d",max+1);

free(b);
free(c);
}
return 0;
}


供参考~
仙人掌AA 2021-01-23
  • 打赏
  • 举报
回复
c99版本可以,也可以用内存分配函数 malloc calloc
qzjhjxj 2021-01-23
  • 打赏
  • 举报
回复
动态数组的修改如下,供参考:
#include <stdio.h>
int main(){
    int a;
    while(~scanf("%d",&a)){
         //int b[a],c[a];
         int *b = (int *)malloc(sizeof(int)*a);
         int *c = (int *)malloc(sizeof(int)*a);
         
         for(int i=0;i<a;i++){
            scanf("%d",&b[i]);
         }
         for(int i=0;i<a;i++){
            c[i]=0;
         }
         for(int i=0;i<=a-1;i++){ //for(int i=0;i<a-1;i++){
             for(int j=i+1;j<a;j++){
                if(b[i]==b[j])c[i]++;
             }
         }
         int  max=c[0];
         for(int i=1;i<a;i++){
            if(c[i]>max)max=c[i];
         }
         printf("%d",max+1);
         free(b);
         free(c);
    }

    return 0;
}
chxchxkkk 2021-01-23
  • 打赏
  • 举报
回复
c/c++ 要求数组的大小必须是常量值,所以int b[a],c[a];这样是不行的,如果想使用动态数组,可使用malloc分配内存 比如: int a; scanf("%d",&a); int b=malloc(sizeof(int)*a);这样的形式

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧