十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
// 函数以空格分割输入的10位以内的整数,并存放到数组iData[]中
我们提供的服务有:成都网站建设、做网站、微信公众号开发、网站优化、网站认证、和平ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的和平网站制作公司
// 返回值为输入整数的个数
// 数字外字符屏蔽,仅输入循环遇回车符结束
// 所须头文件"stdio.h"
int getData(int iData[]) {
int j=0,i=0;
char ch,str[10];
while(ch=getchar()) {
if(ch=='\n'){
str[j]='\0';
iData[i]=atoi(str);i++;
break;
}
if(ch==' '){
str[j]='\0';
iData[i]=atoi(str);
i++;j=0;
}
if(ch='0'ch='9'){
str[j]=ch;j++;
}
}
return i;
}
不知道你这又是哪位学艺不精的C语言大师编的书,别的不说,那个自定义函数getdata就不规范,居然定义的时候不说明返回值类型,这水平也真敢出书。
从main函数开始读,先定义一个结构体变量a,然后调用getdata函数,其参数是一个类型为指针类型的结构体变量,功能为读入形参结构体变量的s和t变量,把a的地址传入getdata函数,然后读入结构体a中的s,t,然后打印s,t
最大的问题出在:
1.
getdata()函数中的n,这个值在原程序中没有带回主函数中,所以在执行search()函数时,n值并不是元素的个数。
2.
search()中的if(x!=(a+i))应改为if(x!=*(a+i));
另外,以上两个函数应该在main()之前声明,因为用到了getch()函数,所以要包含头文件conio.h。
修改后的程序如下:
#include "stdio.h"
#include conio.h
#include stdlib.h
void search(int n,int x,int *a);
void getdata(int *a,int* n);
void main()
{ int a[30],n,x;
getdata(a,n);
printf("Enter a number:");
scanf("%d",x);
search(n,x,a);
getch();
}
void getdata(int *a,int *n) /*n声明为指针,这样可以将它的值带回调用函数。
{ int i;
do
{ printf("Enter number of elements(0n30):");
scanf("%d",n);
}while((*n1)||(*n=30));
printf("Enter %d integer numbers:\n",*n);
for(i=0;i*n;i++) scanf("%d",a+i);
}
void search(int n,int x,int *a)
{ int i;
for(i=0;in;i++)
{ if(x!=*(a+i)) continue; //注意这里。
else printf("%d",i);
}
}