C语言有关问题。以下程序的输出结果是:(并且给出解释)

作者&投稿:铎田 (若有异议请与网页底部的电邮联系)
C语言输出问题,请问下面程序的输出结果是什么,并解释为什么是该结果:~

我给你解释的详细点吧。
1.你的这个写法,只是单纯的值传递,只是把10这个数字传给了 Func,Func中又开辟了一块空间名字也是X,但是地址和MAIN函数中的不同,所以你修改X=20只是修改了另一个地址的东西。意思就是有两户人家都叫张三,但是家庭地址不同。
2.如果你想修改MAIN中传过去的值,就要使用引用传值,将X的地址传过去,这样在Func中修改的就是MAIN中X的值,写法如下:
void Func(int &x)
{
x = 20;
}

这个是死循环,因为循环的条件是i<=3,但i在循环中并没有任何变化,永远是1

输出结果:c language

解释:
#if LETTER
if(c>='a'&&c<='z') c=c-32;
#else
if(c>='A'&&c<='Z') c=c+32;
#endif
这段是指当LETTER的值为真(非零)时执行第一个程序段if(c>='a'&&c<='z') c=c-32;否则执行第二个程序段if(c>='A'&&c<='Z') c=c+32;
这里宏定义#define LETTER 0已将LETTER的值置为0,故执行第二个程序段,即把A到Z中的大写字母转换为小写字母(小写字母的ASCII码比大写字母的大32),其他不变,所以C Language变成了c language.

  • 输出结果  c language


  • 解释:因为LETTER=0,所以所有大写会变成小写,如果LETTER≠0,则所有小写变大写!


  #define LETTER 0                             //定义一个宏常量 LETTER 

  main()                                                //主函数部分

  {char str[20]="C Language",c;            //字符串  赋值

  int i=0;                                                //定义一个整形变量i

  while((c=str[i])!='\0')                            //循环语句,单独处理字符串中的每一个字符,

                                                              //直到字符串结束,'\0'是字符串结束的标志.

  {i++;                                         //循环控制.i从字符串的第一个字符开始,每处理完一个就+1,

  #if LETTER                       //判断语句,判断LETTER的值,如果为真,则编译#else之前的语句,

                                                      //否则编译#else之后的语句.

  if(c>='a'&&c<='z') c=c-32;        //因为LETTER为0,所以这部分跳过,不编译.

  #else

  if(c>='A'&&c<='Z') c=c+32;        //因为LETTER为0,所以这部分是经过编译的,所以会执行.

  #endif                                        //宏编译结束.

  printf("%c",c);                                //输出处理后的字符串.

  }

  }



c lANGUAGE

这个起始就是一个大小写转换的问题

if(c>='a'&&c<='z') c=c-32;
如果他是小写 那么就转成大写

if(c>='A'&&c<='Z') c=c+32;
如果他是大写 那么就转成小写

ASCii中大小写相差32

这个程序是把大小写字母的转换


有关C语言循环的一个小问题
\/ 输入级数的项数 : 100 项数是100时,和是:0.688172179310195。继续算(1\/0) :1 输入级数的项数 : 200 项数是200时,和是:0.690653430481824。继续算(1\/0) :1 输入级数的项数 : 500 项数是500时,和是:0.692148180557946。继续算(1\/0) :0 Press any key to continue \/ include <stdio.h...

有关C语言位操作的问题: 1&0=0要怎么理解。。符号&不懂
&是位与,与之相似的有逻辑与&& 两个操作数进行位与操作时,先把操作数化成二进制数,然后每一位进行与操作,当对应的位同时为1时,结果为1,否则为0,题目是1&0,两个操作数都很简单,不用化成二进制数都知道答案,因为前面的位都是0,最后的位,一个为1,一个为0,所以结果为0,另举一例...

有关用vs2010编写C语言程序的问题,printf没有效果。请求帮助。
首先 scanf()函数写的不对,应该是scanf("%d%d",&a,&b); 其次,第二个if中判断不对,如果要判断a是否等于b 的话应该用 “if(a==b)”,而a=b是赋值语句,其判断结果恒为真,固当a>=b时,都会执行"c=a-c";.然后 c没有赋初值,c语言中默认初始值是一个很小的负数,执行c=a-c后c...

有关瑞典语言和文化方面的问题
瑞典语是瑞典的官方语言,也是芬兰的两种官方语言之一,母语人口870万,使用人口超过一千万。语法: 瑞典语是轻屈折语言。一般地,名词,性:阳性阴性通性(合称非中性),中性词;数:有复杂的复数变化,一般地-#r; 格:属格-s,定格式祥见语法部分;动词,式:多陈述式,有独立的虚拟式和命令式;时...

C语言 有关*p=a,**q=&p;的问题
int a[5]={1,2,3,4,5};int *p=a,\/\/此时p指向a[0],也就是1 q=&p;\/\/此时q指向p printf("%d\\n",*(p++));\/\/这句相当于下面的两句的合并:\/ printf("%d\\n",*p);\/\/按照p寻址并输出,此时p指向a[0],于是输出1 p=p+1;\/\/p指针向前移动,此时p指向a[1],也就是2 \/ pri...

有关英语的问题
如何学习英语 世界著名英语语言专家亚历山大(L.G. Alexander)在《二十一世纪报》上开设了一个疑难解答专栏。有一次被问到这样一个问题:定语从句与同位语从句有何区别广他竞劈头答道:“知道这种区别并不能提高你的英语,顶多不过增加有关英语的知识而已。”在略作举例说明后,他甚至得出结论:“由上...

单片机c语言的问题 有关ACC的 菜鸟求教
知道这句话是什么意思吗?sbit同位是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。在80C51单片机系统中,经常要访问特殊功能寄存器中的某些位,用关键字sbit定义可位寻址的特殊功能寄存器的位寻址对象。定义方法有如下三种:(1)sbit 位变量名 = 位...

菜鸟有关C语言的两道题
(*p)++=7,*p=7.第二个输出语句中,注意到p=a,即将指针从新指向a[0],此时有*p=1.因此很好理解了,这是一个循环输出语句,条件是p<=a[5],即此循环的作用是将整个数组输出。PS:楼主如果还有什么问题,请补充下,我还会再次来帮你解决问题的呵呵。希望这次回答对楼主有帮助。

语言障碍有哪几种类型?
上海长江医院温馨提示:对于孩子来说,玩具是最好最好的伙伴,家长要充分利用玩具来促进孩子的语言发育,在玩中不断地去描述,让孩子不断地理解并学习。如果发现孩子有严重的语言发育问题,家长要及时带孩子到正规医疗机构检查清楚病因,造成儿童语言障碍的原因有很多,家长不可掉以轻心。

c语言中有关_at_使用的问题及指针变量
_at_ 并非C语言的普通语法,而是Cx51特有的语法,属于嵌入式C的关键字,用于将特定变量存放在指定的绝对地址中。这句话有两个词语要格外注意:1、变量:即函数和位变量不能定义在绝对地址;2、绝对地址:要考虑你的物理内存到底有多大,要符合实际情况,不能超出实际边界。接下来回答你的两个问题:1...

德化县15061107715: C语言问题:下列程序执行后输出的结果是 -
百单热毒: 4,D)正确,选D)——for循环调用两次f,第一次调用返回3(a=c++使a==3),第二次调用返回4(由于c是static变量,上次调用时3赋给a后c++变c为4).最后输出是第二次调用后的返回值.

德化县15061107715: C语言,以下程序的输出结果是? -
百单热毒: 死循环啊,结果是:01234 省略 ·

德化县15061107715: 有以下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,然后结束将结果输出.

德化县15061107715: C语言以下程序的输出结果是: - --
百单热毒: s[3]='\0'; 截取到第四个字符. s[0]='a' s[1]='b' s[2]='c' s[3]='d' 所以C abcd 遇到"\0"就结束输出内容. 楼上楼下的一致选D,也许是我理解错了,呵呵.

德化县15061107715: 在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

德化县15061107715: C语言 以下程序段的输出结果是多少?? -
百单热毒: 第一个是100 var 取b得地址 所以*var = b = 100 , 所以b = 110, 所以*var = 110 第二个,因为== 的优先级高于=的优先级,所以先执行 getchar == 'A', 输入A后,二者相等,返回1 所以ch = 1 p = a ,就是取a数组的第一个元素的地址,所以*p = a[0] = 5;*p++ 这儿优先级相等,结合性为从右至左,且p++只在表达式结束后才自增, 所以就等于*p++ = a[0] = 5 同理和上面一样, ++会在表达式结束后自增,(*p)++ = a[0]++ = 5

德化县15061107715: C语言基础. 下列程序段的输出结果是 - ----. -
百单热毒: 你将printf语句改成如下即可 printf("x=%f,y=%d",x,y); 既然x是float就应该用%f y是int就应该用%d

德化县15061107715: c语言 以下程序的输出的结果是 -
百单热毒: static int x=1; 表示x是一个静态变量,它的值将被保存在静态区.通俗的说就是不论你调用incre();函数多少次,x只初始化一次,并且,其值是有保存的,即下次使用时是在上一次的基础上使用的. 循环时.i=1,调用一次incre();此时x=2,输出2. i=2,再调用一次incre();此时x并没有被再次复值,其值仍然是2,输出为2*3=6. i=3,退出循环. 所以答案为c.

德化县15061107715: C语言问题 以下程序的输出结果是# include main(){ int a=2,c=5; printf("a=%%d,b=%%d\n",a,c); }A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=... -
百单热毒:[答案] 这是一个优先集的问题 %%这个最终的结果是% 他比%d优先 所以显然a=%%d就等于a=%d. 因此显然选的是D

德化县15061107715: 我有道C语言题目~有兴趣请做做~ 以下程序的输出结果是( ). main() { char st[20]= “hello\0\t\\\”; printf(%d %d \n”,strlen(st),sizeof(st)); -
百单热毒:[选项] A. 9 9 B. 5 20 C. 13 20 D. 20 20

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