c-我必须编写一个程序,接受n个整数并显示数组的阶数



在过去的一个小时里,我一直在尝试对其进行编码,但我一直在获得"分割误差";。我对C还很陌生,所以请不要太苛刻。有人能帮忙吗?

这是我的代码:

输入:4 2 4 2 2 5 6输出:3

#include<stdio.h>
#include<stdlib.h>
int degreeOfArray(int arr[], int n)
{
int maxnum = -100000;
int currentN = 0;
int res;
for(int i = 0; i < n; i++)
{
currentN = 0;
for(int j = 0; j < n; j++)
{
if(arr[i] == arr[j])
{
currentN++;
}
}
if(currentN > maxnum) /*if the current is greater than max, current is max*/
{
maxnum = currentN;
res = arr[i];
}
}
return res;
}
int main(int argc, char**argv)
{
argv++;
int n = argc - 1;
int arr[n];
for(int i = 0; i < n; i++)
{
arr[i] = atoi(argv[i + 1]);
}
printf("%dn", degreeOfArray(arr, n));
}

这有点顽皮:

int main(int argc, char**argv)
{
argv++;
int n = argc - 1;
int arr[n];
for(int i = 0; i < n; i++)
{
arr[i] = atoi(argv[i + 1]);
}
printf("%dn", degreeOfArray(arr, n));
}
  • Argc为4
  • 您增加argv(这很顽皮(
  • n是3
  • arr的值从[0]到[2]
  • 您从0..2循环(这很好(
  • 您将arr[i]设置得很好,但调用atoi(argv[i+1](是个问题

I将达到2。所以你在打argv[3]。如果你没有增加argv,那也没关系。

所以要么去掉那里的i+1,要么不增加argv

最新更新