这道C语言的题怎么做?

请问这道c语言编程题怎么做?~

#include
#define N 6
void main() { int a[N],i,k;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
k=0; for ( i=1;ia[k] ) k=i;
i=a[k]; a[k]=a[N-1]; a[N-1]=i;
for ( i=0;i<N;i++ ) printf("%d
",a[i]);
}

这道题的意思是 如果这两个字符串没有结束且相同位置的字符相同的话就输出,
所以结果是Chin
x[i]!='\0'&&y[i]!='\0' 的含义是 当前两个字符串中同一位置的字符不为结束符'\0 ,也就是只要两个字符串都没有结束时进行循环
if(x[i]==y[i])
printf("%c",x[i++]);
else
i++;
这个条件分支的意思是如果相同位置的字符相同,就打印此字符,且位置增进1,以便于下次比较
如果相同位置的字符不相等,那么 增进1,继续比较下一个字符

您好,很高兴回答您的问题。

对于这个题目而言,主要是考查if~else函数的匹配使用情况。这个知识点就一定要记住:if总是与在它前面的、离它最近的、没有与别的if匹配的else匹配。有多层if语句的,一定要从最里层的if与else开始匹配。

所以整个匹配形式如图所示:

那么我们分析的时候,从最外层的if开始,if(a=b+c),其中a=b+c是赋值语句,是永远成立的条件,就不会执行a=b=c=-1这句话;并且在此情况下,a的值为0+-1=-1,那么也不满足a>0和a==0,所以执行的是倒数第二个else语句,所以最后的结果是a=b=c=1,所以答案应该选A。



首先,这道题目实际运行的话,答案并不是A,而是:

编译错误

是无法编译通过运行!即使添加头文件stdio.h后,得到答案A,仍然还是有编译警告:








那么,要想得到答案A,需要修改如下两处:

错误修改

运行结果:

程序运行结果

只有这样,才能得到答案A,有同学可能会有疑问为什么不是C?注意的是a=b+c并不是关系表达式,如果是答案C,关系表达式应该这样写a==b+c。


程序运行结果:



这个题目关键是考核学生的观察能力。
其实,把关系运算符的相等符(==)写成赋值符(=)是初学者最容易犯的错误。
在if(a=b+c)这一句中,本意是比较a与b+c是否相等,表达式的正确写法是a==b+c,这样,如果二者相等,表达式的值为真,去执行if后面的语句,否则,执行else后面的语句。
在这个题目中,如果没有写错双等号,是判断a与b+c是否相等,前面abc分别是2/0/-1,a+b是-1,2≠-1,表达式的值是假。程序去执行else后面的a=b=c=-1。
现在,题目故意写错,它把a=b+c作为if语句的判断表达式,我们看它的值。首先a=b+c是一个赋值语句,它把b+c的值-1赋值给a,即,a=-1,然后判断它的逻辑值,它就用a的值作为逻辑值,而C语言对数字的逻辑值的解释是,除了0为逻辑假,其他非0数字都是逻辑真,所以,a=-1的逻辑值为真。
这就有意思了,程序判断逻辑真,会执行if语句后面的内容。可是后面仍然是一个if语句,而且是:
if()
else if()
else
结构,
先判断a是否>0,因a=-1>0为假,继续判断a是否=0,a=-1≠0仍然为假,最后只能执行else后面的a=b=c=1。
因此,最后打印出A选项的1,1,1。
结论:A选项正确。

语句的执行与判断过程,见图片:



第一个里面等价于y=y+(i++),所以y=3+2=5;(这里的y是函数里面临时定义的,屏蔽了外面的全局变量)
main函数里面y=y+(i++)=2+2=4;(这里的y是全局变量,注意i仍然是2,因为函数传递的形参没有改变实参)

C语言,第三题怎么做
答:这个你可以用数组做,假设有三个数组a[5],b[5],c[5],代表三门成绩,而a[1],b[1],c[1]就代表第一个同学的成绩,依次类推。第一问,(a[1]+b[1]+c[1])/3,第一个同学的平均分,这里用个for循环即可,...

以下c语言程序题是怎么做的啊?
答:第一题 主要考的是 各种运算符之间的优先级别 优先级顺序!>&&>|| include<stdio.h> void main(){ int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);} //这段程序相当于 include<stdio.h> vo...

请问这道c语言题咋做,24题讲解一下...谢谢
答:由while那句可知:本程序按单个字符扫描。由输入为2743可知:总共循环4次。到最后的回车程序停止。=== 第1次循环,输入的c为'2'。switch的判别值为0,,跳到case 0。说明:由于c语言中switch语句的特点case后面没有break...

这道c语言怎么做,解析看不懂,谁能详细说一下
答:所以从第八位开始赋值:wer空格is空格red.3、所以答案就是:A Fig flower is red.The sky is blue.ps:另外我觉得这道题有错才对,因为前面并没有定义过A和B数组,不知道这是出题故意的还是说打印问题 ...

帮忙做一下这道C语言题目。
答:实现本题,使用检测各个位的值是否为1即可,是1时,打印出1,否则打印0。使用循环来检测8个位。以下是在手机上用易历知食软件里的微C程序设计功能编写的一个示例,实现题目中前三个要求。手机上的代码如下图(为方便,...

C语言的问题,这道题怎么做啊?
答:这个题,就是选择答案D。图中,if(n/2)其实就是等价于if(n/2!=0),考虑到n是正数,它也就等价于if(n>1)总之,第一次调用,就满足条件,进行递归调用:fun(5)………具体见图所示(一个红框,就是一次函数调用...

C语言 请问这道题怎么做
答:s=*p1++;按照优先级,先将*p1赋值给s,即s='G',p1再向前移一个字节,指向C。p1=*p2--;同样的道理,按照优先级,*p2指向的值'A'先赋值给*p1,此时*p1就是A,p2--后p2指向E。p2=s;这句的意思是将s=‘G...

c语言这个题怎么写代码?
答:经过实验,这题目其实没有交代清楚,要想达到题目演示的结果,双休每天下降的值N是不变动,所以B努力提示后,工作日上升值x,休息下降值依然是N。程序:直接x初值取n,那么B的结果肯定小于A,之后只要循环x每次增加,知道...

这道C语言怎么做呀?
答:程序代码是有问题的,修正如下:include <stdio.h> int main() { int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=4;j>0;j--) { switch(j){ case 1:case 2:printf("%d",*p);break;case 3:...

这道题c语言选择题怎么做的
答:执行main:调用fun,传参(4、变量x地址)首层fun :形参n=4,*s=x的地址(值0)。执行else{...} 首先函数递归调用自己,传参(4-1,首层变量f的地址),(*s=f这句要等前面递归完成才会执行) 递归1fun:...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网