当前位置:首页 » 编程语言 » 找数字出现的次数c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

找数字出现的次数c语言

发布时间: 2022-05-10 21:25:18

‘壹’ 给定n个整数,求每个整数出现的次数,用c语言

#include<stdio.h>
intmain(){
inta[10010]={0},i,j,k,kind,max;
while(~scanf("%d",&k)){
for(i=0;i<k;i++){
scanf("%d",&kind);
a[kind]++;
}
max=0;
for(i=1,j=0;i<=10000;i++){
if(a[i]>max){
max=a[i];
j=i;
}
elseif(a[i]==max){
if(i<j)
j=i;
}
}
printf("%d ",j);
}
return0;
}

‘贰’ c语言判断数字出现几次

#include<stdio.h>
#include<string.h>
#defineN10

/*选择排序法*/
voidsort(inta[],intn)
{
inti,t,j;
for(j=1;j<n;j++)//n次比较
for(i=0;i<j;i++)//每趟中比j次
if(a[i]>a[j])//与a[i]后面的元素进行比较
{
t=a[i];a[i]=a[j];a[j]=t;
}
}

main()
{
inti,k=0,b;
inta[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);//数组输入
sort(a,N);//升序排序
b=a[0];//从最小数字开始
for(i=0;i<N;i++)
{
if(a[i]==b)
{
k++;//记录相同的数字有多少个
if(a[i+1]!=b)
{
printf("%d:%d ",b,k);//输出数字及其个数
b=a[i+1];//使b指向下一个元素
k=0;//重置,为了统计下一个数字
}
else
{
if(i==N-1)printf("%d:%d ",a[N-1],k);//统计最后一个数字
}
}
}
}

‘叁’ C语言 给你一个字符串,让你求出该字符串数字出现的次数

#include<stdio.h>
void fun(char str[],int *t)
{
*t=0;
int i=0;
for(;str[i];i++)
{
if(str[i]>='0'&&str[i]<='9')
(*t)++;
}
}

void main()
{
int i=0,t;
char str[80];
FILE *fp;
fp=fopen("test3-2.txt","r");
while(!feof(fp))
fscanf(fp,"%c",&str[i++]);
fun(str,&t);
printf("数字出现的次数为%d次\n",t);
fclose(fp);
}
我这是从文件中读取的字符串,如果要输入或者直接定义改一点点代码就可以了。。

‘肆’ C语言如何统计数字出现的次数

#include<stdio.h>
int main(void)
{ int num[10]={0} ; //定义数组,里面的元素全部为0,用来统计0--9出现的次数
int b[]={1,2,3,4,4,1,3}; //定义数组B,里面存放你要输入的数字串
int i ;
for(i=0;i<sizeof(b);i++)
num[ b[i] ] ++;
for(i=0;i<10;i++)
printf( "%d",num[i]);
return 0;
}

‘伍’ 请问c语言当中,如何统计数字各自出现的次数

实现代码:

#include <stdio.h>

int main() {

int num = 0, i = 0;

printf("请输入一个整数:");

scanf("%d", &num);

int array[10] = {};

while(num) {

array[num % 10]++; //让数组下标代表所判断的数字

num /= 10;

}

for (i = 0; i < 10; i++) {

if (array[i] != 0)

printf ("%d有%d个 ", i, array[i]);

return 0;

}

(5)找数字出现的次数c语言扩展阅读:

printf用法:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

inta=1234;

printf("a=%d\n",a);

输出结果为a=1234。

‘陆’ c语言:如果有一大堆数,怎么找出其中出现次数最多的那个

数据结构:用一个可变长度的动态结构数组(结构类型中有两个成员,一是被统计的数,另一是这个数出现的频次),或用两个整形数组,或动态表。

算法思路:

  1. 对于每个要统计的数,首先看是不是已存在于数组中,如果在,其对应的频次数加1;如果不在,添在数组中,频次数为1。

  2. 由于这一大堆数的组成是未知的(如,有100个数,其中3有10个,9有80个,54有10个,那么结果只要用数组中的三个元素就保存了,频次最高的是9;但也有另一种可能:1~100中每个数都出现一次,那就要100个元素了),同时这一大堆数的总个数也是未知的,所以要考虑可变长度的动态存储结构,首选就是动态链表了。当然也可以考虑动态数组,一开始数组有个初始大小(如100),运行时如果不够大,则在原数组大小基础上增加一定长度(如100)建立新数组,将原数组复制到新数组,删除原数组。

  3. 统计完成后,在数组中查找频次最大的元素即可。

下述参考程序,用结构数组实现。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <memory.h>

struct Node {
int item; //数据
int freq; //出现次数
};

struct List {
struct Node* data;
int occupied; //被占用的数
int size; //空间总数
};

void statistic(struct List* , int );
struct Node maxFreq(struct List*);

void main() {

//准备数据结构并初始化
struct List dataList;
dataList.data =(struct Node*) malloc(100 * sizeof (struct Node));
memset(dataList.data, 0, 100 * sizeof (struct Node));
dataList.size = 100;
dataList.occupied = 0;

/*开始统计*/
srand((unsigned) time(NULL)); //初始化随机数

int i;

int d;

for (i = 0; i < 1000; i++) { //生成1000个50以内的随机数
d = rand() % 50;
//printf(" %d ", d ); //打印
//统计每个数出现的频度
statistic(&dataList, d);
}
struct Node result=maxFreq(&dataList);
free(dataList.data);
printf("出现频度最大的数:%d,出现次数:%d",result.item,result.freq);
}

void statistic(struct List *list, int d) {
int i = 0;
for (; i < list->occupied; i++) {
if (list->data[i].item == d) {
list->data[i].freq += 1; //数据已在表,频度加1
return;
}
}
//数据不在表中
if (i >= list->occupied) {
if (list->size <= list->occupied) { //空间不够
list->size+=100;//增加100个空间;
struct Node *temp= malloc(list->size * sizeof (struct Node));
memcpy(temp,list->data,list->occupied * sizeof (struct Node));
free(list->data);
memset(&(list->data[list->occupied]),0, 100 * sizeof (struct Node));
}
list->data[list->occupied].item = d;
list->data[list->occupied].freq += 1;
list->occupied++;
}
}
struct Node maxFreq(struct List* list){

struct Node temp;
temp.freq=list->data[0].freq;
temp.item=list->data[0].item;
int i=1;
for (; i < list->occupied; i++) {
if (temp.freq<list->data[i].freq){
temp.freq=list->data[i].freq;
temp.item=list->data[0].item;
}
}
return temp;
}

‘柒’ 用c语言统计数字出现的次数

b[a[i]]++; a[i] 是数组元素,数值在0-9范围内,所以b[a[i]] 总在 b[0]到b[9]之间。
b[] 已初始化为 0。
b[a[i]]++; 是 b[a[i]]=b[a[i]]+1; 它是累加器。
可以看成: x=a[i]; b[x]=b[x]+1; 第一次 b[x]++变1,第二次 b[x]++变2, 第三次 b[x]++变3。 例如 i=1,7,9 时 x=5,b[5] 累加3次变3。 这样就统计出5出现的次数了。

‘捌’ C语言编程:输入一数列,再从输入一个数 查找出该数字在数列中出现的次数

#include <stdio.h>int main()
{
int n;
int a[100];
int b;
int i;
int cnt = 0;
printf("输入数列中数的个数:");
scanf("%d", &n);
printf("输入数列中的数:\n");
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
printf("输入要查询的数字:");
scanf("%d", &b);
for(i = 0; i < n; i++)
{
if(a[i] == b)
cnt++;
}
printf("%d出现%d次\n", b, cnt);
}

‘玖’ (C语言)关于统计一行数字字符中每个数字字符出现的次数。

大部分错误都集在中stat方法中,如下:

voidstat(char*s,int*num){
inti;
charch;
ch=s[i];//你上面只是定义了i,从未赋值,i的值就是一个随机数
while((ch=getchar())!=' '){//你前面的indata就已经读入数据到s中了,这里只应该从s中读取并比较它是不是就可以了,而不应该是getchar
if(ch>='0'&&ch<='9')
num[ch-'0']+=1;
}
}
另外一个很重要的错误,你的num数组在使用前也并未初始化,会导至num中的数字也全部是随机的

修改如下

#include<stdio.h>
#defineM10
#defineN10
voidindata(char*s){
inti;
for(i=0;i<M;i++)
s[i]=getchar();
}
voidstat(char*s,int*num){
inti=0;
charch;
ch=s[i];//取第一个元素
for(;i<N;i++)num[i]=0;//num初始化
i=0;
while(ch!=''){
if(ch>='0'&&ch<='9')
num[ch-'0']++;
ch=s[++i];//取下一元素
}
}
voidoutdata(int*num){
inti;
for(i=0;i<N;i++)
printf("%d:%d ",i,num[i]);
}
main(){
intnum[N];
chars[M];
indata(s);
stat(s,num);
printf("Outputtheresult: ");
outdata(num);
}

//当然stat也可以进一步简化,变为
voidstat(char*s,int*num){
inti=0;
charch;
for(;i<N;i++)num[i]=0;
i=0;
while((ch=s[i++])!=''){
if(ch>='0'&&ch<='9')
num[ch-'0']++;
}
}