三道VC++编程题,求详解

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:12:23
题目是将小写字母变成对于大写字母后的第二个字母。其中y变成A,z变成B.
#include<stdio.h>
void main()
{char c;while((c=getchar())!='\n')
{if(c>='a'&&c<='z')
{c=c-32+2;
if(c>'Z')c=c-26;}
printf("%c",c);}
}
(if(c>'Z')c=c-26给出这个条件的意思,我看不懂。。。。求详解)
第二道:若运行以下程序是从键盘输入2374《回车》,则结果是多少
include<stdio.h>
void main()
{int c;
while((c=getchar())!='\n')
switch(c-'\2')
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
printf("\n");}
求此题的解题思路,和结果。
第三道:t=0;
while(printf("*")
{t++;if(t<3)break;}
其中循环控制表达式与‘0’等价,为什么等价?
这三道我想了很久都不晓得为撒子,求那位好心人告诉我,如果结果使我想通了,30分送上
第二题,还不是黑明白,我晓得的答案是668977.但是VC++编译出来的答案4596,为什么呢? 一楼解答的二题答案我还不是很明白。。希望说详细点

前两个一楼说了我就不说了..我说第三个..while()里是条件..0或者1.也就是假或者真..而printf()函数返回的是打印字符的个数..printf("*")的返回值即为一..所以WHILE为真..就这样..具体可以参考MSDN..printf函数的返回值解释..

======================================================================
Return Value
Returns the number of characters printed, or a negative value if an error occurs.
======================================================================
至于你说的第二题..你的那个答案应该是667798,,这个答案是c-'2'的结果..至于4596是c-'\2'的结果..两个是不一样的..是由于switch的条件不用..

int main(int argc, char* argv[])
{
char c;
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z') //判断输入的字条是不是小写
{
c=c-32+2; //如果是的话减32,大写字母的ascii码比小写字母小32,所以减32为大写,然后加2,就成了大写字母的后两位了
if(c>'Z') //如果说转换后的字条大于大写的Z了,也就是超出最后一个了就减去26个字母,这样就可以得到第二遍的字符的位置了
c=c-26;
}
printf("%c",c);
}

return 0;
}

void ma