请问这个c语言程序题怎么做呀,能具体解释一下吗,谢谢啦

请问这道C语言程序阅读题是怎么分析的,答案为什么是这个,谢谢啦~

这个程序中的递归函数写错了。程序执行时,会造成“死递归”从而系统栈溢出,没有输出的。

#include#includechar CMP[99],A[9999];char CMP1[] = "teacher",CMP2[]="student";int next_word(int i){int p=i;while(A[p]>='A')p++;while(A[p]==32)p++;if(Ap]==0)return 0;return p;}int cmp(int i){int p=i,q=0;memset(CMP,0,sizeof(CMP));while(A[p]>=65)CMP[q++]=A[p++];if(strcmp(CMP,CMP1)!=0&&strcmp(CMP,CMP2)!=0)return 0;return 1;}int main(){FILE* fin = fopen("mydoc.txt","r");FILE* fot = fopen("edu.txt","w");while(fscanf("%[^
]",&A)!=EOF){int x=0,y=0;do(){if(cmp(x)){y=1;break;}x=next_word(x);}while(x);if(y)fputs(A,fot);}fclose(fin);fclose(fot);free(fin);free(fot);return 0;}//纯手打,求采纳

答案是A
表达是(!x==0)
按照符号优先级,!大于==
!(逻辑取反),C语言中非零为真
!x==0,只有当x为非零数成立,成立,即为真。
当x为0时候,表达式不成立,为假。
结论:x为0即为假,x不为0为真。
B x :即x非零为真,正确。
C x!= 0 :当x为0的时候为假,x不为0的时候成立为真,正确
D x>0 || x<0 : 当x为0的时候为假,x不为0的时候成立为真,正确

!操作符在c语言中表示逻辑取反,即ture变false或false变true,或者0变1,1变0,并且!的优先级别比==高。对于!x==0,先对x取反,然后再判断结果是否等于0.
所以,A选项显然不等价,因为只有x=1时才满足

c语言编程题可以怎么做?
答:主要程序为:include<stdio.h> intmain(){ floata,b,c;scanf("%f%f%f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)printf("可以构成三角形\n");elseprintf("不能构成三角形\n");getch();return0;}

这C语言程序题怎么做?
答:scanf("%c",s);while (*(s+count++)!='\n')//因为字符串中需要统计空格,即允许有空格,所以需要这样scanf { scanf("%c",s+count);} for (int i = 0;i<count-1;i++)//逐个字符判断 { if((*(s+i)>='a'&&*(s+i)<='z')||(*(s+i)>='A'&&*(s+i)<='Z'))...

C语言的问题,这道题怎么做?
答:不做任何操作 //循环至k=8时结束循环 if(k%2==0)//此时k=8,if条件成立,执行if大括号{}内语句,此处没有大括号,故执行if语句后面紧接着的一句代码 printf("%d",k);//输出k=8,故选C return 0;//程序结束}有不懂的可以再问,楼主若觉得回答有所帮助,望采纳,谢谢!

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

请问这道c语言程序题怎么做呀
答:观察puts(w)的位置不同时输出是不同的,因为开始第一次循环时w[i]即只有w[0]被赋值一次,就打印了,后面的w[i+1]等是不确定的。第二次循环的时候w[0]和w[1]被赋值,依次类推。。。其实把puts()字符串打印函数放在第25行就可以理解了。不知道,打印的是否为原题的意思 /*这里借用楼上的...

请问这道C语言题怎么做?
答:// test171104.cpp: 定义控制台应用程序的入口点。// include "stdafx.h"include<math.h> int main(){ int a,b;//定义两个整数(范围:0-10^6)//2^20>10^6,int型是4个字节,共32位,够了 int flag;printf("请输入两个整数(范围:0-10^6):\n");scanf_s("%d%d",&a,&b);...

c语言,请问这题做的过程该是什么样?
答:说一个技巧有助你日后遇到这种类似题目时方便理解 很简单,只需要在循环内部添加一个printf语句,把变量输出就能很直观很简单地理解题目的过程了 比如这题可以在循环内加一个printf("ch[i]=%c s=%d\n",ch[i],s);编译运行后看结果就很明显了 include <stdio.h>int main(void){ char ch[7]...

这道题怎么做,c语言,求过程
答:int a = 1,b =2,c=3;第一次循环:a<b<c,先判断a<b,值为1(真),然后判断1<c,值为1(真),整个a<b<c的值为1(真),执行while循环,将a和b的值调换,c减1。此时a=2,b=1,c=2 第二次循环:a<b<c,先判断a<b,值为0(假),然后判断0<c,值为1(真),整个a<b<c的...

C语言编程题:定义一个数组,然后利用循环为数组输入10个整数,然后再将数...
答:include<stdio.h> int main(){ int a[10]={},i,sum=0;printf("请输入10个整数:\n");for(i=0;i<10;i++){ scanf("%d",&a[i]);sum+=a[i];} printf("10个元素和为:%d",sum);return 0;}

c语言 这题怎么做
答:第一次循环前i=1,x=1,这时x%2==1为真,所以x=1+5=6。然后执行continiue,i=2。第二次循环前i=2,x=6,这时x%2==1为假,所以执行x-=3,此时x=3,i++=3.第三次循环前i=3,x=3,这时x%2==1为真,所以x=3+5=8。然后执行continiue,i=4。第四次循环前i=4,x=8,这时...

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

联系反馈
Copyright© IT评价网