| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 996 人关注过本帖, 1 人收藏
标题:C程序题求解,我一点思路都没啊:使函数“返回”两个值
只看楼主 加入收藏
nsns001
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-13
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:12 
C程序题求解,我一点思路都没啊:使函数“返回”两个值
题目描述

主函数定义数据  "int  a[10], max, min ; ",   键盘输入10个正整数,由被调函数找出最大和最小的素数并分别存入上面的max和min,然后在主函数中输出。若无素数,请输出"No"。

要求:本题共写三个函数,判断一个数是否素数的代码单独写成一个函数。


输入

输入10个正整数,如:

6  9  8  12  18  21  39  27  15  30


输出

输出最大最小素数,或No

如:

No


样例输入
5 9 17 11 2 29 3 1 23 17
样例输出
max=29
min=2
搜索更多相关主题的帖子: 正整数 
2011-04-20 20:02
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:2 
可以利用指针来实现
2011-04-20 20:06
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:2 
程序代码:
#include <stdio.h>

int is_prime_p(int n) {
    int i;
    if (n % 2 == 0) {
        return 0;
    }
    for (i = 3; i * i <= n; i += 2) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

int manipulate(int a[], int * max, int * min) {
    int i;
    for (i = 0; i < 10; i++) {
        if (is_prime_p(a[i])) {
            if (a[i] > *max) {
                *max = a[i];
            }
            if (a[i] < *min) {
                *min = a[i];
            }
        }
    }
    return 0;
}

int main() {
    int a[10], max = 0, min = 2147483647, i;
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }
    manipulate(a, &max, &min);
    if (max == 0) {
        printf("No\n");
    } else {
        printf("%d %d\n", max, min);
    }
    return 0;
}
2011-04-20 20:26
enxinran
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-4-20
收藏
得分:2 
回复 3楼 voidx
程序代码:
#include <stdio.h>

int is_prime_p(int n) {
    int i;
    if (n % 2 == 0) {
        return 0;
    }
    for (i = 3; i * i <= n; i += 2) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

这里好像可以简单一点
2011-04-20 21:07
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 4楼 enxinran
请指教
2011-04-20 21:09
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:2 
程序代码:
#include<stdio.h>

void Find_Prime(int a[],int p,int q)
{
    int i,j,t,flag=1;
    p=0,q=0;

    for(i=0;i<9;i++)  //先排序,然后选出的素数就有顺序的
        for(j=i+1;j<10;j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }

     for(i=0;i<10;i++)
     {
         for(j=2;j<i;j++)
             if(i%j==0) break;

          if(j==i)
          {
              if(flag==1)  //第一次赋值就可以了
              {
                 p=i;
                 flag=0; 
              }
              q=i;
          }
     }
}
  
int main()
{
    int a[10],min=0,max=0,i;

    int &p=min,&q=max;  //引用

    for(i=0;i<10;i++)
        scanf("%d",&a[i]);

    Find_Prime(a,p,q);

    if(min==0)
        printf("\nNo\n");
    else
        printf("max=%d\nmin=%d\n\n",max,min);

    return 1;
}
我写的程序,结果不对,为何?

   唯实惟新 至诚致志
2011-04-20 21:37
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
两个很好办  因为这是在C区 不能说引用

void fun(int *p,int *q)

调用的时候fun(&a,&b)就可以了双向传递了  如果要很多返回值 直接传个数组

                                         
===========深入<----------------->浅出============
2011-04-20 21:43
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
int &p=min,&q=max;  // *_* 6楼去复习一下指针和引用传递
void Find_Prime(int a[],int * p,int * q) // 这里函数的参数应该定义引用传递,函数里面用 *p 和 *q 改变实参的值
Find_Prime(a, &p, &q) // 函数调用的时候传递实参的地址


C 不能说引用啊,我错了
2011-04-20 21:45
enxinran
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-4-20
收藏
得分:0 
回复 4楼 enxinran
弄错了、、、
2011-04-23 22:16
enxinran
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-4-20
收藏
得分:0 
回复 4楼 enxinran
为什么不用
 for(i=0;i<10;i++)
     {
         for(j=2;j<i;j++)
             if(i%j==0) break;
呢??
2011-04-23 22:18
快速回复:C程序题求解,我一点思路都没啊:使函数“返回”两个值
数据加载中...
 
   



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

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