本题要求实现一个函数,可统计整型二维数组中所有末位是x(x是0-9)的元素的个数并输出这些元素。 要求主函数读入二维数组的行、列数,以及各个元素值。并读入x的值。 在子函数输出满足要求的元素(注意:英文逗号分隔),回主函数输出满足要求的元素个数。 函数接口定义: int Count_Digit ( int a[ ][10 ], int m,int n,int x ); 其中 a 和 x 都是用户传入的参数。 a是主函数传递的二维数组,m和n分别是二维数组的行、列元素个数。 x是指定的末位数字。函数输出所有末位是x(x是0-9)的元素,并返回末位是x的元素个数。 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> int Count_Digit ( int a[ ][10 ], int m,int n,int x ); int main() { int a[10][10],i,j,num=0,m,n,x; scanf("%d%d",&m,&n) ; //读入行列数目,并输入m行n列元素,m和n保证小于10 for(i=0; i<m; i++) for(j=0; j<n; j++) scanf("%d", &a[i][j]); scanf("%d", &x); // 读入数组元素后,再读入指定的末位数字x num=Count_Digit(a,m,n, x) ; // 调用函数求num printf("num=%d", num) ; return 0; } /* 请在这里填写答案 */ 输入样例: 3 4 13 15 25 36 35 18 17 23 12 22 45 565 5 输出样例: 在这里给出相应的输出。例如: they are 15,25,35,45,565,num=5
时间: 2024-03-09 10:47:10 浏览: 52
以下是实现题目要求的完整代码,包括定义函数 Count_Digit 和主函数 main:
```c
#include <stdio.h>
// 统计整型二维数组中所有末位是 x 的元素的个数并输出这些元素
int Count_Digit(int a[][10], int m, int n, int x) {
int count = 0;
printf("they are ");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] % 10 == x) {
printf("%d", a[i][j]);
count++;
if (count > 1) printf(",");
}
}
}
printf("\n");
return count;
}
int main() {
int a[10][10], i, j, num = 0, m, n, x;
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
scanf("%d", &x);
num = Count_Digit(a, m, n, x);
printf("num=%d\n", num);
return 0;
}
```
算法思路:
根据题意,我们需要遍历整个二维数组,判断每个元素的个位是否等于给定的数字 x,如果是,就输出该元素,同时计数器加 1,最后返回计数器的值。
注意事项:
- 输出满足要求的元素时,需要在元素之间加上英文逗号,最后一个元素后面不需要加逗号。
- 输出格式必须和题目要求一致,包括空格、换行等。
- 输入的行数和列数都不超过 10,因此数组的最大尺寸为 10x10,可以定义为 a[][10]。
阅读全文