自己撰寫的程式我試了好多情況都沒錯,但是復制到pta上就有“當0出現次數最多時答案錯誤”,自己運行的時候是對的啊,這是為什么,求大佬解答!!謝謝!!
這是題目:
給定一批整數,分析每個整數的每一位數字,求出現次數最多的個位數字。例如給定3個整數1234、2345、3456,其中出現最多次數的數字是3和4,均出現了3次。
輸入格式:
輸入在第1行中給出正整數N(≤1000),在第二行中給出N個不超過整型范圍的非負整數,數字間以空格分隔。
輸出格式:
在一行中按格式“M: n1 n2 ...”輸出,其中M是最大次數,n1、n2、……為出現次數最多的個位數字,按從小到大的順序排列。數字間以空格分隔,但末尾不得有多余空格。
輸入樣例:
3
1234 2345 3456
輸出樣例:
3: 3 4
下面是我自己寫的程式:
#include<stdio.h>
int main(void) {
int n, x, i;
int a[10] = { 0 };
scanf("%d", &x);
for (i = 0;i < x;i++) {
scanf("%d", &n);
while (n > 0) {
a[n % 10]++;
n /= 10;
}
}
int max = 0;
for (i = 0;i < 10;i++) {
if (a[i] >= max) {
max = a[i];
}
}
printf("%d:", max);
for (i = 0;i < 10;i++) {
if (a[i] == max) {
printf(" %d", i);
}
}
return 0;
}
求大佬幫忙看看!謝謝啦

uj5u.com熱心網友回復:
#include<stdio.h>
int main(void)
{
int n, x, i;
int a[10] = { 0 }, max = -1;
scanf("%d", &x);
for (i = 0;i < x;i++) {
scanf("%d", &n);
if (n == 0) {
a[n]++;
continue;
}
while (n > 0) {
a[n % 10]++;
n /= 10;
}
}
//int max = 0;
for (i = 0;i < 10;i++) {
if (a[i] > max) {
max = a[i];
}
}
printf("%d:", max);
for (i = 0;i < 10;i++) {
if (a[i] == max) {
printf(" %d", i);
}
}
return 0;
}
供參考~
如果輸入3,并且輸入3個0呢?結果就不對了。
uj5u.com熱心網友回復:
你的測驗結果已經告訴你了, 如果輸入的資料是0,你的答案就不對了輸入資料后,要先判斷n是不是0, 如果是把0的計數加一; 然后再while(n>0)的回圈
uj5u.com熱心網友回復:
#include<stdio.h>int main()
{
int n,i,num;int a[10]={0};
int max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num);
if(num==0)
a[0]++;
while(num>0)
{
a[num%10]++;
num=num/10;
}
}
for(i=0;i<10;i++)
{
if(max<a[i])
max=a[i];
}
printf("%d:",max);
for(i=0;i<10;i++)
if(max==a[i])
printf(" %d",i);
}
小錯誤,這樣可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88724.html
標籤:C語言
