C语言编程急急急

输入5个数字,查看5个数中是否有相同的数字,如果有2个数字相同计1分,3个数字相同计3分,4个数相同计10分,5个数相同计30分,没有相同是0分,计分可以累加,根据分数计算得分

#include <stdio.h>
int main(){
    int zongfen=0;//总分
    int fen[]={0,0,1,3,10,30};
    while(1){
        int i,j;
        int a[5];//输入的5个数
        int b[5][2];//计算每个数出现几次
        int max;
        
        for(i=0;i<5;i++)scanf("%d",&a[i]);//输入5个数
        for(i=0;i<5;i++)b[i][1]=0;//计数单元清零
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(b[j][0]==a[i]){//数相同,计数加1
                    b[j][1]++;
                    break;
                }else if(b[j][1]==0){//这个位置还没存数
                    b[j][0]=a[i];//把a[i]存进去,再加1
                    b[j][1]++;
                    break;
                }
            }
        }
        max=b[0][1];
        for(i=1;i<5;i++){//最多有几个数是相同的
            if(b[i][1]>max)max=b[i][1];
        }
        zongfen+=fen[max];//总分累加
        printf("总分:%d",zongfen);
       
    }

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-09-28
是累计的吗?比如,101, 1, 211, 3, 40, 这样的计分是否就是30+1=31分?追问

是累计,每次输入后要判断是否有相同的数,再根据计分规则累加每一次的分

追答

如果有6个,7个,……相同呢?下面的程序中,是6个以上的均按30分计入总分的:

#include<stdio.h>
int main ()
{int i,x,k=0,a[10]={0},b[10]={0,0,1,3,10,30,30,30,30,30};
 for(i=0;i<5;i++)    //循环5次
 {scanf("%d",&x);    //读入1个数
  for(;x;x/=10)a[x%10]++;    //将其中的每个数字累加读数
 }
 for(i=0;i<10;i++)k+=b[a[i]];    //根据不同个数累加总分
 printf("%d\n",k);
 return 0;
}

第2个回答  2018-09-28
把5个数按从小到大的顺序放在数组中,
再顺序扫描一下,看有几个相同的。追问

那应该怎么编写呢

追答

我不能每一步都帮你写好,
你先想想,如何把5个数按从小到大的顺序放在数组中。
思路1,先用数组的方式实现一个顺序表,顺序表只有一个插入操作,
新插入的数如果数值在原先两个数之间,需要将原来的数往后挪。
具体方法搜索”顺序表“
思路2,先将输入的数依次存入数组,再对数组进行排序,这个搜索”排序“就知道怎么做了。

C语言,急急急!!!
K是用来存放各个位上相加之和的变量 k=0;for(i=0;i<strlen(s1);i++) if(s1[i]=='.') s[i]='.';循环 小数点直接输入 else{ if(s1[i]>='A') k=k+s1[i]-'A'+10; else k=k+s1[i]-'0';如果第I位大于A 转化成十进制数 ELSE 直接相加 if(s2[i]>='A') k=k+s2...

c语言编程急急急
C语言程序:include <stdio.h>void main() {double weight;\/* 包裹重量 *\/double distance;\/* 邮寄距离 *\/double fee;\/* 邮资 *\/printf("包裹重量(克):");scanf("%lf", &weight);printf("邮寄距离(公里):");scanf("%lf", &distance);if(weight < 15){fee = 5;}else if(weight ...

c语言编程题,用for循环!急急急
include<stdio.h>int main(){int hg,bhg;for(hg=1;hg<2000;hg++)for(bhg=0;bhg<2000;bhg++)if(hg*5-bhg*18==9931){printf("%d",hg);}return 0;}

c语言题目急急急
首先,我们使用外层循环控制每一行的输出。在每一次迭代中,我们首先输出空格,然后输出当前行中的数字。我们使用变量 i 来控制每一行的输出。对于每一行,我们使用内层循环来控制每一个数字的输出。在内层循环中,我们从 i 到 1 依次输出每一个数字。在每一行输出完成后,我们使用 printf("\\n") 输出...

急!急!简单c语言编程题,求编写代码
h>void fun(int n){ int i,j,k,t;for(k=0;k<n;k++)\/\/控制总行数{ for(i=0;i<n-k-1;i++)\/\/控制输出空格,因为空格不好看见,就用*代替 printf("%c",'*'); for(j=0;j<2*k+1;j++)\/\/控制输出字母 { printf("%c",65+j); } printf...

c语言编程题目,很急,求程序
Input(struct student *r, int cd){int m;for (m=0; m<cd; ++m){printf("请输入第%d个学生的信息:\\n", m+1);printf("age = ");scanf("%d", &(r+m)->age); \/\/(*r)[m].age 等价于r[m]->age,以下类推printf("score = ");scanf("%f",...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

C语言的编程问题,求高手解答啊。新手很不明白。6月19号之前需要用到...
"%-4d",b[i][j]);putchar('\\n');} printf("矩阵C为:\\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",c[i][j]);putchar('\\n');} } 3.include <stdio.h> include <conio.h> include <string.h> void table99()\/\/输出9*9口诀 { int i,j,result;...

急急急!C语言编程:输入一串字符串,将每位后移N位后输出?
void main(){ char s[100];int i, N = 3;puts("please input string:");gets(s); \/*读取字符串*\/ puts("input N:"); \/*这两行输入N值*\/ scanf("%d", &N);for(i=0; s[i]!='\\0'; i++){ if(s[i] < 'a' || s[i] > 'z'){ puts("not a char");break;}...

c语言编程作业 输入一个整数,求他的相反数并输出 急急急 在线等
int cou;scanf("%d",&cou);printf("相反数为:%d",0 - cou);

相似回答