我需要帮助
I need help please
这个程序在 运行 之后给了我数组中的零个素数。这是一个采用二维数组 [n x m] 然后计算二维数组中有多少素数的程序。
int isprime(int n)
{
int k;
if (n <= 1)
return 0;
for (k = 2; k <= (n / 2); k++){
if (n % k == 0)
return 0;
}
return 1;
}
}
int primecount(int x, int y, int a[x][y]){
int r, c, count = 0;
for(r = 0; r < x; r++) {
for(c = 0; c < y; c++) {
if(isprime(a[r][c]))
{
count++;
}
}
}
return count;
}
int main()
{
int n, m, i, j, z;
printf("Enter the Number of Rows: ");
scanf("%d", &n);
printf("\n");
printf("Enter the Number of Columns: ");
scanf("%d", &m);
printf("\n");
int a[n][m];
printf("Enter the elements of the array: \n");
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
scanf("%d", &a[i][j]);
}
z = primecount(n, m, a[n][m]);
printf("\n");
printf("The Number of Prime Numbers in the array is: %d", z);
printf("\n");
return 0;
}
对于初学者而不是这个电话
z = primecount(n, m, a[n][m]);
你需要写
z = primecount(n, m, a);
在函数的调用中 isprime
如上所示的调用
if(isprime(r, c, a[r][c]))
表达式 a[r][c]
是类型 int
的标量对象。但是函数 isprime
需要一个二维数组而不是 int
.
类型的标量对象
int isprime(int p, int q, int a[p][q])
^^^^^^^^^^^
像
一样声明函数
int isprime( int x );
并相应地改变它的定义。
该函数将被调用为
if( isprime( a[r][c] ) )
注意函数isprime
的逻辑是错误的。对于等于 1
和 0
的值,它 returns 逻辑为真,尽管这些值不是质数。
您还需要处理一个包含 unsigned int
类型元素的数组。否则用户可以输入负值。
这是您更新后的程序。
#include <stdio.h>
int isprime(int n)
{
int k;
if (n <= 1)
return 0;
for (k = 2; k <= (n / 2); k++)
{
if (n % k == 0)
return 0;
}
return 1;
}
int primecount(int x, int y, int a[x][y]) //function to count prime numbers
{
int r, c, count = 0;
for(r = 0; r < x; r++)
{
for(c = 0; c < y; c++)
{
if(isprime(a[r][c]))
{
count++;
}
}
}
return count;
}
int main()
{
int n, m, i, j, z;
printf("Enter the Number of Rows: ");
scanf("%d", &n);
printf("\n");
printf("Enter the Number of Columns: ");
scanf("%d", &m);
printf("\n");
int a[n][m];
printf("Enter the elements of the array: \n");
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
scanf("%d", &a[i][j]);
}
z = primecount(n, m, a);
printf("\n");
printf("The Number of Prime Numbers in the array is: %d", z);
printf("\n");
return 0;
}
它的输出可能看起来像
Enter the Number of Rows: 2
Enter the Number of Columns: 2
Enter the elements of the array: 1 2 3 4
The Number of Prime Numbers in the array is: 2
这个程序在 运行 之后给了我数组中的零个素数。这是一个采用二维数组 [n x m] 然后计算二维数组中有多少素数的程序。
int isprime(int n)
{
int k;
if (n <= 1)
return 0;
for (k = 2; k <= (n / 2); k++){
if (n % k == 0)
return 0;
}
return 1;
}
}
int primecount(int x, int y, int a[x][y]){
int r, c, count = 0;
for(r = 0; r < x; r++) {
for(c = 0; c < y; c++) {
if(isprime(a[r][c]))
{
count++;
}
}
}
return count;
}
int main()
{
int n, m, i, j, z;
printf("Enter the Number of Rows: ");
scanf("%d", &n);
printf("\n");
printf("Enter the Number of Columns: ");
scanf("%d", &m);
printf("\n");
int a[n][m];
printf("Enter the elements of the array: \n");
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
scanf("%d", &a[i][j]);
}
z = primecount(n, m, a[n][m]);
printf("\n");
printf("The Number of Prime Numbers in the array is: %d", z);
printf("\n");
return 0;
}
对于初学者而不是这个电话
z = primecount(n, m, a[n][m]);
你需要写
z = primecount(n, m, a);
在函数的调用中 isprime
如上所示的调用
if(isprime(r, c, a[r][c]))
表达式 a[r][c]
是类型 int
的标量对象。但是函数 isprime
需要一个二维数组而不是 int
.
int isprime(int p, int q, int a[p][q])
^^^^^^^^^^^
像
一样声明函数int isprime( int x );
并相应地改变它的定义。
该函数将被调用为
if( isprime( a[r][c] ) )
注意函数isprime
的逻辑是错误的。对于等于 1
和 0
的值,它 returns 逻辑为真,尽管这些值不是质数。
您还需要处理一个包含 unsigned int
类型元素的数组。否则用户可以输入负值。
这是您更新后的程序。
#include <stdio.h>
int isprime(int n)
{
int k;
if (n <= 1)
return 0;
for (k = 2; k <= (n / 2); k++)
{
if (n % k == 0)
return 0;
}
return 1;
}
int primecount(int x, int y, int a[x][y]) //function to count prime numbers
{
int r, c, count = 0;
for(r = 0; r < x; r++)
{
for(c = 0; c < y; c++)
{
if(isprime(a[r][c]))
{
count++;
}
}
}
return count;
}
int main()
{
int n, m, i, j, z;
printf("Enter the Number of Rows: ");
scanf("%d", &n);
printf("\n");
printf("Enter the Number of Columns: ");
scanf("%d", &m);
printf("\n");
int a[n][m];
printf("Enter the elements of the array: \n");
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
scanf("%d", &a[i][j]);
}
z = primecount(n, m, a);
printf("\n");
printf("The Number of Prime Numbers in the array is: %d", z);
printf("\n");
return 0;
}
它的输出可能看起来像
Enter the Number of Rows: 2
Enter the Number of Columns: 2
Enter the elements of the array: 1 2 3 4
The Number of Prime Numbers in the array is: 2