求解!!!!
想问问大神们一个题目:输入一个整数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; }
举报