gpt4 book ai didi

c - 一个用 C 语言计算 NxM 数组中 0 到 9 的数字个数的程序?

转载 作者:行者123 更新时间:2023-11-30 17:09:10 26 4
gpt4 key购买 nike

我正在尝试创建一个程序,使用函数和数组来计算每个数字(范围从 0 到 9)出现的次数。以下是我得到的指示:

编写一个程序,要求用户输入一个仅包含 0 到 9 之间数字的 NxM 维数组,并计算这 10 个数字中每一位出现在数组中的次数。

这个程序应该:

● 提示用户输入数组的大小(行和列),并读取维度

● 提示用户逐行输入数组并读取每一行并验证用户输入的值是否在 0 到 9 之间。如果输入的值超出此范围,程序应提示用户再次输入该行

● 显示每个数字在数组中出现的总次数

程序的输出应如下所示(如果这有帮助的话):该程序计算 NxM 数组中数字 0 到 9 的出现次数

*输入数组的大小:2 6

*输入第 0 行:0 1 2 3 4 5

*输入第 1 行:0 1 6 72 81 9

值超出范围。

*输入第 1 行:0 1 6 7 8 9

每个数字的总数:

数字 0 出现 2 次

数字 1 出现 2 次

数字 2 出现 1 次

数字 3 出现 1 次

数字 4 出现 1 次

数字 5 出现 1 次

数字 6 出现 1 次

数字 7 出现 1 次

数字 8 出现 1 次

数字 9 出现 1 次

*用户输入

这是我到目前为止的程序:

#include<stdio.h>
#include<stdbool.h>

int read_row(int x, int y, int a[x][y]) /*function read_row reads in each row (including the prompt and retrieving the values). */
{
printf("Enter the size of your array:");
scanf("%d %d", &x, &y);
a[x][y] = 10; // x is the row count while y is the number of digits inputted
while (x < 10 && y < 10)
{
printf("Enter row %d:", x);
x++;
}
return x;
}

bool check_input(int x, int y) /*function check_input verifies that the user has not entered values outside the range 0 through 9. The function returns true if the range is ok and false otherwise. */

{
if (x > 9)
return false;
else
return true;
if (y > 9)
return false;
else
return true;
}

int compute_row_count(int x, int y, int a[x][y], int count) /*function compute_row_count counts the number of time each digit occurs in an individual row. */
{
a[x][y] = 0;
for (x = 0; x < 10; x++)
{
for (y = 0; y < 10; y++)
{
while (y > 0)
{
count = y % 10; // count reads and calculates the number of times a digit occurs in each row
y /= 10;
}
a[y] = y;
}


}
return a[x][y];
}

int print_total_count(int x, int y, int a[x][y], int count) /*function print_total_count prints out the total count for each digit. Note the difference between printing “1 time” and “2 times”. */
{
printf("Total count for each digit:\n");
a[x][y] = 10;
for (y = 0; y < 10; y++)
{
if (count <= 1)
printf("Digit %d occurs %d time\n", y, count);
if(count >= 2 && y < 10)
printf("Digit %d occurs %d times\n", y, count);
}
return (y, count);
}

int main (void) /* I mainly need help on compute_row_total and print_total_count. Once I can figure those two out, I should be able to set this part up correctly, so no need to worry about this part */
{
int x, y, a[x][y], count;

read_row(x, y, a[x][y]);
if (check_input(x,y))
printf("Values are outside of range.");
else
break;
compute_row_count(x, y, a[x][y], count);
print_total_count(x, y, a[x][y], count);


return 0;
}

我将compute_row_count函数留为空,因为我不明白我是否遗漏了任何其他计算或有不准确的计算...一旦我最终确定compute_row_count和print_total_count,我应该能够完成 int main(void)那里。 (所以不用担心在这部分帮助我)。但是,我确实需要计算和 print_total 方面的认真帮助......所以请帮助我。

最佳答案

#include <stdio.h>
#include <stdbool.h>

static inline bool check_input(int n){
return 0 <= n && n <= 9;
}

void read_row(int x, int y, int a[x][y]){
for (int r = 0; r < x; ++r){
printf("Enter row %d: ", r);
for (int c = 0; c < y; ++c){
int value;
if(1 != scanf("%d", &value) || check_input(value) == false){
printf("Values outside of range.\n");
while(getchar() != '\n'); //clear inputs;
--r;
break;
}
a[r][c] = value;
}
}
}

void compute_row_count(int x, int y, int a[x][y], int counts[]){
//memset(counts, 0, sizeof(int)*10);
for (int r = 0; r < x; ++r){
for (int c = 0; c < y; ++c){
++counts[a[r][c]];
}
}
}

void print_total_count(int counts[]){
printf("\nTotal count for each digit:\n");
for (int i = 0; i < 10; ++i){
printf("Digit %d occurs %d time%s\n", i, counts[i], counts[i] > 1 ? "s": "");
}
}

int main (void){
int x, y;
printf("Enter the size of your array: ");
scanf("%d %d", &x, &y);

int a[x][y];
int counts[10] = {0};

read_row(x, y, a);
compute_row_count(x, y, a, counts);
print_total_count(counts);

return 0;
}

关于c - 一个用 C 语言计算 NxM 数组中 0 到 9 的数字个数的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com