C语言程序题

http://wenwen.soso.com/z/q255217453.htm 题目在这里
2024-12-16 01:56:16
推荐回答(3个)
回答1:

首先输出结果是 8,17
第二,你上面这个程序编译不了的,有2个问题
1),函数的返回值类型没写;
2),func()函数体放在了main()函数后面且没再main()函数中声明。
第三,注释该程序:
#include //头文件
void main() //修改1:增加了void
{
int k=4,m=1,p; //定义变量k,m,p
int func(int,int); //修改2:声明函数func
p=func(k,m); //以k,m为参数,调用函数func,返回值赋给p
printf("%d, ",p); //输出p的值;
p=func(k,m); //以k,m为参数,第二次调用函数func,返回值赋给p
printf("%d\n",p); //再输出p的值;
}
int func(int a,int b)
{
static int m=0,i=2; //定义静态变量 m,i,初值分别为0,2;
i+=m+1; // i = i+m+1;第一次:i=2+0+1=3;第二次:i=3+8+1=12;
m=i+a+b; //m = i+a+b;第一次:m=3+4+1=8;第二次:m=12+4+1=17;
return m; //将m作为返回值 第一次返回:8; 第二次返回:17;
}

第四、说明一下“静态变量”
在被调用的函数体内,如果声明了某些变量(非静态),那么这些变量仅在该函数被执行期间起作用,也就意味着当函数的一次调用结束的时候,这些变量所在的内存空间都被释放掉了。如果再一次调用该函数,它将重新声明定义这些变量。
而如果某个变量被声明为静态变量(static)则这个变量在该函数第一次被调用时创建(分配其内存空间),当函数调用结束时,这个变量的内存空间保持不变,并不释放。这样如果该函数第二次被调用,则该变量将继续保有上一次执行时的值参与运算。

回答2:

第一题.s+=i*i;即s=s+i*i;
1
5
14
30
55
第2题.a[i]%5==0,即能被5整除的数
题意为先遍历数组的元素,找出其中能被5整除的数
10
15

回答3:

第三大题,有些地方看的不太清楚。
看程序写结果的,建议自己如果不太懂的话,就敲到机器中运行下。

第四大题,我可以跟你说下。
第1题:用于比较两个数a,b的大小,其中大于等于小于分别返回1、0、-1
第2题:用于输出单链表的全部结点数据。