向用户询问1到9之间的数字。如果用户未输入1到9之间的数字,请反复询问一个整数值,直到他们输入为止。输入1到9之间的数字后,打印数组。给出数组-int array[] = { 4, 6, 7, 3, 8, 2, 1, 9, 5 }
;
#include<iostream>
int printArray(){
int arraySize,i;
int array[] = { 4, 6, 7, 3, 8, 2, 1, 9, 5 };
arraySize=sizeof(array)/sizeof(array[0]);
std::cout<<"The length of the array is:"<<" "<<arraySize<<"\n";
for(i=0;i<arraySize;i++){
std::cout<<array[i]<<"\n";
}
}
int main(){
tryAgain:
int x;
std::cout<< "Enter any number between 1 and 9"<<"\n";
std::cin>>x;
if(x<=9 && x>=1){
printArray();
}
else
goto tryAgain;
return 0;
}
答案 0 :(得分:0)
您在这里遇到的是未定义的行为,是由于未从应该返回filter isPalindrome (split ' ' userInput)
的函数main = do
userInput <- getLine
let splittedInput = split ' ' userInput
let palindromes = filter isPalindrome splittedInput
let output = concat (intersperse "\n" palindromes)
writeFile "file.txt" output
返回有效值引起的。
该标准解决了这个问题:
9.6.3返回语句
...
2. ...否则,从printArray
以外的函数的末尾流出会导致未定义的行为。
在GCC中使用int
选项进行编译会产生以下警告:
main
由于该函数仅打印数据,因此您应使用-Wall
而不是 warning: no return statement in function returning non-void [-Wreturn-type]
作为返回类型。
答案 1 :(得分:0)
goto
,而应该使用for
int printArray(){
行应为void printArray(){
,因为您不需要return
关注code
可能会起作用:
#include <iostream>
void printArray(){
int arraySize, i;
int array[] = { 4, 6, 7, 3, 8, 2, 1, 9, 5 };
arraySize = sizeof(array) / sizeof(array[0]);
std::cout << "The length of the array is:" << " " << arraySize << "\n";
for (i = 0; i < arraySize; ++i)
std::cout<<array[i]<<"\n";
}
int main(){
for (;;) {
std::cout << "Enter any number between 1 and 9"<<"\n";
int x;
std::cin >> x;
if(std::cin.fail()) {
std::cin.clear();
std::cin.ignore(1024, '\n');
continue;
}
if (x < 1 || x > 9)
continue;
printArray();
break;
}
return 0;
}