如输入:20 50 30 10 60 90 70 30 10 20
输出:7
#include <stdio.h>
#define N 10
int main()
{
int a[N]={0};
//int a[N]={20 ,50 ,30 ,10, 60, 90, 70, 30, 10, 20};测试使用
int i,j,cnt=N;
//开始假设N个数都不相等,用记数器cnt保存,
for(i=0;i<N;++i){ //输入数字且进行判断
scanf("%d",&a[i]); //输入数字
for(j=0;j<i;++j) //逐一与前面已存数字比较,
{
if(a[i]==a[j]) //如果相等,
--cnt; //计数器cnt减1,
}
}
printf("%d\n",cnt); //比较完后,cnt值为所求,打印输出
return 0;
}
//其实这道题用map来做会更快。下面是代码。(C++)
#include <iostream>
#include <map>
#define N 10
using namespace std;
int main(){
map <int,int> mdata; //map的存储格式是(key,value)形式
int a;
int i=N;
while(i-->0){
cin>>a; //输入
mdata.insert(pair<int,int>(a,i));//将输入a当作map对中的key,i当作value。
//插入map中,遇到重复的,会将value值改为最新的i值
}
cout<<mdata.size()<<endl;//直接输出map大小,即所求。
return 0;
}
#define N 10
int main()
{
int a[N]={0};
//int a[N]={20 ,50 ,30 ,10, 60, 90, 70, 30, 10, 20};测试使用
int i,j,cnt=N;
//开始假设N个数都不相等,用记数器cnt保存,
for(i=0;i<N;++i){ //输入数字且进行判断
scanf("%d",&a[i]); //输入数字
for(j=0;j<i;++j) //逐一与前面已存数字比较,
{
if(a[i]==a[j]) //如果相等,
--cnt; //计数器cnt减1,
}
}
printf("%d\n",cnt); //比较完后,cnt值为所求,打印输出
return 0;
}
//其实这道题用map来做会更快。下面是代码。(C++)
#include <iostream>
#include <map>
#define N 10
using namespace std;
int main(){
map <int,int> mdata; //map的存储格式是(key,value)形式
int a;
int i=N;
while(i-->0){
cin>>a; //输入
mdata.insert(pair<int,int>(a,i));//将输入a当作map对中的key,i当作value。
//插入map中,遇到重复的,会将value值改为最新的i值
}
cout<<mdata.size()<<endl;//直接输出map大小,即所求。
return 0;
}
温馨提示:答案为网友推荐,仅供参考