C语言如何调用函数
小弟自学,搞不懂如何调用有参数的函数,请看下面这个程序,是错的#include<stdio.h>intsum(intx,inty){intz;z=x+y;printf("...
小弟自学,搞不懂如何调用有参数的函数,请看下面这个程序 ,是错的
#include <stdio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}
main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}
请教各位,我的问题到底出在哪里?多谢了!
还有我就想问一下,形参,实参到底是指什么?举例子就行了,其实书上有解释,小弟愚笨,不理解
有个问题大家还没发现,就是scanf我没写&,编译居然能通过,faint
但即使这样,程序仍然有问题,任意输入2个整数,显示结果是"z="就什么都没有了 展开
#include <stdio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}
main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}
请教各位,我的问题到底出在哪里?多谢了!
还有我就想问一下,形参,实参到底是指什么?举例子就行了,其实书上有解释,小弟愚笨,不理解
有个问题大家还没发现,就是scanf我没写&,编译居然能通过,faint
但即使这样,程序仍然有问题,任意输入2个整数,显示结果是"z="就什么都没有了 展开
18个回答
展开全部
1)
在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。
2)
从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程序员自己决定,使用非常灵活。
3)
从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
4)
文字常量分配在文字常量区,程序结束后由系统释放。
5)程序代码区。
在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。
2)
从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程序员自己决定,使用非常灵活。
3)
从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
4)
文字常量分配在文字常量区,程序结束后由系统释放。
5)程序代码区。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下面这个是已经调试好的,希望你参考一下
#include<stdio.h>
#define
N
10
void
main()
{
long
int
a[N];
int
i,j,k,t,b[8],count=0,sum=0;
char
s[80];
scanf("%s",s);
for(i=0,j=0;s[i]!='\0';i++)
{
if(s[i]>=48&&s[i]<=57)
b[j++]=s[i]-'0';
if(j!=0&&(s[i+1]<48||s[i+1]>57))
{
t=1;
for(k=j-1;k>=0;k--)
{
sum+=b[k]*t;
t*=10;
}
a[count]=sum;
sum=0;
count++;
j=0;
}
}
for(i=0;i<count;i++)
printf("%d\n
",a[i]);
printf("there
are
%d
number
in
this
string\n",count);
}
#include<stdio.h>
#define
N
10
void
main()
{
long
int
a[N];
int
i,j,k,t,b[8],count=0,sum=0;
char
s[80];
scanf("%s",s);
for(i=0,j=0;s[i]!='\0';i++)
{
if(s[i]>=48&&s[i]<=57)
b[j++]=s[i]-'0';
if(j!=0&&(s[i+1]<48||s[i+1]>57))
{
t=1;
for(k=j-1;k>=0;k--)
{
sum+=b[k]*t;
t*=10;
}
a[count]=sum;
sum=0;
count++;
j=0;
}
}
for(i=0;i<count;i++)
printf("%d\n
",a[i]);
printf("there
are
%d
number
in
this
string\n",count);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改后可以运行的程序:
#include <stdio.h>
#include<conio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=%d",z);
return z;
}
void main()
{ int a,b,s;
printf("Input a and b:");
scanf("%d,%d",&a,&b);
s=sum(a,b);
getch();
}
改正的错误:
1.printf("z=%d",z);无%d,则不能输出z值
2.scanf("%d",&a); &表示输入到a
3.用到getch();时需加头文件#include<conio.h>
4.无返回值函数需加void
#include <stdio.h>
#include<conio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=%d",z);
return z;
}
void main()
{ int a,b,s;
printf("Input a and b:");
scanf("%d,%d",&a,&b);
s=sum(a,b);
getch();
}
改正的错误:
1.printf("z=%d",z);无%d,则不能输出z值
2.scanf("%d",&a); &表示输入到a
3.用到getch();时需加头文件#include<conio.h>
4.无返回值函数需加void
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询