求出所有这些不重复数字的个数及它们的和
问题描述每位同学都有一个唯一的学号。现假设学生的学号为10位长的纯数字构成。例如,张三的学号为2119201108。请编写程序,输入学生的学号,完成以下功能:将学号中的数...
问题描述
每位同学都有一个唯一的学号。现假设学生的学号为10位长的纯数字构成。例如,张三的学号为2119201108。请编写程序,输入学生的学号,完成以下功能:
将学号中的数字拆分并去重(注意:学号长度是10位,用int可能存不下)。例如:张三的学号2119201108,拆分去重后,有2、1、9、0、8,共5个不重复的数字,且这5个不重复数字和为:2+1+9+0+8=20。 请求出所有这些不重复数字的个数及它们的和,并输出(输出数据之间用英文空格分割)。
提示
该题可借助数组完成。
先把所有数字拆分存入数组1。
将数组1中的不重复元素存入数组2。每次将数字存入数组2之前,要判断该数字是否已在数组2中,如果已在,就是重复的数字,不要存入;如果不在数组2中,则存入数组2。
根据数组2,计算不重复数字个数及和。
2119201108
输出:
5 20
输入:
2820244220
输出:
4 14 展开
每位同学都有一个唯一的学号。现假设学生的学号为10位长的纯数字构成。例如,张三的学号为2119201108。请编写程序,输入学生的学号,完成以下功能:
将学号中的数字拆分并去重(注意:学号长度是10位,用int可能存不下)。例如:张三的学号2119201108,拆分去重后,有2、1、9、0、8,共5个不重复的数字,且这5个不重复数字和为:2+1+9+0+8=20。 请求出所有这些不重复数字的个数及它们的和,并输出(输出数据之间用英文空格分割)。
提示
该题可借助数组完成。
先把所有数字拆分存入数组1。
将数组1中的不重复元素存入数组2。每次将数字存入数组2之前,要判断该数字是否已在数组2中,如果已在,就是重复的数字,不要存入;如果不在数组2中,则存入数组2。
根据数组2,计算不重复数字个数及和。
2119201108
输出:
5 20
输入:
2820244220
输出:
4 14 展开
2个回答
展开全部
方法思路如下:
第一步:
先建立一张表用于存放数字出现的次数;
第二步:
依次遍历学号的每一位,如果对应的表中出现的次数为1,和加1,计数也加1。
最后结果就出来了。
完整代码如下:
#include<stdio.h>
int main()
{
char no[11];
short table[10] = {0};
short sum = 0;
short count = 0;
fgets(no, sizeof(no), stdin);
for(int i = 0; no[i]; i++)
{
if(table[no[i] - '0'] == 0)
{
table[no[i] - '0'] += 1;
sum += no[i] - '0';
count++;
}
}
printf("%d %d\n", count, sum);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询