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

#define LETTER 0
main()
{char str[20]="C Language",c;
int i=0;
while((c=str[i])!='\0')
{i++;
#if LETTER
if(c>='a'&&c<='z') c=c-32;
#else
if(c>='A'&&c<='Z') c=c+32;
#endif
printf("%c",c);
}
}

输出结果: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.
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-04

    输出结果  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);                                //输出处理后的字符串.

  }

  }

第2个回答  2013-02-04
c lANGUAGE

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

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

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

ASCii中大小写相差32
第3个回答  2013-02-04
这个程序是把大小写字母的转换

C语言有关问题。以下程序的输出结果是:(并且给出解释)
输出结果: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...

C语言初学者问题 以下程序的输出结果是什么?最好有解释
main(){int a=100;\/\/因为a=100;所以执行else if(a>100) printf("%d\\n",a>100);\/\/这里a<=100是个bool值,a确实小于等于100,所以bool值为1 \/\/打印出1 else printf("%d\\n",a<=100);}

c语言问题
} m.nf就是占m列宽,小数点后有n位,如果宽度超出,正常输出,就不写了,不好写 如果%-m.nf这样的话,像上面,是右对齐,左留空格,带负号就是左对齐,右留空格。3.以下程序的输出结果是【 】main(){ int a,b;float c,d;char c1,c2;a=61;b=62;c=31.5;d=-68.87;c1='a';c2=...

c语言,以下程序运行后的输出结果是
因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10

C语言,,请详细解释,详细
C语言,,请详细解释,详细 以下程序的输出结果是()。main() {char*alpha[5]={“a”,“bc”,“def”,“1”,“23”},**p; inti; p=alpha; for(i=0;i<3;i++,p++)printf(“%s”,*p); printf(“\\t”); p=p-3; for(... 以下程序的输出结果是( )。 main() { char *alpha[5]={“a”...

c语言以下程序后的输出结果是 3223为什么
(壹)x=x+y后x=5,y=3;y=x-y后x=5,y=2;x=x-y后x=3,y=2;所以fun里的输出printf32 接下去应为是局部变量所以x,y的值都没有变 所以printf输出23 整个就是3223 (贰)fac=fac\/i 例如 1\/3!=(1\/2!)\/3 呵呵,如果还有什么问题找我 QQ:381330213 ...

c语言问题解释求详细例如main()=? int=?或者定义
然后就输出了嘛,k应该是12嘛 额,你不是想问c的语法吧………main()是主函数,程序一开始就调用这个函数,也就是运行main()里的程序块。int是Integer的缩写,意思是整数,表示声明整数型的变量。后面的i,k是变量名,就像数学里的x,y,z,一个名字,仅此而已。a[10],p[3]是数组,就是一串整...

求这个C语言问题的运行结果 并且截图
你的程序有问题啊,输入的时候你输入了三个值,后面只给了一个变量,要出错的。我把代码稍微修改了一下,到时 你输入三个数就可以了。include "stdio.h"main(){int i,a[3],sum=0;scanf("%d,%d,%d",&a[0],&a[1],&a[2]);for(i=0;i<3;i++)sum=sum+a[i];printf("sum=%d",...

C语言读程题,根据图中程序的运行结果分析下原因?
所以这个程序先执行a+的那个函数,因为有个全局变量d,所以现在的d的值为2,当2传入函数中,p的值变为2,并且因为现在有局部变量d,所以优先使用局部变量,d+=p就是d=d+p,因此d的值变为8,然后执行printf就输出了8。以后再执行外面的函数fun,此时他的参数是a+fun,因为上面已经知道内侧fun的...

谁能帮我解决下面的C语言问题啊,最好能说明解析过程。
1、结果:1 解析:执行switch(a%3),由于a%3=0,满足case 0,因此执行其后语句m++,接着执行break语句,由于break语句有跳出switch语句的功能,因此在此处跳出switch语句,执行printf语句,m自加过一次,故输出结果:1;2、结果:**0***2 解析:道理同第1题,执行switch(a),满足条件进入switch...

相似回答