一道C语音程试题序题,需要解释谢谢

一道C语言题,望详细解释,越详细越好,谢谢_百度知道
一道C语言题,望详细解释,越详细越好,谢谢
k=1若i和k都是int类型变量;);*****\n&k++) printf(&quot,k=-1,有以下for语句  for(i=0
提问者采纳
而这个表达式又无条件地成立,你把电脑关掉除外,无法停止,其实i=0,当然了,无论改为什么都可以,都是障眼法,然后就永远循环下去,k=-1以及k++都没有起到任何作用,使得k=1,每次都会执行这一语句,因为for循环终止的条件是k=1D)构成无限循环
呵呵,你真幽默,我知道k=1不是个判断语句,但是我不明白为什么k=1总为1,不是还有k++吗,另外,那个i是不是与循环控制无关的任意表达式,麻烦了,谢谢
是有k++,且k的值确实会加1,但是马上又会执行语句k=1,又将1的值赋给k又使k等于1,所以k至始至终为1,i可以是与控制循环的变量没有任何关系,有时候也确实需要执行这样一些语句,这个一个逗号表达式,也可以再多加几个语句,即使相互之间没有任何关系
提问者评价
其他类似问题
其他3条回答
Dfor循环执行顺序for(1;2;3){循环体;}条件1=1条件2=1执行循环体执行条件3条件2=1此题中条件2为赋值语句并非逻辑判断值恒为1所以构成无限循环
选D,因为此for语句的第二项,既循环条件是k=1;意思是给k赋值1,并不是等于(==);那么循环执行到这里k=1,那么永远为真,当执行完后k++,k=2。在继续循环,在循环条件那儿执行k=1(只要不为0,就是真,这个懂吧),程序一直执行下去,构成无限循环。
具体你在看哈for语句的定义......
在这个for循环里,k=1永远是真,也就是判断条件为真。就永远的执行下去。其实在c语言里k=1,是赋值语句。这条语句相当于while(1){ ..... } ,前面两个都没多大用处。
c语言的相关知识
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁C语音程序框图_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
C语音程序框图
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢求一道c语言程序的理解题,说出求解步骤~谢谢 _百度作业帮
拍照搜题,秒出答案
求一道c语言程序的理解题,说出求解步骤~谢谢
求一道c语言程序的理解题,说出求解步骤~谢谢&
2+4+1=7所以这个输入你至少是7位,如果少于7位不会出结果的,所以输入的x,y只有两个%d才是%2d表示x=12,%d表示y=7,所以结果是19,。
我也很想知道%*4c是什么意思C语言,程序问题,求大神解释。谢谢_百度知道
C语言,程序问题,求大神解释。谢谢
if(flag==0)
printf(&quot,&a;-';break?;,系统输出相应的计算结果;\)?,&a;
case ' printf(&quot.&#92。当输入运算符为“#”时结束循环以下是老师给的答案:flag=2;please input the faction (%d);n&
0&#39,不可以写在switc语句里面吗;,result=0:&#92:编写人机对话形式进行加减乘除的运算;stdio,&b)?求指点,) {
switch(sym)
case ' }}我的问题是:result=a+b;;n&quot:result=a-b;%f%c%f=%f&#92,&b).h&gt,i);%f%c%f&main(){ int i=1,a;%c is
printf(&%f%c%f& int flag=0;;'; char sym=&#39,&sym:result=a/ while(/
case ',为什么i=++要写在现在的位置;n&quot,result);break!=' float a=0:result=a*b;*'b,b=0; scanf(&please input the faction (%d);#&#39,&+'
case ';;n&
i++;:&#92,b;
scanf(&quot问题。用户没输入一次运算数和运算符:#include&lt
提问者采纳
但是如果写在switc语句里面;可以写在switc语句里面、default中都加上i++;你可以用很简洁的方式解决问题,也可以用很繁琐的方式解决问题,就是这个区别i++,就要在每一个case
哦哦,谢谢,那么这个程序可以可以完善一下吗?完善“case‘/’”的分支,即如果除数为0,给flag赋值1,否则才计算两个数的商,退出switch语句后,如果flag的值为1,显示除数为0的错误信息?”
可以。编程就是把正确的思路,用正确的代码表示出来。case '/':{
if (b == 0)
result = a /
}}if (flag == 0)
printf(&%f%c%f=%f\n&, a, sym, b, result);else if (flag == 1)
printf(&除数为0.\n&);else
printf(&%c is an illegal character.\n&);
提问者评价
谢谢,很厉害哟
其他类似问题
其他3条回答
当然可以啊;
case ',上面的代码等价于;:flag=2;) {
switch(sym)
case ';i++:while(sym。;*'break:result=a&#47!=&#39:result=a-b;i++;i++;#''+';&#47:result=a+b;i++;-'i++;
case &#39:result=a*b;b;
case ' }if(flag==0)。。。什么意思
我们老师给我们提的问题,问我们为什么i=++要写在这,不能这样写:……witch(sym)
case '+':result=a+b;
case '-':result=a-b;
case '*':result=a*b;
case '/':result=a/b;
default:flag=2;
}……谢谢谢谢
switch case 的语法就是:switch(...){case 1:...;.....}语法规定!!!你把i++写在那个位置就破坏了语法了,编译不过的
i用来标识执行的动作是第几次,而i定义的位置是在while外面,所以i的作用域是整个main函数,而i++,是执行一次运算,i就加1,表示又执行了一次运算,而后面需要对i进行输出,所以i++的操作在while循环内,在输出前都是可以的,所以放在switch语句中也一样,但是要每个case都要加上这个语句,比较麻烦。另外,你定义i的时候,要初始化为0,否则它里面存的值是随机的,这样进行++后输出的值也不正确。希望对你帮助,如果还有疑问,请继续提问。
看似这个程序是用来计算一个整数里面有几个2int main() {
int x,number,
int countdigit(int number,int digit);
scanf(&%d&,&number);
//输入一个值付给变量number
x=countdigit(number,digit);
//调用countdigit函数
printf(&%d&,x);
//输出x的值
return 0; }
int countdigit(int number,int digit)
if(number%10==digit)
//如果number除10的余数是2,执行s=s+1语句
number=number/10; //number除10
}while(number!=0);
//判断语句,如果number不等于0,重复执行do语句
//返回s的值。
c语言的相关知识
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁C语言的一道程序题!!!看不懂为什么!!求解释详细,谢谢!!_百度知道
C语言的一道程序题!!!看不懂为什么!!求解释详细,谢谢!!
32. 以下程序的输出为(C
)。inta=2;int f(int *a){
return(*a)++;}void main(){
printf(&%d %d\n&,a,s);}
A:2 订笭斥蝗俪豪筹通船坤7
这个主要涉及到变量作用域的问题,两个原则局部变量与全局变量重名时,屏蔽全局变量{}里声明的局部变量的作用域就是{订笭斥蝗俪豪筹通船坤}的范围。本质上跟函数的{}是一个道理 {int a=5; s+=f(&a); }代码中,会屏蔽掉外面的全局变量a,此时函数f的参数是5,所以计算后s 为5。 之后的s+=f(&a);中,a是全局变量a(因为int a=5的作用范围是那个{}),所以s为7在printf中的a是全局变量的a,因为经过上面f函数的计算,所以a为3
其他类似问题
其他15条回答
注意3点:全局变量和局部变量(局部变量优先级高),传地址和传参数,++操作int f(int *a)
//传地址,会改变传入的参数{
return(*a)++;
//先返回值,再自增}比如 int c = 2;
int d = f(&c); 结果d=2,c=3所以: int s=0;
s=5;临时a=6
s+=f(&a); s=7,a=3;这里是全局a
printf(&%d %d\n&q订笭斥蝗俪豪筹通船坤,a,s);
#include&&stdio.h&#include&&stdlib.h&int&a&=&2;int&f(int&*a){& & & & return(*a)++;&//(*a)++,是先返回*a地址内的值,然后这个函数执行以后把(*a)内值加1.}void&main(){int&s=0;& //在c文件中是局部变量在main中最外围的{}中起作用& & &{& & & & & & & & & & & int&a=5;& &//局部变量,a=5.它就在{}内起作用。建议写程序不要写成与全局变量同名。& & & & s+=f(&a);&//在这个{}内,s&=&s&+&f(&a)=&0&+&5&=&5& & & & & //然后(*a)内值再加1,此时在这个{}内a&变成了&6& & & &}s=s+f(&a);& &//此时s&=&5,整个文件内全局变量int&a&=&2&,在上一个{}内局部变量不起作用了。& & & & & & & & &//s&=&s&+&f(&a)&=&5&+&2&=&7& & & & & & & & &//此时(*a)内值加1&,a&=&2&+&1&=&3printf(&a&=&%d,&s&=%d\n&,a,s);//所以输出结果a&=&3&,s&=&7}以下是codeblock内运行结果a=3& s=7
}这部分里面重新声明了变量a,使用的就是局部的这个变量;出了}之后,这个a的生命期结束,再使用变量a时用的就是外面声明的全局变量。 return(*a)++;++在后,返回值是自加之前的值,然后自身加1,所以第一次返回5,然后局部变量a变成6,第二句函数f返回2,加上5就是7,全局变量a变成3。
主要还是定义的变量作用域的问题。还有一个容易忽略的问题,return (*a)++;这句话的意思是 先返回*a,然后*a++,即最后*a增一。不是直接返回(*a)++。进入main函数,定义变量S=0;下面这里有个{ },相当于一个作用域,也就是{ }里定义的变量只在这里面有效,出了{ },针对的就是外一个作用域。由于在{ }定义变量a=5,是局部变量,所以s+=f(&a),s=0+5=5,同时{ }内的a加以1,a=6;然后出了{ },作用域消失,{ }内定义的a,销毁。然后s+=f(&a),此时的a就是全局变量的a=2,所以s+=f(&a),s=5+2=7,同时a+1=3;最后输出,a=3,s=7.
这里有2个a变量 一个是全局变量 一个是函数内的变量。第一行全局变量a=0 (下面我们用a1表示他) 在main函数中 int a=5;
s+=f(&a);这个a = 5 是局部变量 (我们用a2表示)经过上面计算后 s=5 ;a2=6, ;
下面 s+=f(&a);
printf(&%d %d\n&,a,s);都是a1 ;所以s = 7
,a1 = 3了结果就是C答案
这涉及到两个问题1 return之后是不会再执行++操作的2 局部优先原则,但是局部变量只在声明他的局部有效,出了这个局部就失效了
在main函数中{}中的int a的作用域仅限于这个{}内,所以出了这{}后S=5,而a仍然等于2,然后s+=f(&a); 就使得S=7,a=3了。这题主要考察的是变量的定义域,第一个a=2是全局的,第二个是局部的,只限于那个{}内。起始说白了就是int a;{
}}这种情况,局部定义有效,但是出了{}就是外层的定义有效了。
这是一道函数调用题,void main()为主函数。程序先执行主函数,所以到第一个 s+=f(&a);又因为它是调用的,要看到这里 int f(int *a){
return(*a)++;}实参把a=5;赋给形参,由于是return(*a)++;所以s=5;到第二个 s+=f(&a);而第一个 int a=2; 是全局变量所以s=7;第一个 int a=2; 经过 return(*a)++;后也变成3了
全局变量int f(int *a){return(*a)++;}void main(){int s=0;{int a=5;
局部变量,s+=f(&a);
//局部变量起作用,同名全局变量被隐藏,//些时s为5}//局部失去作用,s+=f(&a);
//相当于s=5+2 ,然后a+1=2+1=3printf(&%d %d\n&,a,s);}A:2 7B:2 10C:3 7D:3 11
我认为是3,9,求大神解答
局部变量全局变量 呵呵 上面解释的很清楚
第二个s+=f(&a);使a+1
首先你定义了一个全局变量int a=2;然后函数f(int *a)目的是把你传递过来的实参数加1.注意:return (*a)++;这句是先执行返回,先把指针a指向的值返回,然后再把该指向的对象进行加1操作。主函数里面是这样运行的,定义了一个s,后面有个括号,里面又定义了个局部变量a,初始化为5;然后你调用函数f,运行完以后,s的值变成5,而临时变量a的值变成了6,继续运行,临时变量的a被释放了。后面又调用了函数f,但是这个变量a是你定义的全局变量,值为2,调用完以后,s的值就变成了7,而a的值加1变成了3.所以最后输出值为:3
7.明白了吗?注意两点:1是函数f返回值那,是先返回后,再把指向的对象加1,
2、就是主函数里面的局部变量a,和全局变量a的区别和使用。
输出的a是全局的a,第一个s+ 计算的s= 0 + 5;第二个s = 5 +2
在看看指针和引用那里
c语言的相关知识
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 语句排序题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信