C语言 以下程序运行后的结果是( )

作者&投稿:牢将 (若有异议请与网页底部的电邮联系)
在c语言中以下程序段运行后的输出结果是~

输出结果是3.
int n[3], t, j, k;
for (t=0; t<3; t++)
{
n[t] = 0; //这个相当于数组的初始化,全部初始化为0
}
k = 2;
for (t=0; t<k; t++) //执行for循环,当t=0时,j=0时,n[0] = n[0] + 1;得到n[j]=1,这里的n[t]的
{ 值也将从0变为1,因为n[t]跟n[j]此时t=j=0;所以表示的都是数组n的同
for (j=0; j<3; j++) 一元素,接着执行下一步t=0,j=1,n[1]=n[0]+1; n[1]= 2; 当t=0,j=2时,
{ n[2]=n[0]+1; n[2] = 1;接着跳出内层for循环,执行外层for循环,t=1时,
n[j] = n[t] + 1; j = 0,n[j] = n[t] + 1即相当于n[0] = n[1] + 1;前面算出n[1] = 2,所以这里
} n[0] = 3;
}
printf("%d
", n[1]);

首先这段代码本身有问题,fun函数没有在它调用前声明。
不管这个问题的情况下,这题选C。因为fun函数只是将形参交换了,对实参没有任何影响,所以x,y,z均未发生变化。

k=0时,s[0]=1
因为你的case 没有break做中断,所以
s[0]=1时,执行到case 4 ,也就是i=3,v[3]++取v[3]的值,然后v[3]值增加1,变为1

k=1时,s[1]=2,也执行到i=3,v[3]++ v[3]变为2
k=2时,s[2]=3,也执行到i=3,v[3]++,v[3]变为3
k=3,v[3]变为4
k=4,v[3]变为5
k=5,没有case可执行,但执行v[3]++,v[3]变为6
k=6,v[3]变为7
k=7,v[3]变为8
最后执行for(k=0;k<4;k++) printf("%d ",v[k]);
要求输出v[0],v[1],v[2],v[3]
只要v[3]发生变化
最后结果是0 1 1 8
所以选B

如果你把这个程序这样看:
main()
{ char s[]="12345678"; int v[4]={0,1,1,0},k,i;
for (k=0; s[k];k++)
{switch (s[k])
{case'1': i=0;
case'2': i=1;
case'3': i=2;
case'4': i=3; }
v[i]++;
}
for(k=0;k<4;k++) printf("%d ",v[k]);
}
你就会发现,其中case语句由于没有遇到break所以是顺序执行下来的,这样一来,每一次i的值都会被赋为3,也即是v[3],又由于s[]数组有8个元素,所以v[3]元素增加了8次,故选B

我相信你一定是 int 是加1的意思不知道 所以算的答案不对


兴安盟18590855980: C语言问题:下列程序执行后输出的结果是 -
爨阁格瑞: 4,D)正确,选D)——for循环调用两次f,第一次调用返回3(a=c++使a==3),第二次调用返回4(由于c是static变量,上次调用时3赋给a后c++变c为4).最后输出是第二次调用后的返回值.

兴安盟18590855980: C语言,下面程序运行的结果是 -
爨阁格瑞: a<b<c你理解错了,在c语言里不能这样用的,只能写成a<b && b<c,a<b<c在c语言里的真正意思是(a<b)<c,而(a<b)给出的结果是真(1)或假(0),所以其实a<b<c就是1或者0跟c比较.第一次比较,a<b得1(也就是说a<b是真),1比c(=2)小,执行程序,使得a=2,b=1,c=1 第二次比较,a<b得0(也就是说a<b是假),0比c(=1)小,执行程序,使得a=1,b=2,c=0 第三次比较,a<b得1(也就是说a<b是真),1比c(=0)大,不执行程序,所以最后的结果还是a=1,b=2,c=0

兴安盟18590855980: C语言:下面程序的运行结果是() -
爨阁格瑞: 因为i=3;进入switch(i)后,执行a+=3;后a的值是3;因为没有break语句,它并没退出switch()语句,所以又执行到a+=2.a值变成了5.接着,执行break语句,退出switch(),执行printf().所以选B

兴安盟18590855980: 在C语言中,下面程序的执行结果是 ( ) -
爨阁格瑞: a+=SUM(i+j)/SUM(i+j); 相当于 a=a+SUM(i+j)/SUM(i+j);=a+i+j*i+j+2/i+j*i+j+2=2+1+1*1+1+2/1+1*1+1+2=2+1+1+1+2+1+1+2=11

兴安盟18590855980: c语言 以下程序运行后的输出结果是( ) -
爨阁格瑞: 选A.因为strlen()函数不计算'\0',所以其统计数字较sizeof少一个.

兴安盟18590855980: '以下程序运行后,输出结果是 A)1000 B)1001 C)00110 D)10100 一个c语言问题 求大神? -
爨阁格瑞: B1001

兴安盟18590855980: 在C语言中,下列程序运行后输出的结果是什么,怎么运算的? -
爨阁格瑞: 如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);后面的;去掉: 09 //调整c1和c2,这时候判断1<8成立 18 //调整c1和c2,这时候判断2<7成立 27 //调整c1和c2,这时候判断3<6成立 36 //调整c1和c2,这时候判断4<5成立 45 //调整c1和c2,这时候判断5<4不成立成立,打印一个回车最终屏幕输出为: 0918273645如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);的;不去掉,那么printf语句会等for循环结束才打印, 这个时候经过如上所述的调整,c1和c2分别变为了5和4, 所以屏幕上会打印出: 54

兴安盟18590855980: C语言:写出下列程序运行结果 -
爨阁格瑞: s数组中的字符串字符个数有8个,还有最后一个空字符(双引号的字符常量后面自动跟着空字符).空字符的ASCII值为0.所以第一个for的循环次数为字符个数.即循环8次.分别对应12134211 第一次:case 1. i=0. v[0]++; //第一次循环完修改了第一个元素值.v={1,0,0,0} 同理12134211 对应修改v数组中的第K个元素,即修改第一个元素4次.第二个2次等等 所以 v={4,2,1,1}; 总的来说s数组中出现 1~4的各个数 控制v数组 对应1~4个元素的值 最后输出v数组中的所有元素.也就是4211

兴安盟18590855980: 下面程序c语言中运行的结果是什么 -
爨阁格瑞: 都是5.5 因为++在后面 所以先输出原有的值 然后再进行++

兴安盟18590855980: 有以下C语言程序,程序的输出结果是什么?请写出详细的执行过程. -
爨阁格瑞: 你的程序写错了,return(fib(n-1)+fib(n-2)忘记了一个),改为return(fib(n-1)+fib(n-2)),程序就没错误了. 程序的运行结果为:16 代码解释如下: fib()函数是个递归函数,实现如下功能:当参数n>2时,将n赋值为n-1,和n-2返回,直到n<=2停止,像主函数里面的fib(6),先返回fib(5)+fib(4);然后继续执行fib()函数,fib(4)+fib(3)+fib(3)+2;然后继续执行fib()函数返回【fib(3)+2】+【2+2】+【2+2】+2,然后继续执行fib()函数返回:{【2+2】+2}+【2+2】+【2+2】+2,然后结束将结果输出.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网