#include <iostream>
using namespace std;
/*
*
*/
int main() {
int k, in[k],reversea[k],i,m,n;
cin>>k;
for (i=0;i<k;i++){
cin>>in[i];
}
for (m=k-1;m>=0;m--){
for (n=0;n<k;n++){
in[m]=reversea[n];
}
}
for(i=0;i<k;i++){
cout<<reversea[i];
}
return 0;
}
我甚至在开始调试之前就不知道它为什么会出现分段错误。我在计算k数字数组中的1,5和10的频率时编译另一个,它说同样的事情...... 这是另一个:
#include <iostream>
using namespace std;
int main() {
int k,i,m,n,count5,count1,count10;
int input[k];
cin>>k;
for (i=0;i<k;i++){
cin>>input[i];
}//input all the numbers
for(i=0;i<k;i++){
if (input[i]=1){
count1++;
}
if (input[i]=5){
count5++;
}
if (input[i]=10){
count10++;
}
}
cout<<count1<<"\n"<<count5<<"\n"<<count10<<"\n";
return 0;
}
请帮帮我。感谢。
答案 0 :(得分:5)
在这一行
int k, in[k],reversea[k]
如果未初始化k
,您应该如何使用k
元素初始化数组?必须在编译时而不是运行时中知道数组的大小。如果在运行时才知道k
,请使用std::vector
int k;
std::cin >> k;
std::vector<int> in(k);
std::vector<int> reversea(k);
答案 1 :(得分:3)
您的程序都有两个主要错误。
创建数组时需要知道数组的大小。在您的代码中,k仍然未初始化,您使用此值作为数组的大小。相反,将其更改为
int k,i,m,n;
cin >> k;
int in[k];
int reversea[k];
在反转数组时,您应该使用in中的值填充reversea,而不是相反。此外,你不需要2个循环,只需使用1个循环。
for (m=k-1; m>=0; m--){
reversea[m] = in[k-1-m];
}
在第二个程序中,您需要在创建数组输入[k]之前再获取k的值。
您正在使用=而不是==来测试相等性。从
更改您的代码if (input[i]=1){
到
if (input[i] == 1) {