| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:[求助]一道编程题
只看楼主 加入收藏
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
 问题点数:0 回复次数:7 
[求助]一道编程题

/* 函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,
并通过外部(全局)变量c1、c2、c3返回主函数。例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。
void fun(long n , int *c1 , int *c2 , int *c3)
*/


#include <stdio.h>
void fun(long n, int *c1 , int *c2, int *c3);

int c1 = 0;
int c2 = 0;
int c3 = 0;

int main(void)
{
long n;
scanf("%d", &n);
fun(n, &c1, &c2, &c3);
printf("c1=%d, c2=%d, c3=%d\n", c1, c2, c3);
return 0;
}

void fun(long n, *c1, *c2, *c3)
{
int i;
for (i = 0;;i++)
{
if (n % 10 ==1 ) *c1++;
else if (n % 10 ==2) *c2++;
else if (n % 10 ==3) *c3++;
if (n = n / 10) break;
}
}

全局变量不会使```
我这样编行嘛```
编译器找我好多错``我都不知道怎么改```

搜索更多相关主题的帖子: int void fun long 变量 
2007-01-17 17:26
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
#include <stdio.h>
void fun(long n);/*既然是全局变量,就没有必要做参数了*/

int c1 = 0;
int c2 = 0;
int c3 = 0;

int main(void)
{
long n;
scanf("%ld", &n);
fun(n);
printf("c1=%d, c2=%d, c3=%d\n", c1, c2, c3);
return 0;
}

void fun(long n)
{
while(n>0)
{
if (n % 10 ==1 ) c1++;
else if (n % 10 ==2) c2++;
else if (n % 10 ==3) c3++;
n=(int)n/10;
}
}


坚决不跟用TC的人打交道!
2007-01-17 17:51
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
以下是引用zbqf109在2007-1-17 17:51:07的发言:
#include <stdio.h>
void fun(long n);/*既然是全局变量,就没有必要做参数了*/

int c1 = 0;
int c2 = 0;
int c3 = 0;

int main(void)
{
long n;
scanf("%ld", &n);
fun(n);
printf("c1=%d, c2=%d, c3=%d\n", c1, c2, c3);
return 0;
}

void fun(long n)
{
while(n>0)
{
if (n % 10 ==1 ) c1++;
else if (n % 10 ==2) c2++;
else if (n % 10 ==3) c3++;
n=(int)n/10;
}
}

这是运行情况的截图:在压缩文档里。

fFIBOrfZ.rar (5.25 KB) [求助]一道编程题



坚决不跟用TC的人打交道!
2007-01-17 17:53
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
得分:0 
可题目说要参数传递``而且是要地址该如何是好呢?~
2007-01-17 20:36
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 

那就不要用全局变量么,用局部变量。而且你这个程序根本不必用全局变量,不必用全局变量的时候,最好不要用。


坚决不跟用TC的人打交道!
2007-01-17 21:01
lzz4438253
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-1-4
收藏
得分:0 

#include<stdio.h>
int c1 = 0;
int c2 = 0;
int c3 = 0;
void count(long n) {
int i = 1,j;
while( j = ((n/i) % 10) ) {
if(j == 1) c1++;
if(j == 2) c2++;
if(j == 3) c3++;
i *= 10;
}
}

void main(){
long n;
printf("请输入n\n");
scanf("%d",&n);
count(n);
printf("%d ",c1);
}



我乱写的


2007-01-17 21:31
intin
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-1
收藏
得分:0 
以下是引用zbqf109在2007-1-17 21:01:55的发言:

那就不要用全局变量么,用局部变量。而且你这个程序根本不必用全局变量,不必用全局变量的时候,最好不要用。

说得有理.设全局变量的作用是增加了函数间数据联系的渠道.但是,它同时也有明显的缺点:降低了函数的通用性,限定了函数的移植性.在程序中应尽量避免.


2007-01-17 21:40
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
得分:0 
学习学习`````
谢谢各位指点```
2007-01-17 21:55
快速回复:[求助]一道编程题
数据加载中...
 
   



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

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