求解!!!!
想问问大神们一个题目:输入一个整数n,再输入n个整数,由小到大输出有重复的整数及其重复次数。求解
想问问大神们一个题目:输入一个整数n,再输入n个整数,由小到大输出有重复的整数及其重复次数。求解
2016-04-26
#include <stdio.h>
#include <stdlib.h>
#define RANGE 1000
int main(int argc, char const *argv[])
{
//size_t i; //只有1000以内,int也可以
//int integer=0;
//int array[RANGE] = { 0 }; //array是关键字,不能作变量名
////////////
int i=0;
int j=0; //i和j只用作循环
int size=0; //输入的个数
int temp; //用于交换两个数
int count=1;//重复次数
int isRepeated=0; //整个数组是否一次重复都没有
int arr[RANGE]={0}; //存储数据
//printf("Input a interger n: ");
printf("Enter the number that you want input!(0<=n<=1000)\n");
//while ( scanf(" %d", &integer) && integer >= 0 ) {
// if (integer < RANGE)
// array[integer]++; //我知道你想把输入的数存进数组,但是这是错误的
//}
scanf("%d",&size);
if(size<=0){ //先判断要输入的个数是否合法
printf("input error!\n");
system("pause");
return 0;
}
printf("Please Enter !\n");
for(i=0;i<size;++i){ //这步不用解释吧
scanf("%d",&arr[0+i]);
}
//for (i = 0; i < RANGE; ++i)
//{
// if ( array[i] !=0 )
// printf(" number:%d times:|%d| ", i, array[i]);
//}
for(i=0;i<size-1;++i){ //既然要从小到大输出重复的,那就先把所有的数排个序
for(j=1;j<size-i;++j){ //我这里用冒泡排序
if(arr[j-1]>arr[j]){
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
temp=arr[0];
for(i=1;i<size;++i){ //判断重复并输出
if(temp!=arr[i]){ //排序好了之后判断第一次出现的数与其后面出现是否相同
if(count>1){
printf("%d\tappear %d times\n",arr[i-1],count);
}
count=1;
temp=arr[i];
}else{
count=count+1;
isRepeated=1;
if(i==size-1){ //当最后一个数与前面的数相等是,因为已经到达边界,直接输出即可
printf("%d\tappear %d times\n",arr[i-1],count);
}
}
}
if(isRepeated==0){
printf("There is no duplication\n");
}
//for(i=0;i<size;++i){ //全部输出,测试用途
// printf("%d\t",arr[i]);
//}
printf("\n");
system("pause");
return 0;
}由於視頻緩衝很慢,等待中寫了一個很原始的方法,有一些限制,輸入範圍是[0,RANGE]的所有整數,輸入負整數來結束輸入,RANGE是巨集定義在開頭後面的數字可以自己在編譯前改。
#include <stdio.h>
#include <stdlib.h>
#define RANGE 1000
int main(int argc, char const *argv[])
{
size_t i;
int integer;
int array[RANGE] = { 0 };
printf("Input a interger n: ");
while ( scanf(" %d", &integer) && integer >= 0 ) {
if (integer < RANGE)
array[integer]++;
}
for (i = 0; i < RANGE; ++i)
{
if ( array[i] !=0 )
printf(" number:%d times:|%d| ", i, array[i]);
}
system("pause");
return 0;
}举报