我正在编写一个程序,它接受一个数字作为除数,以及来自用户的其他数字。我的问题是将十个输入数字的数组分隔成两个不同的数组,一个数组用于可被用户输入的除数整除的数字,另一个数组用于不可分割的数字。我想我已经完成了大部分工作,但每当我尝试显示数组的内容时,它会在行尾显示0。此外,当所输入的数字都不可分割时,即使这些数字未被用户输入,它也会显示“16 0 1”。 这是我的代码:
for( var i=0;i<10;i++){ }
console.log(i);
答案 0 :(得分:2)
我对您的代码做了一些更改,我认为它工作正常.....
你的代码中的:
//calculates the number of elements in array div and displays it
for(int i=0; i<10; i++){
if(div[i] != 0){
divsize++;
}
}
我认为这不是必要的,因为您已经计算了 可分割和不可分割的数字,并将它们分别存储在d
和nd
中(和)此循环中数组div[]
和nondiv[]
中的数字:
for(int i=0; i<10; i++){
if(arr[i]%num == 0){
div[d] = arr[i];
d++;
}
else{
nondiv[nd] = arr[i];
nd++;
}
}
因此,在打印可分割数字和可分割数字数组时,您可以d
作为参数而非divsize
,如下所示:
printf("Number of divisible numbers: %d ", d);//changed to d
printf("\nDivisible numbers: ");
for(int i=0; i<d; i++) //even here
{
printf("%d ", div[i]);
}
所以总结一下,删除最后一个循环并更改 最后一个循环中从
divsize
到d
的最后一个循环的参数
***,顺便说一句,我希望你全球宣布size
所以代码是:
#include<stdio.h>
#define size 10 //i defined size globally here
int main()
{
int num, arr[size], div[size],nondiv[size],d=0, nd=0;
int arrsize = 0;
do{
printf("Enter a number within 1 and 5: ");
scanf("%d", &num);
if(num<1 || num>5)
printf("\nThe number you have entered is not within the given range.\n");
} while(num<1 || num>5);
printf("\nEnter ten numbers: \n");
for(int i=0; i<10; i++){
printf("Number %d: ", i+1);
scanf("%d", &arr[i]);
}
printf("\nEntered numbers: ");
for(int i=0; i<10; i++){
printf("%d ", arr[i]);
}
//calculates the arrays size of arr and displays it
for(int i=0; i<10; i++){
if(arr[i]!= 0)
arrsize++;
}
printf("\narrsize: %d\n", arrsize);
//Stores divisible and non-divisible inputs in to different arrays
for(int i=0; i<10; i++){
if(arr[i]%num == 0){
div[d] = arr[i];
d++;
}
else
{
nondiv[nd] = arr[i];
nd++;
}
}
printf("Number of divisible numbers: %d ", d);
printf("\nDivisible numbers: ");
for(int i=0; i<d; i++){
printf("%d ", div[i]);
}
}
- 谢谢你
答案 1 :(得分:1)
您声明了一个循环变量,但没有对其进行初始化,因此其值为垃圾值。你写的地方
for(int i; i< size ;i++)
您应该使用i=0
。
其他错误是你不能声明大小全局意味着声明大小为全局变量并用作循环变体意味着
for(int i=0;i< size;i++)
我还在你改变的程序中添加评论。
这个循环不是必需的,它会使程序过于复杂:
for(int i=0; i<10; i++){
if(div[i] != 0){
divsize++;
}
}
因为您已经拥有名为d
的div数组。
这是您更新的计划
#include<stdio.h>
#include<conio.h>
#define size 10 // Every where you use hard coded 10 change it to size
int main(){
int num , arr[size], div[size], nondiv[size], d=0, nd=0;
int divsize = 0;
int nondivsize = 0;
int arrsize = 0;
do{
printf("Enter a number within 1 and 5: ");
scanf("%d", &num);
if(num<1 || num>5)
printf("\nThe number you have entered is not within the given range.\n");
} while(num<1 || num>5);
printf("\nEnter ten numbers: \n");
for(int i=0; i<10; i++){
printf("Number %d: ", i+1);
scanf("%d", &arr[i]);
}
printf("\nEntered numbers: ");
for(int i=0; i<10; i++){
printf("%d ", arr[i]);
}
//calculates the arrays size of arr and displays it
for(int i=0; i<10; i++){
// In loop variable you did'nt initialize i that's why it shows garbage value which is greater than 10000
if(arr[i]!= 0)
arrsize++;
}
printf("\narrsize: %d\n", arrsize);
//Stores divisible and non-divisible inputs in to different arrays
for(int i=0; i<10; i++){
if(arr[i]%num == 0){
div[d] = arr[i];
d++;
}
else{
nondiv[nd] = arr[i];
nd++;
}
}
//calculates the number of elements in array div and displays it
for(int i=0; i<10; i++){
if(div[i] != 0){
divsize++;
}
}
printf("Number of divisible numbers: %d ", d/*Here I just print d Because it is the count of divisible*/);
printf("\nDivisible numbers: ");
for(int i=0; i<d/*Here also used d */ ; i++){
printf("%d ", div[i]);
}
}