| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 289 人关注过本帖
标题:看看哪有问题
收藏  订阅  推荐  打印 
yt414204458
Rank: 2
等级:注册会员
帖子:186
积分:1984
注册:2008-3-1
看看哪有问题

int a=2;
int f(int n)
{static int a=3;
int t=0;
if(n%2) {static int a=4;t+=a++;}
else    {static int a=5;t+=a++;}
return t+a++;
}
main()
{int s=a,i;
for(i=0;i<3;i++) s+=f(i);
printf("%d\n",s);
}
这个题有很多static int a ,到底应该以哪一个为主,请以第一次循环举下例子,详细的把第一次循环给讲一下,谢了

[ 本帖最后由 yt414204458 于 2008-8-29 11:07 编辑 ]
搜索更多相关主题的帖子: 警告  
2008-8-28 22:10
benbenchuying
Rank: 2
等级:注册会员
威望:1
帖子:51
积分:652
注册:2008-8-5

你仔细看看有很多地方没加分号
2008-8-28 22:56
ONEPROBLEM
Rank: 12Rank: 12Rank: 12
来自:编程中国
等级:版主
威望:8
帖子:1381
积分:12632
注册:2008-7-11

呵呵~~~
2008-8-28 22:58
yt414204458
Rank: 2
等级:注册会员
帖子:186
积分:1984
注册:2008-3-1
回复 2# benbenchuying 的帖子

晕了,刚刚不能运行,重打开了一下就可以了

一切从爱C开始
2008-8-28 23:13
咸鱼今天要翻身
Rank: 1
等级:新手上路
帖子:5
积分:172
注册:2008-8-27

#include <stdio.h>
2008-8-29 00:00
yt414204458
Rank: 2
等级:注册会员
帖子:186
积分:1984
注册:2008-3-1

请重新看一下这个问题

一切从爱C开始
2008-8-29 19:36
wylhyly
Rank: 1
来自:浙江
等级:新手上路
帖子:6
积分:208
注册:2008-8-28
寂寞的编程学习路有浮噪的音乐陪伴我

题目中又四个a,互不相同,说也说不清楚,你自己去调试吧
int f(int n)
{static int a=3;printf("%d\n",a);getch();
int t=0;
if(n%2) {static int a=4;t+=a++;printf("%d\n",a);getch();}
else    {static int a=5;t+=a++;printf("%d\n",a);getch();}
return t+a++;
}
2008-8-29 22:23
yt414204458
Rank: 2
等级:注册会员
帖子:186
积分:1984
注册:2008-3-1
回复 7# wylhyly 的帖子

你可以标上序号给讲一下吗?这题调试了一下也有几个地方不明白

一切从爱C开始
2008-8-30 14:13
wylhyly
Rank: 1
来自:浙江
等级:新手上路
帖子:6
积分:208
注册:2008-8-28
寂寞的编程学习路有浮噪的音乐陪伴我

把第一个全局静态变量a标记为a1,
把第二个f(int)函数内的局部静态变量a标记为a2,
把第三个在{ }内的局部静态变量a标记为a3,
把第四个在{ }内的局部静态变量a标记为a4,
与原程序是一样的。
要注意的是静态变量是编译系统在编译程序是完成的,程序运行时static int a=3,4,5;这三条语句并不再执行;还有编译系统碰到同名变量时是由近到远查找的;t+=a++;这条语句等同于 t+=a;a++;。讲到这儿我也不好意思了。
#include <stdio.h>
int a1=2;
int f(int n)
{int t=0;
static int a2=3; printf("a2=%d\n",a2);
if(n%2) {static int a3=4; t+=a3++; printf("a3=%d\n",a3); }
else    {static int a4=5;t+=a4++;printf("a4=%d\n",a4); }
return t+a2++;
}
main()
{int s=a1,i;
for(i=0;i<3;i++) s+=f(i);
printf("%d\n",s);
}
在初学的时候我也很模糊,其实只要有别人会的我肯定也会的自信,再去翻一下教科书就明白了。
2008-8-31 01:17
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.070319 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved