检查用户在数组中输入的元素的正性
Checking the positivity of elements entered by the user in an array
我有一个程序要求用户输入将分配给数组的元素。但我想检查输入的数字是正数还是负数。如果有负数程序应该警告用户并要求用户再次输入正数。我写了我的代码,但它进入了无限循环。
怎样才能正确呢?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main()
{
int A[MAX] = {};
int n,jj;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);
for (jj=0; jj<n; jj++)
{
printf(" enter the %d. number\n", (jj+1));
scanf("%d",&A[jj]);
while(A[jj]<=0){
printf("Please enter only positive numbers");
}
}
return 0;
}
对于初学者来说,这个初始化使用一个空的花括号列表
int A[MAX] = {};
在C中不正确。你必须写
int A[MAX] = { 0 };
显然这个循环
while(A[jj]<=0){
printf("Please enter only positive numbers");
}
当A[jj]
不是正数时,是一个无限循环。所以你所做的就是你得到的。
你可以这样写
for (jj=0; jj<n; jj++)
{
printf(" enter the %d. number\n", (jj+1));
do
{
scanf("%d",&A[jj]);
if ( A[jj]<=0 )
{
printf("Please enter only positive numbers");
}
} while ( A[jj] <= 0 );
}
死循环的原因是因为使用了while(A[jj]<=0)
问题可以通过以下两步解决:
- 将用户输入读入临时变量。
- 将临时变量分配给数组元素,仅当值为正数时。
这是工作代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main() {
int A[MAX] = {};
int n, jj, temp = 0;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);
for (jj = 0; jj < n; jj++) {
printf("Enter the # %d number : ", (jj+1));
scanf("%d",&temp);
if (temp < 0) {
printf("Negative number will not be accepted. Please try again\n");
--jj;
continue;
}
A[jj] = temp;
}
return 0;
}
输出:
How many numbers do you want to enter?
3
Enter the # 1 number : 1
Enter the # 2 number : -2
Negative number will not be accepted. Please try again
Enter the # 2 number : 2
Enter the # 3 number : 3
我有一个程序要求用户输入将分配给数组的元素。但我想检查输入的数字是正数还是负数。如果有负数程序应该警告用户并要求用户再次输入正数。我写了我的代码,但它进入了无限循环。 怎样才能正确呢?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main()
{
int A[MAX] = {};
int n,jj;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);
for (jj=0; jj<n; jj++)
{
printf(" enter the %d. number\n", (jj+1));
scanf("%d",&A[jj]);
while(A[jj]<=0){
printf("Please enter only positive numbers");
}
}
return 0;
}
对于初学者来说,这个初始化使用一个空的花括号列表
int A[MAX] = {};
在C中不正确。你必须写
int A[MAX] = { 0 };
显然这个循环
while(A[jj]<=0){
printf("Please enter only positive numbers");
}
当A[jj]
不是正数时,是一个无限循环。所以你所做的就是你得到的。
你可以这样写
for (jj=0; jj<n; jj++)
{
printf(" enter the %d. number\n", (jj+1));
do
{
scanf("%d",&A[jj]);
if ( A[jj]<=0 )
{
printf("Please enter only positive numbers");
}
} while ( A[jj] <= 0 );
}
死循环的原因是因为使用了while(A[jj]<=0)
问题可以通过以下两步解决:
- 将用户输入读入临时变量。
- 将临时变量分配给数组元素,仅当值为正数时。
这是工作代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main() {
int A[MAX] = {};
int n, jj, temp = 0;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);
for (jj = 0; jj < n; jj++) {
printf("Enter the # %d number : ", (jj+1));
scanf("%d",&temp);
if (temp < 0) {
printf("Negative number will not be accepted. Please try again\n");
--jj;
continue;
}
A[jj] = temp;
}
return 0;
}
输出:
How many numbers do you want to enter?
3
Enter the # 1 number : 1
Enter the # 2 number : -2
Negative number will not be accepted. Please try again
Enter the # 2 number : 2
Enter the # 3 number : 3