| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1372 人关注过本帖
标题:求解,函数部分。谢谢。
只看楼主 加入收藏
漠河
Rank: 2
等 级:论坛游民
帖 子:55
专家分:27
注 册:2016-10-5
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:13 
求解,函数部分。谢谢。
1编写一个数阶的函数,在主函数中调用,输出10以内的所有数的阶乘;
2编写递归函数,求出给点定数字的所有(质子)因子,例如72=2*2*2*3*3;
2016-10-24 16:36
漠河
Rank: 2
等 级:论坛游民
帖 子:55
专家分:27
注 册:2016-10-5
收藏
得分:0 
回复 楼主 漠河
希望能有解释。谢谢。

[此贴子已经被作者于2016-10-24 16:40编辑过]

2016-10-24 16:38
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:5 
你这是在求作业答案吗?

帖子已经发出来差不多一个小时了,大家都是看了一下都没有回复,就是不想直接给你答案。

你至少自己思考一下啊,说说你的思路。

代码测试环境:  WinXP+C-Free5.0.
2016-10-24 17:34
漠河
Rank: 2
等 级:论坛游民
帖 子:55
专家分:27
注 册:2016-10-5
收藏
得分:0 
回复 3楼 vvvcuu


[此贴子已经被作者于2016-10-25 09:37编辑过]

2016-10-24 18:18
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:1 
我做了第二个,但没有应用递归函数(是我原来自己练习做的,因等下要自修,发帖时间仓促,没写解释,但细看一下还是能够明白的)
可惜没有依尽题意,没有用到递归函数
#include<stdio.h>
#include<math.h>
  int main()
  {
      int a,b,i=2;
      printf("请输入需要分解的整数:\n");
      scanf("%d",&a);
      b=sqrt(a);
      printf("分解结果是:\n%d=",a);
      while (i<=b)
          if (a%i==0)
          {
              printf("%d*",i);
              a=a/i;
              b=sqrt(a);
          }
          else i++;
          printf("%d\n",a);
          return 0;
  }

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-10-24 19:05
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:1 
问题1的代码如下,问题2我还没有想出来
#include<stdio.h>
int fun(int a);  //声明一个函数
main()
{
     int i;
     
     for(i = 1; i <= 10 ; i++) //分别求1-10的阶层
     {
         printf("%d",fun(i)); //调用函数
         printf("\n");
     }
     
}

int fun(int a)  //自定义函数主体
{
     int i,sum=1;
     for(i = 1;i <= a;i++)  //计算累加,累加值由sum保存
     {
         sum*=i;
     }
     return sum;
 }

早知做人那么辛苦!  当初不应该下凡
2016-10-24 19:16
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:1 
问题2用递归函数没想出来,
#include<stdio.h>
void fun(int a);
main()
{
    int n;
   
    printf("请输入一个数字:");
    scanf("%d",&n);
    printf("%d=",n);
     
    fun(n);
    return 0;
   
}

void fun(int a)
{
    int i;
    int num=a;
    for(i = 2 ; i <= a ; i++)
    {
      if(num%i==0)
      {
        num=num/i;
        if(i==num*i)
        {
            printf("%d",i);
        }
        else
        {
        printf("%d*",i);
        i--;
        }
      }
    }
}

早知做人那么辛苦!  当初不应该下凡
2016-10-24 21:07
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:1 
#include <stdio.h>

void f(int n,int i)
{
    if(n==i)
    {
        printf("%d",i);
        return ;
    }
    else if(!(n%i))
    {
        f(n/i,i);
        printf("*%d",i);
    }
    else f(n,++i);
   
}
int main()
{
    int n,m=2;
    scanf("%d",&n);
    printf("%d=",n);
    f(n,m);
    return 0;        
}

这里没有判断n是否是素数,所以,如果碰到n是素数,那么输出就是n=n了。
2016-10-24 21:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:1 
晚修我自己再用递归法做了一下:不过感觉还是比linlulu001版主的复杂了一些,但我也把我的写来给大家看一下
#include<stdio.h>
int main()
{
 int a,fun(int a);
 scanf("%d",&a);
 if (a<=0)
 {
  printf("scanf error\n");
  return 0;
 }
 printf("%d=",a);
 if (a==1)printf("1");
 else fun(a);
 printf("\n");
 return 0;
}
int fun(int a)
{
   static int j=0;
   int i;
   for (i=2;a%i;i++);
   if (j)printf("*%d",i);
   else
  {
     printf("%d",i);
     j=1;
   }
   if (a/i>1)fun(a/i);
   return (a);
}
和上楼一样还是没有判断n是素数——所以,如果碰到n是素数,那么输出就是n=n了。

[此贴子已经被作者于2016-10-24 22:00编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-10-24 21:53
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:6 
//把8楼的顺序调了一下,从小到大顺序输出素因子
#include <stdio.h>

void f(int n,int i)
{
    if(n==i)
    {
        printf("%d",i);
        return ;
    }
    else if(!(n%i))
    {
        printf("%d*",i);
        f(n/i,i);
    }
    else f(n,++i);
   
}
int main()
{
    int n,m=2;
    scanf("%d",&n);
    printf("%d=",n);
    f(n,m);
    return 0;        
}
2016-10-25 13:09
快速回复:求解,函数部分。谢谢。
数据加载中...
 
   



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

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