#includestdio.h
灌云ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
#includestdlib.h
int assignment(int *,int);
void print(int *,int);
void main()
{
int sz,rt;
int *p; //定义一个指针,在子函数里再动态分配内存
printf("输入data的数据元素个数:");
scanf("%d",sz);
rt=assignment(p,sz); //调用赋值函数
printf("数组最后元素为:%d\n",rt);
}
int assignment(int data[],int size) //按 Fibonacci 数列对数组元素依次赋值
{
int res;
data=(int *)malloc(size*sizeof(int));
if(size==1)
data[0]=1;
else if(size==2)
{
data[0]=1;
data[1]=1;
}
else
{
data[0]=1;
data[1]=1;
for(int i=2;isize;i++)
data[i]=data[i-1]+data[i-2];
}
print(data,size); //调用打印函数
res=data[size-1]; //最后一个元素是data[size-1]
free(data); //释放内存
return res;
}
void print(int data[],int size) //打印数组
{
for(int i=0;isize;i++)
printf("%d ",data[i]);
}
有注释的,不明白的再讨论
n = scanf("%d",n);
这一句有问题
1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。
例如执行 scanf(“%d %d”, a, b);
如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量);
如果用户输入”3,4”,可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入”,3 4”,返回0。
3) EOF,这是在 stdio.h 里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
你这个输入一个返回值就是1,因此n也会一直等于一
#include
stdio.h
f(int
a,int
b,int
m){
//这个函数是个完全没意思的函数
m=a*b;
return
;
//原因在这
这里直接return了
没指明返回哪个变量
那它的意义就只是说f函数结束了
其实什么也没返回
}
void
main(){
int
m=1;
//这里对m赋值1
f(2,3,m);
//运算是完全没意思的运算
所以最后结果是1
printf("%d",m);
}
为什么运行结果是m=1?????
//
在f函数那
return
m
就能得到你想要的
不过要把主函数里的倒数3行改成
m=f(2,3,m)
在四个子函数中有,各是各的,互不干涉,所以main()中的这四个数组始终没有被赋值过,空指针指的就是这个 应该把这四个数组的首地址作为四个read()的参数传过去,就可以实现:“在子函数中赋值,在main函数中使用
1、char类型,也就是常说字符类型。char类型和其它类型一样在定义和初始化上可以先声明(定义),再赋值(初始化)。使用char来定义一个字符,通过单引号括起来的单个字符赋值给它。
2、当然你也可以在定义变量的时候就初始化(也就是在声明的时候赋值)。
3、注意字符并不意味着字母,单引号括起来的单个字符。所谓单个字符可以是数字、中文之类的。
4、字符类型可以自动转化为存储空间比它大的int类型。例如下面的例子,c是字符,把它赋值int类型的i1时,却不报错就是因为自动转化。
5、int转化为字类型时(这种是属于存储空间由大向小的转化),则需要强转。
6、加了强制转换这后,它就不报错了。