c - 在 C 程序中,计算 NxM 数组中数字 0 到 9 的出现次数。我的计数数字而不是单个数字计数?
问题描述
第一部分定义了所需的数组和变量:i
指行、j
指列、k
指数组中存储数字计数的元素、l
指被测试的数字,c
以及d
数组大小的用户条目。
#include <stdio.h>
int main(void) {
int i, j, k, l;
int c, d;
printf("This program counts occurrences of digits 0 through 9 in an NxM array.\n");
printf("Enter the size of the array (Row Column): ");
这里数组是按照用户指定的方式创建的。
scanf("%d %d", &c, &d);
int charlesbarkley[c - 1][d - 1];
int javariparker[9];
for (j = 1; j <= d; j++) {
printf("Enter row #%d #'s", j);
for (i = 0; i < c; i++) {
scanf("%d", &charlesbarkley[i][j - 1]);
}
}
这里有四个嵌套的 for 循环,用于访问数组的每个元素charlesbarkely[i][j]
(数组元素等于从 0 开始的递增值。l++
javariparker[k]
k
l
for (k = 0; k <= 9; k++) {
for (j = 0; j < d; j++) {
for (i = 0; i < c; i++) {
for (l = 0; l <= 9; l++) {
if (charlesbarkley[i][j] != l)
javariparker[k] = javariparker[k];
else
javariparker[k] = (javariparker[k] + 1);
}
}
}
}
在这里,我尝试使用数字计数 (0 - 9) 打印数组,但是如果我的数组例如 5x5,它只会向我吐出 25 10 次,因此它会检查每个数字的每个元素,而不是检查每个每次只有一个数字的元素,我如何让它像我想要的那样工作,还是我会走到死胡同?
for (k = 0; k <= 9; k++) {
printf("%d", javariparker[k]);
}
}
解决方案
您正在越界访问您的数组。如果您声明一个数组,如int a[n];
有效索引是0 ... n-1
.
使用未初始化的计数器变量也会调用未定义的行为,您应该使用以下命令对其进行初始化int javariparker[10]={0};
:
您也不需要第四个循环来计算出现次数。
这应该有效:
#include <stdio.h>
int main(void)
{
int i, j, k, l;
int c, d;
printf("This program counts occurrences of digits 0 through 9 in an NxM array.\n");
printf("Enter the size of the array (Row Column): ");
scanf("%d %d", &c, &d);
int charlesbarkley[c][d];
int javariparker[10]={0};
for(j=0;j<d;j++)
{
printf("Enter row #%d #'s", j+1);
for(i=0;i<c;i++)
{
scanf("%d",&charlesbarkley[i][j]);
}
}
for(k=0;k<=9;k++)
{
for(j=0;j<d;j++)
{
for(i=0;i<c;i++)
{
if(charlesbarkley[i][j]==k)
javariparker[k]++;
}
}
}
for(k=0;k<=9;k++)
{
printf("%d ",javariparker[k]);
}
return 0;
}
推荐阅读
- javascript - 如何监控 socket.io 网络套接字正常运行时间
- java - Java:只要我清空 ArrayList 从中获取其内容的文本文件,我的 ArrayList 就会自行清空
- wordpress - 从数据库中获取 woocommerce 订单详细信息
- javascript - 将对象数组转换为 Google 图表的数组
- vb.net - 在 VB.NET 中超时后返回字符串
- c# - 某些方法的 C# 特定可见性
- java - 在通过 httpClient 发送到服务提供商之前从“es-staging.crt”证书签署 Xml
- python - Pandas23 改变了它处理 xticklabels 的多索引标签的方式?
- bash - 比较 hdfs 文件和 unix 文件,得到错误
- arrays - TCL(导入文件并想逐行读取)