main函数中最后输出的a的值应为f(0)的值+f(1)的值+f(2)的值,原因是循环变量i的值只能是0,1,2,当i的值为3的时候循环就结束了,a原来是0.0,在循环中是累加
成都创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元崇州做网站,已为上家服务,为崇州各地企业和个人服务,联系电话:18980820575
f(0)的值是1.0,因函数f中循环被架空,s的值不变
f(1)的值是2.0,其中的循环只执行了1次,s的值将是1.0+1.0=2.0
f(2)的值是2.5,其中的循环执行了2次,s的值将是1.0+1.0+0.5=2.5
由此可得出 main函数中a最终的值将是0.0+1.0+2.0+2.5=5.5
附运行结果
初始m没有分配空间。 其实直接用str就好。
最简单的改法:
#include stdio.h
#include ctype.h
#include conio.h
#include stdlib.h
void fun (char *str)
{int i,j;
char *m=str;//赋值m=str
for(i=0,j=0;str[i]!='\0';i++)//这里处理到结束符即可。
{if(str[i]!=' ')
{m[j]=str[i];j++;}
}
m[j] = '\0';//增加结束符。
str=m;
}
main()
{
char str[81];
char Msg[]="Input a string:";
int n;
FILE *out;
printf(Msg);
gets(str);
puts(str);
fun(str);
printf("*** str: %s\n",str);
/******************************/
out=fopen("out.dat","w");
fun(Msg);
fprintf(out,"%s",Msg);
fclose(out);
/******************************/
}
一个返回整型的函数指针,表示用传进来的那个函数进行调用 int (*t)()
return((*t)(x,y)) //返回所传函数的返回值,也可以说是调用传的函数,将他的返回值作为当前返回
结果:17
#includestdio.h
#define N 60 // 数值自己确定
char delete(char s[ ])
{ int i,j=0;
char c[N];
for(i=1;i=N;i++)
{
if(s[i]!=' ') c[j++]=s[i];
if(s[i]=='\0')) break;
}
return c[N];
}
main()
{
char a[N]={“asd de”};//数值数组自己设定,也可改成从键盘输入的,随意
printf(“%c”,delete( a[N]));
}
——物联网校企联盟 技术部
我已经按你的意思修改了,也运行出来了,希望对你有帮助,代码附带在下面:
#includestdio.h
#includemath.h
float t,x1,x2;
void main()
{
void situ1(float a,float b,float c);
void situ2(float a,float b,float c);
void situ3();
float x,a,b,c;
scanf("%f%f%f",a,b,c);
if (a==0)
{
x=-c/b;
printf("x=%.2f\n",x);
}
else
{
t=b*b-4*a*c;
if (t0)
situ1(a,b,c);
else if(t==0)
situ2(a,b,c);
else
situ3();
}
}
void situ1(float a,float b,float c)
{
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
printf("x1=%.2f\tx2=%.2f\n",x1,x2);
}
void situ2(float a,float b,float c)
{
x1=x2=(-b+sqrt(t))/(2*a);
printf("x1=x2=%.2f\n",x1);
}
void situ3()
{
printf("没有实根\n");
}