C语言求相同数字

求一个整数中的相同的数字

如输入123456321,输出 1 2 3.
思路:首先求出输入整数的位数,然后设置两个数组。a数组存放整数中各个数字,b数组存放各个数字出现的次数。
由于int类型数字长度的限制,输入数字太大如11位数等会出现错误,欢迎指出改进之处
C代码如下:

#include <stdio.h>
int main()
{
	int flag(int a[],int num,int n);//判断num在a数组中从a[0]至a[n-1]是否出现过
	int num,temp;
	int a[10]={0},b[10]={1},i;
	printf("请输入num:");
	scanf("%d",&num);
	temp=num;
	for(i=1;temp/10!=0;i++)
		temp/=10;
	printf("num的位数是%d\n",i);//循环求出输入整数的位数
	for(int j=0,temp=num;j<i;j++,temp/=10)
		a[j]=temp%10;//将各个数字存放至a数组中
	for(int j=1;j<i;j++)
	{
		int k;
		k=flag(a,a[j],j);
		if(k>=0)	b[k]+=1;//若k不为-1则说明在a[k]处次数字已经出现过
		else b[j]=1;//若之前没有出现过则将b[k]置为1,说明出现了1次
	}
	for(int j=0;j<10;j++)
		if(b[j]>1)	printf("%d ",a[j]);//b[j]>1,说明数字出现不止一次,输出该数字
	return 0;
}
int flag(int a[],int num,int n)
{
	for(int i=0;i<n;i++)
		if(a[i] == num)	return i;
	return -1;		
}

示例运行结果如下:
示例运行结果

求一个由数字组成的字符串中相同数字出现次数

C代码如下:

#include <stdio.h>
int main()
{
	char str[50];
	int b[10]={0};
	printf("请输入由数字组成的字符串,(最多50个):");
	gets(str);
	printf("str=%s\n",str);
	for(int i=0;str[i]!='\0';i++)
		switch(str[i])
		{
			case'0':b[0]++;break;
			case'1':b[1]++;break;
			case'2':b[2]++;break;
			case'3':b[3]++;break;
			case'4':b[4]++;break;
			case'5':b[5]++;break;
			case'6':b[6]++;break;
			case'7':b[7]++;break;
			case'8':b[8]++;break;
			case'9':b[9]++;break;
		}
	for(int i=0;i<10;i++)
		printf("%d出现%d次\n",i,b[i]);
	return 0;
}

示例运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值