初学C语言,求一程序:有一组数字比如(1-15);然后输入1-15之间的数字例如:输入1,2,2,11,11,11,15;

如果输入的数字的次数大于2次则输出:大于2次的是:2,11
如果输入的数字的次数等于1次则输出:等于1次的是:1,15
没有被输入的数字则输出:没有出现的是:3,4,5,6,7,8,9,10,12,13,14
谢谢各位大侠。赏20分。

#include<stdio.h>

typedef struct 

{

int a;

int flag;

}TT;

void main()

{

TT b[15];

int c[10];

for(int i=0;i<15;i++)

{

b[i].a=i+1;

b[i].flag=0;

}

printf("please input some numbers:\n");

for(i=0;i<10;i++)

scanf("%d",&c[i]);

for(i=0;i<10;i++)

for(int j=0;j<15;j++)

{

if(c[i]==b[j].a)

b[j].flag++;

}

printf("大于2次的是:");

for(int j=0;j<15;j++)

if(b[j].flag>=2)

printf("%d ",b[j].a);

printf("\n");

printf("等于1次的是:");

for(j=0;j<15;j++)

if(b[j].flag==1)

printf("%d ",b[j].a);

printf("\n");

printf("没有出现的是:");

for(j=0;j<15;j++)

if(b[j].flag==0)

printf("%d ",b[j].a);

printf("\n");

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-29
#include <stdio.h>
void main()
{
int arr[16]={0},i,count,elem,non[15],one[15],more[15];
int j=0,k=0,l=0,num;
printf("请输入数字的个数\n");
scanf("%d",&count);
num=count;
printf("请输入1~15之间的数字\n");
while(num--)
{
scanf("%d",&elem);
arr[elem]++;
}
for(i=1;i<=15;i++)
switch(arr[i])
{
case 0:non[j++]=i;break;
case 1:one[k++]=i;break;
default:more[l++]=i;break;
}
printf("大于2次的是:");
for(i=0;i<l;i++)
printf("%d ",more[i]);
printf("\n等于1次的是:");
for(i=0;i<k;i++)
printf("%d ",one[i]);
printf("\n没有出现的是:");
for(i=0;i<j;i++)
printf("%d ",non[i]);
printf("\n");

}
第2个回答  2011-10-29
程序如下,这组数字的范围由输入的数字的最小值和最大值确定,输入若干整数,用CTRL+Z结束输入.
//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct{
int index;
int cnt;
} node;

node * add(node *ms,int *size,int d)
{
int i;
if (ms==NULL) {
ms=malloc(sizeof(node));
++*size;
ms->index=d;
ms->cnt=1;
}
else if (d>ms[*size-1].index) {
ms=realloc(ms,sizeof(node)*(++*size));
ms[*size-1].index=d;
ms[*size-1].cnt=1;
}
else
{
for (i = 0; i<*size; i++) {
if (d==ms[i].index) {
++ms[i].cnt;
break;
}
}
if (i==*size)
{
ms=realloc(ms,sizeof(node)*(++*size));
while (i&&d<ms[i-1].index)
{
ms[i]=ms[i-1] ;
i--;
}
ms[i].index=d;
ms[i].cnt=1;
}
}
return ms;
}

int main(void)
{
node *nms=NULL;
int i,ind,size=0;
while (scanf("%d",&ind)!=EOF)
nms=add(nms,&size,ind);
printf("大于等于2次的是:");
for (i=0; i<size; i++)
if (nms[i].cnt>=2) printf("%d ",nms[i].index);

printf("\n等于1次的是:");
for (i=0; i<size; i++)
if (nms[i].cnt==1) printf("%d ",nms[i].index);

printf("\n没有出现的是:");
for (i=1; i<size; i++) {
if (nms[i].index-nms[i-1].index>1)
for (ind=nms[i-1].index+1; ind<nms[i].index; ind++)
printf("%d ",ind);
}
putchar('\n');
free(nms);
return 0;
}
//---------------------------------------------------------------------------
相似回答