| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1420 人关注过本帖
标题:谁能分析一下这个程序的运行结果为什么是t*M
只看楼主 加入收藏
海的女儿
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-6-23
收藏
 问题点数:0 回复次数:20 
谁能分析一下这个程序的运行结果为什么是t*M

#include <stdio.h>


void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for (i=0;a[i]!='\0'&&b[i]!='\0';i++)
if(a[i]==b[i])
if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
getch();
}

搜索更多相关主题的帖子: 结果 运行 
2007-06-26 00:04
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 

知道char型吗?知道 ASCII码值 吗?


论坛是我家灌水靠大家
2007-06-26 00:11
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

-32你想转变成什么字符呢?


深山苦学C语言,终年不见外面世界。
2007-06-26 00:13
海的女儿
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-6-23
收藏
得分:0 

这位老师,你能帮我用文字分析一下这个程序吗?
哪个结果怎么来的?
先谢谢你啦!

2007-06-26 00:13
海的女儿
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-6-23
收藏
得分:0 
我是在做一道程序分析题啊。一张卷子上的。
我也不太清楚大小写字母之间怎么转换的?
请懂这方面的朋友帮我解释一下。
2007-06-26 00:17
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 

-32 变成字符4
这个程序结果是t*m 证明执行了+32 把T(84)变成了t(116)


论坛是我家灌水靠大家
2007-06-26 00:17
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 
这样的话,那我来解答一下吧。等我看一下程序。

论坛是我家灌水靠大家
2007-06-26 00:19
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 

void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for (i=0;a[i]!='\0'&&b[i]!='\0';i++)
if(a[i]==b[i])
if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
getch();
}
第一个字符相等但是是大写就+32成小写字母;第二个不相等就对应这句else printf("*");就输出*,第三字符也相等因为小写字母-32就变成大写字母,所以输出M。

[此贴子已经被作者于2007-6-26 0:31:35编辑过]


深山苦学C语言,终年不见外面世界。
2007-06-26 00:24
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
收藏
得分:0 
搞了半天原来是我自己误解了。

[此贴子已经被作者于2007-6-26 0:30:52编辑过]



深山苦学C语言,终年不见外面世界。
2007-06-26 00:28
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 

#include <stdio.h>
void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for (i=0;a[i]!='\0'&&b[i]!='\0';i++) \\ \0是字符串的结束,即判断是否到了字符串未尾

if(a[i]==b[i])
/* a[0]是T 相应的ASSCII码为84,b[i]是T 相应的也是84。这里要知道ASSCII码值才行*/


if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);
/*判断,如果a[i](这一次循环,i=0,即数组下标0的元素)为T T的相应ASSCII是84,是否大于等于a(a的ASSCII码为98
),条件不成立,拉倒!执行else输出。*/

else printf("%c",a[i]+32);
/*因为上面的程序不成立,所以执行了这个else,输出 a[i]=T +32 即 84+32 等于ASSCII值的116,即t 小写的t*/

else printf("*");
/*这里的else配对第一个if语句!要看清!*/



getch();
}


然后呢
就到了第二次循环!a[i]等于1,即下标1的元素为i.
第一个if,判断!if(a[i]==b[i]) 不成立!
执行else,输出 *
第三次循环!也就是和第一次循环那样解释了。


这样能看懂了吗?附上ASSCII值表:http://dev.csdn.net/article/41/41977.shtm
对不起!睡觉了,晚安!!!


论坛是我家灌水靠大家
2007-06-26 00:29
快速回复:谁能分析一下这个程序的运行结果为什么是t*M
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018698 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved