数组中元素的频率
Frequency of an Element Accruing In an Array
我是编程新手,我正在尝试编写一个程序,让用户输入0到1000之间的数字,用户可以输入的最大数字是100。数组中的数字没有有序,当用户输入负数时程序结束。之后,程序应确定哪个数字出现次数最多以及出现频率。
我已经编写了类似的代码,但不是针对此类问题,下面的代码展示了我所说的类似代码的意思,如有任何帮助,我们将不胜感激
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
char again;
do {
srand(time(0));
int myNumbers[10];
int i, n, findnum, time, num;
n = 10;
for (i = 0; i < n; i++) {
myNumbers[i] = rand() % 10 + 1;
}
for (i = 0; i < n; i++) {
printf("elements %d\n", myNumbers[i]);
}
printf("Enter number to find Occurrence: ");
scanf("%d", &findnum);
time = 0;
for (i = 0; i < n; i++) {
if (myNumbers[i]==findnum)
time++;
}
if (findnum>0) {
printf("Occurrence of %d is: %d times\n",findnum,time);
} else {
printf("The number %d is not present in the array\n",num);
}
do {
printf("Shall we play again (y/n)?: ");
while(getchar()!='\n');
scanf("%c", &again);
}
while(again !='y' && again !='n');
}
while(again =='y');
}
您将需要第二个数组来计算频率。最坏的情况是,用户输入了唯一数字,因此第二个数组应该与 myNumbers
一样大。该数组将包含两个值:数字及其计数:
int myNumbers[10];
int myCount [10][2] = {0};
int n= 10;
您还记得 myCount
的第一个可用条目:
int m= 0;
您循环遍历所有数字:
for (i = 0; i < n; i++){
对于每个数字,检查它是否已经在 myCount
中,如果是,则增加计数然后退出循环:
for (j = 0; j < m; j++){
if (myCount[j][0] == myNumbers[i]){
myCount[j][1]++;
break;
}
}
如果找不到该号码,请添加:
if (j == m) {
myCount[m][0] = myNumbers[i];
myCount[m][1] = 1;
m++;
}
}
现在您可以在数组中搜索计数最高的数字。
集成代码为:
int myNumbers[10];
int myCount [10][2] = {0};
int n= 10;
int m= 0;
/* now fist read the input */
for (i = 0; i < n; i++){
for (j = 0; j < m; j++){
if (myCount[j][0] == myNumbers[i]){
myCount[j][1]++;
break;
}
}
if (j == m) {
myCount[m][0] = myNumbers[i];
myCount[m][1] = 1;
m++;
}
}
要执行的操作:在数组中搜索计数最高的数字。
我是编程新手,我正在尝试编写一个程序,让用户输入0到1000之间的数字,用户可以输入的最大数字是100。数组中的数字没有有序,当用户输入负数时程序结束。之后,程序应确定哪个数字出现次数最多以及出现频率。
我已经编写了类似的代码,但不是针对此类问题,下面的代码展示了我所说的类似代码的意思,如有任何帮助,我们将不胜感激
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
char again;
do {
srand(time(0));
int myNumbers[10];
int i, n, findnum, time, num;
n = 10;
for (i = 0; i < n; i++) {
myNumbers[i] = rand() % 10 + 1;
}
for (i = 0; i < n; i++) {
printf("elements %d\n", myNumbers[i]);
}
printf("Enter number to find Occurrence: ");
scanf("%d", &findnum);
time = 0;
for (i = 0; i < n; i++) {
if (myNumbers[i]==findnum)
time++;
}
if (findnum>0) {
printf("Occurrence of %d is: %d times\n",findnum,time);
} else {
printf("The number %d is not present in the array\n",num);
}
do {
printf("Shall we play again (y/n)?: ");
while(getchar()!='\n');
scanf("%c", &again);
}
while(again !='y' && again !='n');
}
while(again =='y');
}
您将需要第二个数组来计算频率。最坏的情况是,用户输入了唯一数字,因此第二个数组应该与 myNumbers
一样大。该数组将包含两个值:数字及其计数:
int myNumbers[10];
int myCount [10][2] = {0};
int n= 10;
您还记得 myCount
的第一个可用条目:
int m= 0;
您循环遍历所有数字:
for (i = 0; i < n; i++){
对于每个数字,检查它是否已经在 myCount
中,如果是,则增加计数然后退出循环:
for (j = 0; j < m; j++){
if (myCount[j][0] == myNumbers[i]){
myCount[j][1]++;
break;
}
}
如果找不到该号码,请添加:
if (j == m) {
myCount[m][0] = myNumbers[i];
myCount[m][1] = 1;
m++;
}
}
现在您可以在数组中搜索计数最高的数字。
集成代码为:
int myNumbers[10];
int myCount [10][2] = {0};
int n= 10;
int m= 0;
/* now fist read the input */
for (i = 0; i < n; i++){
for (j = 0; j < m; j++){
if (myCount[j][0] == myNumbers[i]){
myCount[j][1]++;
break;
}
}
if (j == m) {
myCount[m][0] = myNumbers[i];
myCount[m][1] = 1;
m++;
}
}
要执行的操作:在数组中搜索计数最高的数字。