手机维修技巧大全:C++语言问题:2个3位数比较,实现他们的重复个数

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/10 06:36:40
2个3位数比较
如123和354
重复1个
113和158
重复也是1个
实现的是不同位置的数的相同个数的比较
请高手写出这个比较的实现方法
最好有过程(如果正确给分!!)
death_boy 和anuiz的程序都编译能过连接就有2个错误了:是怎么回事????
方法是第1个数组的3位数的第1个与第二个3位数比较
如有123和113 是1与113比较先用1与1比较如果相同就不用比较了
记数为1。接这实现第2个数2与113比较。以这样的方法推
提示:如果3位数中有2个数相同的或者3个数都相同的
都记为1个:如113只用1和3与下一组的进行比较。

#include <iostream>
int main(){
using namespace std;
int numa[10]={0},numb[10]={0};
int a,b,s=0;
cin>>a>>b;
while (a>0){
++numa[a%10];++numb[b%10];//统计数字
a/=10;b/=10;
};
for (int i=0;i<10;i++) if (numa[i]&&numb[i]) ++s;//如果都有则累加
cout<<s<<endl;
return 0;
}
靠,斜线打反了,天天输入ip地址都习惯了。我明白了,改了一下程序。楼上是C的程序啊。

你用的什么编译器啊,很老的话第一句改为
#include<iostream.h>
不过建议换新的。

main()
{
char f1[10]={0};//f1是10个标志位,将s1中出现过的数字
char f2[10]={0};//f2也是10个标志位,对应位上标记s2中出现过的数字
char *s1="123";
char *s2="345";//这里你也可以用scanf来输入
int i,k;
for (i=0;i<3;i++) f1[s1[i]-'0']=1,f2[s2[i]-'0']=1;//将s1,s2中出现的数字在f1,f2中的对应位置标记为1
for (i=0,k=0;i<10;i++) if(f1[i]&&f2[i])k++; //如果在f1,f2中都标记过了,说明有重复,记数.
printf("same numbers:%d",k);
}

程序在vc++中编译调试通过

// zd_15.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

int main(int argc, char* argv[])
{
using namespace std;
int num=0;
char a[3],b[3];
char temp; //用来记录上一个重复的数
cout<<"input:a=";
cin>>a;
cout<<"input:b=";
cin>>b;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(a[i]==b[j] && a[i] != temp) //如果a[i]与b[j]相同且a[i]与上一位数不相同
{
temp=a[i];
num++;
break; //如果b[j]==b[j+1]跳出循环
}
}
cout<<"num="<<num<<endl;
// if(a%10
printf("Hello World!\n");
return 0;
}
本来temp与break都可以不用
但你提出的要求:
如有123和113 是1与113比较先用1与1比较如果相同就不用比较了
记数为1。接这实现第2个数2与113比较。以这样的方法推
提示:如果3位数中有2个数相同的或者3个数都相同的
都记为1个:如113只用1和3与下一组的进行比较。
所以我加入break满足你第一个要求
加入temp满足你第二个要求

C++语言问题?
2个3位数比较,实现他们的重复个数?
哎哟!