在 C语言中,如何编程下题:在函数中输入若干整数,其值均在1~5之间,用-1作为输入结束标志,另编写一函

数f用于统计每个整数的个数。在主函数中调用它,并输出统计结果。如:
若输入整数为:1 2 3 4 5 1 2
则统计结果为: 1: 2
2:2
3:1
4:1
5: 1
求助啊!!!!!

我尝试做了一下:可是好多问题!!

求大神指导啊~~
# include<stdio.h>
int main()
{
void f(int a[],int b[]);
int a[100],b[5]={0,0,0,0,0};
int i,j;
while(1)
{
for(i=0;i<100;i++)
{
printf("请输入值为1~5的整数:\n");
scanf("%d",&a[i]);
if(a[i]==-1) break;
}
void f(a,b[5]);
for(i=0;i<100;i++)
for(j=0;j<5;j++)
{
printf("统计后的结果为:\n");
printf("%d:%d\n",a[i],b[j]);
}
return 0;
}
void f(int a[],int b[])
{
int i,j;
for(i=0;i<100;i++)
{
switch(a[i])
{
case 1:b[0]=b[0]+1;break;
case 2:b[1]=b[1]+1;break;
case 3:b[2]=b[2]+1;break;
case 4:b[3]=b[3]+1;break;
case 5:b[4]=b[4]+1;break;
deault:break;
}
}
}

#include "stdio.h"
int main(int argv,char *argc[]){
int d[100],n[5]={0},i;
printf("Input some numbers(int 1~5)...\n");
for(i=0;i<300;i++){
if(scanf("%d",d+i)!=1){
printf("Enter illegal, exit...\n");
return 0;
}
if(d[i]==-1)
break;
if(d[i]<1 || d[i]>5){
printf("Input error, redo: ");
i--;
}
}
n[0]=n[1]=n[2]=n[3]=n[4]=0;
for(i--;i>=0;n[d[i--]-1]++);
for(i=0;i<5;printf("%d:\t%d\n",i+1,n[i++]));
return 0;
}

运行样例:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-19
可以不确定数字,动态数组追问

C语言课本上说,不能对数组的大小做动态定义。

第2个回答  2013-04-19
你还真搞个100个数据啊,你输入的时候数的清不,服了你了。。。追问

可以为不确定数字吗,怎么改给个意见啊

追答

#include
void f(int b[10])
{
int temp,j;
for(int i=0;i=b[k+1])
{

temp=b[k+1];
b[k+1]=b[k];
b[k]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n");
for(i=0;i<10;i++)
{
int sum=1;
j=b[i];
for (int k=i;k<9;k++)
{
if(j==b[k+1])
{
sum++;
i++;
}
else
{
break;
}
}
printf("%d : %d\n",b[i],sum);
}
printf("\n");
}
void main()
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
f(a);
}
就输入10个数据,然后排序下,在比较。

追问

好像你做的跟我的问题不搭吧。。
不过还是谢谢你。

本回答被提问者采纳
相似回答