| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1230 人关注过本帖
标题:用函数写一个后继项的问题,求各位大神解答
只看楼主 加入收藏
浅暗花璃
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2016-3-31
结帖率:77.78%
收藏
已结贴  问题点数:14 回复次数:2 
用函数写一个后继项的问题,求各位大神解答
请编写函数void fun(int a[],int n),其功能是:生成并一个数列的前20项。该数列的第一、二项分别为2、3,其后继项按下列规则生成:若前两项的乘积是一位数,则取该乘积为后继项;若前两项的乘积是二位数,则取该乘积的十位数字和个位数字依次作为数列的两个后继项。编写main函数,声明一个足够大的数组a(数组长度为100),并从键盘上输入待生成数列中元素的个数n,用a和n作为实在参数调用函数fun,按每行5个依次输出数列中的各数。




#include <stdio.h>
#define N 16
int f(int n,int a[]);
void main()
{
    int i,n,b[N],w;
    scanf("%d",&n);
//    for(i=0;i<n;i++)
        w=f(n,b);
    printf("%5d",w);
}
int f(int n,int a[] )
{
    int s,r,t,i;
    s=0;
    if(i==0)
        a[0]=2;
    if(i==1)
        a[1]=3;
    else
    {    for(i=2;i<n;i++)
         s=a[i-1]*a[i-2];

    if(s/10>0)
    {    a[i]=s/10;
    a[++i]=s%10;}
    else
    a[i]=s;}
   
    return(a[i]);
    怎么运行不对?
搜索更多相关主题的帖子: include 键盘 元素 
2016-04-17 19:52
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:7 
回复 楼主 浅暗花璃
#include <stdio.h>
#define N 16
int f(int n,int a[]);
void main()
{
    int i,n,b[N],w;
    scanf("%d",&n);
//    for(i=0;i<n;i++)
        w=f(n,b);
    printf("%5d",w);
}
int f(int n,int a[] )
{
    int s,r,t,i;
    s=0;
    if(i==0)
        a[0]=2;
    if(i==1)
        a[1]=3;
    else
    {    for(i=2;i<n;i++)
         s=a[i-1]*a[i-2];

    if(s/10>0)
    {    a[i]=s/10;
    a[++i]=s%10;}
    else
    a[i]=s;}
   
    return(a[i]);
}
不用返回函数,数组名相当于指针。

你写的代码也有问题,重新写过吧。

[此贴子已经被作者于2016-4-17 20:29编辑过]

2016-04-17 20:27
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:7 
程序代码:
//请编写函数void fun(int a[],int n),其功能是:生成并一个数列的前20项。
//该数列的第一、二项分别为2、3,其后继项按下列规则生成:若前两项的乘积是一位数,
//则取该乘积为后继项;若前两项的乘积是二位数,则取该乘积的十位数字和个位数字依次作为数列的两个后继项。
//编写main函数,声明一个足够大的数组a(数组长度为100),并从键盘上输入待生成数列中元素的个数n,
//用a和n作为实在参数调用函数fun,按每行5个依次输出数列中的各数。
#include <stdio.h>
#define N 100
void f(int a[],int n);
main(){
    int i,n,a[N];
//    scanf("%d",&n);
    n=15; 
    a[0]=2;a[1]=3;
    f(a,n);
    for(i=0;i<n;i++){
        printf("%2d",a[i]);
        if(i%5==4)
            printf("\n");
    }
}
void f(int a[],int n)
{
    int i=2;
    while(i<n){
        int tmp=a[i-1]*a[i-2];
        if(tmp<10){
            a[i]=tmp;
        }else{
            a[i]=(tmp/10)%10;
            a[++i]=tmp%10; 
        }
        i++;
    } 
} 

剑栈风樯各苦辛,别时冰雪到时春
2016-04-17 21:01
快速回复:用函数写一个后继项的问题,求各位大神解答
数据加载中...
 
   



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

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