⑴ 一个简单的c语言程序(解释一下)。
f(int
a)
........定义f()函数体,他的参数是a,int类型
{auto
b=0;................定义局部变理b
static
c=3;
...........定义静态存储变量c=3
b=b+1;
..................每次调用时b+1,相当于b++
c=c+1;
................每次调用时c+1,相当于c++
return(a+b+c);
.................把a+b+c的值返回到printf("%d",f(a));
中的f(a)
}
main()
{int
a=2,i;
...............定义变量a,i其中a赋初值而i没有给出值
for(i=0;i<3;i++)
..............建立一个for循环
printf("%d",f(a));
..............输出printf("%d",f(a))共三次
}
⑵ 关于C语言一个程序的解释
这个程序就是输出一个用*号组成的菱形的小程序,最后的getch();是等待用户按任意键,否则菱形一闪而过,窗口会消失。scanf("%d", &n);读入了整数n,说明要打印的菱形是2n行。前一个i = 1 to n是控制上半个正三角,后一个i=1 to n是控制下半个倒三角,j控制每一行前面的空格数量,k控制每一行打印的星号个数
⑶ C语言程序解释
答案是3 2 3 1 2
这里面涉及到几个知识点:
在子函数中用static修饰的变量,只会进行一次初始化,即static int b=3; 只会在第一次调用f函数时才会执行,后面的调用都直接跳过这句话。
在子函数中,如果局部变量名和全局变量名重名,默认优先使用局部变量
在子函数中的局部变量只存在于子函数里面,调用完子函数后,内部的局部变量会被全部销毁
全局变量如果没有被初始化,默认为0。
因此,对于这道题,第一次调用f(++a)时,传入的值为1(因为a先加1,再传入值),此时的全局变量a变为1了。然后进入子函数里面,将传入的1赋值给局部变量a,局部变量a等于1。子函数里面的a与全局变量a重名,因此优先使用局部变量a,a+=2;实际上是局部变量的a,全局变量a没有任何变化。然后初始化b=3。执行--b后,b=2。因此首先输出3,2。
第二次调用f(a++)函数时,传入的值为1,然后再将全局变量a加一,此时的全局变量a变为2了。然后进入子函数里面,将传入的1赋值给局部变量a,局部变量a等于1。然后跳过b的初始化,局部变量的a+=2,所以a=3,执行--b后,b=1。因此首先输出3,1。
最后的printf输出的时全局变量a,为2。
⑷ c语言简单程序解释一下
A处执行完毕后,数组c并不一定设置好。
以本题为例:
程序顺次执行
c[0]=a[0],pc++,pa++;
c[1]=a[1],pc++,pa++;
c[2]=b[0],pc++,pb++;
c[3]=a[2],pc++,pa++;
到这一步pa-ay已经超过A_NUM了,所以while(pa-a<A_NUM && pb-b<B_NUM)的条件不满足,循环终止。
在下来执行while(pb-b<B_NUM) //C处的循环来完成数组c的设置。
程序顺次执行
c[4]=b[1],pc++,pb++;
c[5]=b[2],pc++,pb++;
完毕!
你明白了么?