发布网友
共3个回答
热心网友
#include<stdio.h>
int x(int *a,int b);
int main ()
{
int d[100],c=0,i=0;
int time_result;
while (i<=100)
{
if(scanf("%d",&d[i])==EOF) //使用&d[i],而不是&d,你输入的是数组中的元素,按CTRL+Z结束
{
break;
}
i++;
}
time_result = x(d,c); //你原先使用的是传值的方式,是得不到这个结果的,可以使用指针或者引用, 以及函数返回值的方式来获取这个值;
printf("the statistics result is:%d\n",time_result);
return 0;
}
int x(int *a,int b)
{
int y=0;
b=0;
while (y<=100)
{
if( *(a+y) == 34) //a是一个数组,可以用指针或者下标方式a[y]获取数组元素;
{
b++;
}
y++; //数组向后查找,数组下标递增即可,
}
return b;
}
运行结果:
排版了反而变乱了。
建议:
数组一般使用for循环,if判断尽量用大括号括住判断覆盖的语句,尽管只有一行,这样看起来清晰明了;
热心网友
#include<stdio.h>
main()
{
int d[10]={1,34,6,34,56,34,33,6,56,66};
int i,b,num=0;
printf("input:");
scanf("%d",&b);
for(i=0;i<10;i++)
if(b==d[i])
num++;
printf("\n num=%d",num);
}
热心网友
#include<stdio.h>
int x(int *a,int b);
int main ()
{
int d[100],c=0,i=0;
while (i<=100)
{
// 输入 ctrl + d 结束。这是一个 比较标准的写法 。
if(scanf("%d",&d[i])==EOF)
break;
i++;
}
x(d,c);
printf("%d\n",c);
return 0;
}
// 这里该成 引用传值。 不然c 的值不会改变。
// 并且返回类型没有必要。结果可以通过参数
// b 传出来。这个函数可以改成 void 类型。
// 或者 把引用去掉,用函数返回 结果。
int x(int *a,int &b)
{
int y=0;
b=0;
while(y<=100)
{
if(*a==34)b++;
y++;
*a++;
}
return b;
}