2767: 指针引出奇数因子

2767: 指针引出奇数因子

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit:
1153  Solved: 709
[Submit][Status][Web
Board
]

Description

编写函数 int fun(int x, int
*pp)。其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数。若x的值为30,数组中的数为1,3,5,15,函数返回4。
用下面的main()函数进行测试:
提交时提交全部代码

/*C++*/
int main()
{
    int a[50],x,n;
    cin>>x;
   
n=fun(x,a);
    cout<<n<<endl;
    for(int i=0; i<n;
i++)
        cout<<a[i]<<" ";
    cout<<endl;
   
return 0;
}

/*C语言*/

int main()
{
    int a[50],x,n;
    scanf("%d",&x);
   
n=fun(x,a);
    printf("%d\n",n);
    for(int i=0; i<n; i++)
       
printf("%d ",a[i]);
    printf("\n");
    return 0;
}

Input

一个整数

Output

输入的整数的奇因子个数,以及这些奇因子

Sample Input

30

Sample Output

4
1 3 5 15
#include<stdio.h>
int main()
{
    int a[50],x,n,i;
    scanf("%d",&x);
    n=fun(x,a);
    printf("%d\n",n);
    for(i=0; i<n; i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}
int fun(int x,int *a)
{
    int i,m;
    int k=0;
    for(i=1;i<x;i=i+2)
    {
        if(x%i==0)
        {
            a[k++]=i;
            m=k;
        }
    }
    return m;
}

  

 

原文地址:https://www.cnblogs.com/mjn1/p/8692315.html

时间: 2024-08-30 15:17:33

2767: 指针引出奇数因子的相关文章

第十六周OJ平台 Problem D: 指针引出奇数因子

Description 编写函数 int fun(int x, int *pp).其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数.若x的值为30,数组中的数为1,3,5,15,函数返回4. 用下面的main()函数进行测试: int main() { int a[50],x,n; cin>>x; n=fun(x,a); cout<<n<<endl; for(int i=0; i<n; i++) cout<

c-函数指针(求奇数偶数的和)

1 #include <stdio.h> 2 3 /* 4 编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n,当输入 n 为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数). 5 */ 6 7 //1/2 + 1/4 +...+ 1/n; 8 float 9 even(int n) { 10 float sum = 0; 11 for(int i = 2; i <=n; i+=2) 12 sum += (float)1 / i; 13 retur

剑指offer_面试题14_调整数组顺序使奇数位于偶数前面(函数指针用法)

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 1.一般想法,不考虑时间复杂度: 每次遍历数组,碰到一个偶数就拿出来,将后面所有数字向前挪动一位,在将该偶数放到最后. 2.利用冒泡排序的思想,两个指针,一前以后,如果前为偶数,后为奇数,就交换. 算法如下: void Reorder_array(int p[],int length) { if(NULL == p || length <= 0) return; int i

调整数组中的顺序使奇数位于偶数前边

输入一个整数数组,实现一个函数来调整该数组中字数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 可以用运两个指针,第一个指针初始化时指向数组的第一个数字,它指向后移动.第二个指针初始化时指向数组的最后一个数字,它只向前移动,两个指针相遇之前,第一个指针总是位于第二个指针前边. (1)当第一个指针指向奇数时向后移动,当第二个指针指向偶数时向前移动: (2)反之交换这两个数字: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h

调整数组顺序使奇数位于偶数前面——14

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 首先,可以想到,用前后两个指针一个在数组首一个在数组尾同时往数组中间遍历,当遇到前指针遇到偶数后指针遇到奇数时,就将两个数交换,直到两指针相遇或者前指针超过了后指针,这个有点类似快速排序的思想: 程序设计如下: #include <iostream> #include <assert.h> using namespace std; void AdjustArr(in

LightOj 1278 - Sum of Consecutive Integers(求奇因子的个数)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1278 题意:给你一个数n(n<=10^14),然后问n能用几个连续的数表示; 例如: 15 = 7+8 = 4+5+6 = 1+2+3+4+5,所以15对应的答案是3,有三种; 我们现在相当于已知等差数列的和sum = n, 另首项为a1,共有m项,那么am = a1+m-1: sum = m*(a1+a1+m-1)/2  -----> a1 = sum/m - (m-1)/2 a

(剑指Offer)面试题14:调整数组顺序使奇数位于偶数前面

题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 如果去掉约束条件:并保证奇数和奇数,偶数和偶数之间的相对位置不变? 思路: 如果要保证奇数和奇数,偶数和偶数之间的相对位置不变,那么需要开辟新的空间来保存奇数和偶数,方法有两种: 1.开辟一个新数组,遍历第一遍原数组,将奇数依次写入新数组,遍历第二遍原数组,将偶数依次写入新数组,返回新数组: 2.开辟两个数组,遍历一

面试题 14:调整数组顺序使奇数位于偶数前面

使用两个指针,在数组头尾相对移动: 循环结束条件:头和尾重叠活着头在尾之后 左边指针右移条件:当前数是奇数 右边指针左移条件:当前数是偶数 当且仅当左边指针是偶数,右边指针是奇数,交换两个指针的值 此题注意扩展,函数功能的重用. package offer; import java.util.Arrays; /*面试题 14:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该函数数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的数组位于数组的后半部分.*/ pub

指针重难、易错点

(一)函数指针 在前边的blog中,已经整理归纳了数组和初级指针,接下来,我来继续整理高级指针和如何正确使用指针. 我们说过,指针数组是一个数组,每个元素是指针:数组指针是个指针,指向的是数组.所以: 函数指针就是指向函数的指针.我们先看以下代码: <pre name="code" class="cpp">void fun() { } int main() { printf("%p",fun); printf("%p&quo