[程序排错]关于“全局变量”和“局部变量”的两个简单程序,请教各位大侠,谢谢。

msdner 2003-10-16 03:36:45
程序一、这是一个死循环,错在哪里?

#include <stdio.h>

void print_letter2(void);

int ctr;
char letter1 = 'x';
char letter2 = '=';

int main(void)
{
for ( ctr = 0; ctr < 10; ctr++)
{
printf("c%",letter1);
print_letter2();
}
return 0;
}

void print_letter2(void)
{
for ( ctr =0; ctr < 2; ctr++)
printf("c%",letter2);
}



程序二、对程序进行一些修改,变成如下程序,为什么会打印30个C,而不是“X”和“=” ,觉得很奇怪,大家帮忙分析一下,谢谢。

#include <stdio.h>

void print_letter2(void);



int main(void)
{

char letter1 = 'X';
int ctr;
for ( ctr = 0; ctr < 10; ctr++)
{
printf("c%",letter1);
print_letter2();
}
return 0;
}

void print_letter2(void)
{


char letter2 = '=';
int ctr;
for ( ctr =0; ctr < 2; ctr++)
printf("c%",letter2);
}

...全文
30 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdner 2003-10-16
  • 打赏
  • 举报
回复
谢谢大家,我明白了。
daizh 2003-10-16
  • 打赏
  • 举报
回复
程序一:
ctr是全局变量,在每次调用print_letter2()后ctr被赋值给2,这样它永远小余10,所以外围循环是“死循环“。
程序二:
printf("c%",letter2);应该为printf("%c",letter2);

Weigehoho 2003-10-16
  • 打赏
  • 举报
回复
看了一遍程序,楼上说得很对
局部变量是不好掌握,不过你第一个问题好多人都犯过,我也引以为戒,不能再阴沟翻船阿
Hot_Forever 2003-10-16
  • 打赏
  • 举报
回复
1.每当调用外部循环和print_letter2()函数时候,都把ctr赋为0,因此ctr的值永远都只会是
0和1,死循环
2.晕啊,是%c不是c%,你打c%当然出来的就是c了

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧