#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int m,ji=0,ou=0;
for(int i=0;i<10;i++)
{
scanf("%d",&m);
if(m%2==0)
{
if(ou<m)
ou=m;
}
if(m%2!=0)
{
if(ji<m)
ji=m; }
}
printf("%d %d",ji,ou);
int n;
for(n>=10&&n<=1000;n<5;n++)
{
int a[n];
cin>>a[n];
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(a[i]>a[j])
{
int k;
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
}
cout<<endl;
for(int w=0;w<5;w++)
cout<<a[w]<<" ";
return 0;
}
显示
,该怎么改 ?
(啊 。.*,改不出来,我要风了o((>ω< ))o)
这个意思是你的a没有定义,代码应该这样写:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,odd=0,even=0;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]%2==1) odd=max(odd,a[i]);
else even=max(even,a[i]);
}
sort(a+1,a+n+1);
cout<<odd<<" "<<even<<endl;
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}
有啥C++上的问题都可以问我哈
在循环里面定义的变量到外面就会失效,把定义语句放到外面。而且你的 n 没有赋值,for 循环根本无法运行。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int m,ji=0,ou=0,a[1005];
for(int i=0;i<10;i++)
{
scanf("%d",&m);
if(m%2==0)
{
if(ou<m)
ou=m;
}
if(m%2!=0)
{
if(ji<m)
ji=m; }
}
printf("%d %d",ji,ou);
int n;
cin >> n;
for(;n>=10&&n<=1000;n++)
{
cin>>a[n];
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(a[i]>a[j])
{
int k;
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
}
cout<<endl;
for(int w=0;w<5;w++)
cout<<a[w]<<" ";
return 0;
}
...
int n;
int a[n];
for (int i = 0; i < n; i++)
cin >> a[i];
for(n>=10&&n<=1000;n<5;n++)
{
for(int i=0;i<5;i++)
...
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我注意到代码中存在一些问题。
问题1: 使用了既有scanf
又有cin
,这两种输入方法是不兼容的,应该只使用其中一种。
问题2: 变量n
没有初始化,需要给它一个初始值。
问题3: 循环条件错误,应该是n<=1000
,而不是n>=10 && n<=1000
。
问题4: 循环条件错误,n<5
会导致循环无法执行。
问题5: 数组a
的大小应该是常量大小,而不是变量大小。
问题6: 在第二个循环中,应该先读取所有的n
个数,然后再进行排序。
下面是修改后的代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int m, ji=0, ou=0;
for (int i=0; i<10; i++)
{
cin >> m;
if (m%2==0)
{
if (ou < m)
ou = m;
}
if (m%2 != 0)
{
if (ji < m)
ji = m;
}
}
cout << ji << " " << ou;
int n;
cin >> n;
int a[1000]; // 假设数组大小最大为1000
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{
int k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
cout << endl;
for (int w = 0; w < n; w++)
cout << a[w] << " ";
return 0;
}
以上代码已经修复了存在的问题,并可以得到预期的输出结果。