重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int select(int n, double a[], double b[], double x) //函数的返回值是数组a 中大于等于x 的数的个数
我们提供的服务有:成都做网站、网站制作、微信公众号开发、网站优化、网站认证、海勃湾ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的海勃湾网站制作公司
{int i,k=0;
for(i=0;in;i++)
if(b[i]=x)a[k++]=b[i];
return k;
}
或:
int select(int n, double a[], double b[], double x) //函数的返回值是数组a 中大于等于x 的数的个数
{double *p,*q;
for(p=a,q=b;pb+n;p++)
if(*p=x)*q++=*p;
return p-a;
}
你打印的是main函数的局部变量max,而你函数select使用的是其本身的局部变量max,这两者没有地址关联,你只是传值而已。
方法一:使用传址,定义形参为指针指向实参地址。
#includestdio.h
void select(int *max,int a[],int n)
{ int i;
*max=a[0];
for(i=1;in;i++)
if(a[i]*max) *max=a[i];
}
int main()
{ int max=10,a[10]={10,20,30,40,50,60,70,80,90,100};
select(max,a,10);
printf("\nmax=%d",max);
return 0;
}
方法二:让函数返回max的值,main中接收
#includestdio.h
int select(int a[],int n)
{ int i,max;
max=a[0];
for(i=1;in;i++)
if(a[i]max) max=a[i];
return max;
}
int main()
{ int max=10,a[10]={10,20,30,40,50,60,70,80,90,100};
max=select(a,10);
printf("\nmax=%d",max);
return 0;
}
我修改了一下,运行一下试试,祝你好运:
#include stdio.h
#include sys/select.h
#include sys/time.h
#include sys/types.h
#include unistd.h
#include errno.h
#include string.h
int main()
{
struct timeval tv;
int i =0;
while( i++ 10)
{
tv.tv_sec = 1;
tv.tv_usec = 0;
printf("%d\n", i);
fflush(stdout);
int ret = select (0, NULL, NULL, NULL, tv);
if (ret == -1)
{
fprintf (stdout, "select error . errno=%d [%s]\n", errno, strerror(errno));
break;
}
//sleep(1);
//usleep(1000000);
}
return 0;
}
因为文件描述符是从0 开始的。 0 1 2。。。。。最大文件描述符是2, 但是实际上监听的文件描述符是3个
selcet函数是一个轮循函数,即当循环询问文件节点,可设置超时时间,超时时间到了就跳过代码继续往下执行。
select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组, 每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他 文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执 行了select()的进程哪一Socket或文件可读或可写。主要用于Socket通信当中。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二、填空题
1. 以下程序输出的结果是__0______ 。
main()
{ int a=5,b=4,c=3,d;
d=(abc);
printf("%d\n",d);
}
2. 以下程序输出的结果是___i=3,j=3,k=2_____ 。
#includestdio.h
main()
{ int i,j,k,a=2,b=3;
i=(a++==--b)?a++:--b;
j=--a;k=b++;
printf("i=%d,j=%d, k=%d\n",i,j,k);
}
三、编程题
1. 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
#includestdio.h
void mian()
{
int score;
scanf("%d",score);
if(score 60)
putchar('E');
else if(score = 60 score 70)
putchar('D');
else if(score = 70 score 80)
putchar('C');
else if(score = 80 score 90)
putchar('B');
else (score =90)
putchar('A');
}
2. 给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印出每一位数字;
#include stdio.h
void main()
{
int num,a,count =0;
scanf("%d",num);
do{
a= num % 10;
printf("%d\n",a);
count++;
}while(num /= 10);
printf("%d",count);
}
二、填空题
1. 程序运行后输出的结果是:____0122____。
main()
{ int i;
for(i=0;i3;i++)
switch(i)
{ case 1: printf("%d",i); break;
case 2: printf("%d",i);
default: printf("%d",i);
}
}
2. 下面程序运行后输出的结果是:__sum= 9______。
main( )
{ int j, sum=0;
for(j=1;j10;j++)
{ sum=0;
sum=sum+j;
}
printf(“sum=%2d”, sum);
}
三、编程题
1. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。
#include stdio.h
void main(){
int i,j,k;
for(i=1;i10;i++)
for(j=0;j10;j++)
for(k=0;k10;k++)
if( (i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("%d%d%d ",i,j,k);
}
二、填空题
1. 以下程序的输出结果是_abc_______ 。
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s); }
2. 以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i for(j=0;j if(a[i][j]a[row][colum]){row=i;colum=j;}
*n= ________;
return ________;
}
main()
{int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,n);
printf("max=%d,line=%d\n",max,n);
}
3. 以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include
#include
main()
{ char s[80], d[80]; int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if( ________ ) { d[j]=s[i]; j++; }
d[j]='\0';
puts(d);}
三、编程题
1. 用筛选法求100之内的素数。