求c语言练习题,输入一个数字,求其中的偶数个数等

2024-11-27 08:49:50
推荐回答(4个)
回答1:

给你代码:

#include 
#include 
#include 
using namespace std;
char str[111];//输入的整数,用字符串保存
int c[10];//各个数字的个数
int main()
{
    while(scanf("%s",str)!=EOF)
    {
        int i,j,k,n;
        n=strlen(str);
        memset(c,0,sizeof(c));//清空
        for(i=0;i        int minv=11,maxv=-1,maxnum=-1,sum=0;
        for(i=0;i<=8;i+=2)
        {
            if(c[i]!=0)
            {
                sum++;
                minv=min(minv,i);
                maxv=max(minv,i);
                maxnum=max(maxnum,c[i]);
            }
        }
        if(maxv==-1){printf("不存在偶数\n");continue;}
        printf("偶数个数为%d,最大的是%d,最小的是%d,频率最高的是",sum,maxv,minv);
        for(i=0;i<=8;i+=2)if(c[i]==maxnum)printf("%d",i);
        printf("\n");
        //printf("%d %d %d %d\n",sum,maxv,minv,maxnum);
    }
    return 0;
}

回答2:

#include

#include


#define N 50


void main()

{

    char a[N];

    int n[5]={0};

    int b[5]={0,2,4,6,8};

    int temp,temp1,i,j;

    scanf("%s",a);

    int length=strlen(a);

    for(int i=0;i

    {

        temp=a[i]-'0';

        if(temp%2==0)

            for(j=0;j<5;j++)

                    if(temp/2==j)

                            n[j]+=1;

    }

    for(i=0;i<5-1;i++)

        for(j=i+1;j<5;j++)

            {

                if(n[i]

                    {

                        temp=n[i];

                        n[i]=n[j];

                        n[j]=temp;

                        temp=b[i];

                        b[i]=b[j];

                        b[j]=temp;

                    }

            }

    temp=b[0];

    for(i=1;i<5;i++)

        if(n[0]==n[i])

            if(b[0]

            {

                temp=b[i];

                b[i]=b[0];

                b[0]=temp;

            }

    printf("最大的是%3d\n",b[0]);

    printf("最小的是");

    j=5-1;

    while(n[j]==0)

        j--;

    printf("%3d\n",b[j]);

    int max=n[0];

    printf("频率最高的是%3d",b[0]);

    for(j=1;j<5;j++)

        if(n[0]!=n[j])

            break;

        else

            printf("%3d",b[j]);

    


printf("\n");

}

回答3:

很简单用一个一维数组record[10]来保存数字0-9的存现次数,然后统计频率和出现次数
#include
#include
#include
int main()
{
int record[10]; //保存0-9出现次数
char sInput[256]; //输入字符
int i,j, m, n, mt, t;

memset(sInput, 0, sizeof(sInput));
for (i=0; i {
j = sInput[i] - '0';
record[j] += 1;
}

//统计最大值m,最小值n,次数t,最大频率mt
t = record[0] + record[2] + record[4] + record[6] + record[8];
m = 0, n = 0, mt = 0;
for (i=0; i<10; i=i+2)
{
if (record[i]==0) continue; // 未出现
if (i>m) m=i;
if (i if (record[i]>mt) mt = record[i];
}

//输出结果
printf("不同偶数个数:%d\n",t);
printf("最大的偶数:%d\n", m);
printf("最小的偶数:%d\n", n);
printf("频率最大的偶数:");
for (i=0; i<10; i=i+2)
{
if (record[i]==mt) printf("%d", i);
}
if (mt==0) printf("NA");
printf("\n");
}

回答4:

#include
#include

int main(){
int a[100];
int i=0;
int max=0,min=8,k=0;
int count[11]={0};

while((a[i]=getchar())!=10){
a[i]=a[i]-48;
if((a[i]/2)!=0 && a[i]!=1){
count[a[i]]++;
max=max>a[i]?max:a[i];
min=min }
i++;
}

for(i=0;i<10;i++)
k=k>count[i]?k:count[i];

printf("%d %d %d",max,min,k);
return 0;
}