c语言程序求解求改谢谢。。。。

写一个函数,统计一个整数在一个整数数组中出现的次数。
#include<stdio.h>
int x(int *a,int b);
int main ()
{
int d[100],c=0,i=0;
while (i<=100)
{
scanf("%d",&d);
if(scanf("%d",&d)==0)
break;
i++;
}
x(d,c);
printf("%d\n",c);
return 0;
}
int x(int *a,int b)
{
int y=0;
b=0;
while (y<=100)
{
if(*a==34)
b++;
y++;
*a++;
}
return b;
}

  #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判断尽量用大括号括住判断覆盖的语句,尽管只有一行,这样看起来清晰明了;   

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-07
#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
main()
{
int d[10]={1,34,6,34,56,34,33,6,56,66};
int i,b,num=0,*c;
printf("input:");
scanf("%d",&b);
for(i=0;i<10;i++)
if(b==(*(c++)))
num++;
printf("\n num=%d",num);
}

第2个回答  2013-12-07
#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;
}

追问

不懂,你改下程序引用要&符号吗。。。

追答

恩 按照你的思路,看你是享用 引用 传值的。如果这样,那就要用 & 了。不然不行的。
计算结果传不回来。你输出就是 0 了。

c语言程序求解求改谢谢。。。
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); \/\/你原先使...

C语言求解该如何改动谢谢
void initqueue(sqqueue *q){ q->front=q->rear=0;q->count=0;\/\/return 0;} 把return 0;注释掉或者函数类型改成int initqueue(sqqueue *q)

C语言题目求解决 要程序
代码如下:\/\/第一题#include <stdio.h>#define N 255void str_delete(char s[],char x){int i,j,len;i=0;while(s[i]!='\\0'){if(s[i] == x){for(j=i+1;s[j]!='\\0';j++)s[j-1]=s[j];s[j-1]='\\0';i=0;}elsei++;}}int main(){char str[N],ch;printf(...

C语言编写程序求小学算术题,求大神帮改错
include <stdio.h> include <stdlib.h> int main(int argc, char *argv[]){ int max,min,op=0;char a;max=0;min=9;a=getchar();while(a!='='){{if(a<='9'&&a>='0'){if((a-'0')>=max) max=a-'0';if((a-'0')<=min) min=a-'0';} else if(a==',') contin...

C语言问题,求解。。。最好有过程和说明,谢谢!
当n=3时,add(p+1,4-1)就等于*p[2]+add(p+1,4-1)=3+add(p+1+1+1,3-1)当n=2时,add(p+1,3-1)就等于*p[3]+add(p+1,3-1)=4+add(p+1+1+1+1,3-1)当n=1时,add(p+1,2-1)就等于*p[5]=5 所以将add一次带回当5时*p+add(p+1,n-1)=*p[0]+*p[1]*...

C语言编程求解在线等。谢谢。
int main(){ bool brkflag = true;while (brkflag){ string strin;cout<<"输入:"<<endl;cin>>strin;\/\/cout<<strin<<endl;double fstnum = 0;char flg = '+';double secnum = 0;double ret = 0;\/\/解析输入 int ictn = strlen(strin.c_str());for (int i = 0; i < ictn; ...

c语言求解。。。
int i;for(i = 0; i < 33; i++){ printf("%s: ", name[i]);scanf("%d %d %d %d", &score[i][0], &score[i][1], &score[i][2], &score[i][3]);printf("\\n");} } lookscore(char name[33][7], int score[33][4]){ int i;printf("序号 姓名 成绩1 ...

求一个C语言程序。小型数据库。一个管理系统。功能包括:查询,修改等等...
include "conio.h"include "math.h"include "ctype.h"include "string.h"define MAX 4 define TERM 6 struct STUD{ unsigned number;char name[20];unsigned score[MAX];float average;struct STUD *next;};struct CLASS{ unsigned no;unsigned students;float score[MAX];float average;struct STUD...

c语言一小段程序求解
include "stdio.h"\/\/包含输入输出头文件,printf就在其中main(){ int x1=0xabc,x2=0xdef;\/\/声明x1、x2为有符号整型变量并用十六进制赋初值 x2-=x1;\/\/用x2的值减去x1的值并将结果赋给x2 printf("%x\\n",x2);\/\/用十六进制输出x2的值}结果是十六进制333,即十进制的819。

c语言求解求解?
你要了解“宏”的原理。把你自己想象成编译器中的预处理器,当你看到这样带参数的定义之后,你就会知道,看到形如 B(x) 的表达式,就把它替换成 ((x)*(x)*(x))。于是在循环体里第一次执行printf的时候,实际上执行的就是:printf("%d\\n", ((i++)*(i++)*(i++));所以显示输出的是1...

相似回答
大家正在搜