『壹』 給定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。
由於這一大堆數的組成是未知的(如,有100個數,其中3有10個,9有80個,54有10個,那麼結果只要用數組中的三個元素就保存了,頻次最高的是9;但也有另一種可能:1~100中每個數都出現一次,那就要100個元素了),同時這一大堆數的總個數也是未知的,所以要考慮可變長度的動態存儲結構,首選就是動態鏈表了。當然也可以考慮動態數組,一開始數組有個初始大小(如100),運行時如果不夠大,則在原數組大小基礎上增加一定長度(如100)建立新數組,將原數組復制到新數組,刪除原數組。
統計完成後,在數組中查找頻次最大的元素即可。
下述參考程序,用結構數組實現。
#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!='