注册 登录
编程论坛 C++教室

初学C语言,求帮助。。

zuoxi 发布于 2012-06-19 08:29, 1102 次点击
编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。
11 回复
#2
xieyajiang2012-06-19 11:11
声明a=0和b=0,%求余,先求是否是能被7整除可以a=1,继续求是否被11整除可以的话b=1,a+b=1就n++
#3
xieyajiang2012-06-19 11:13
对了n++之后a,b继续赋值为0
#4
xieyajiang2012-06-19 11:16
想了想好像又不对、、、、、判断a+b=1之后在赋值为0好像、、、
#5
rjsp2012-06-19 13:28
回复 2楼 xieyajiang
如果你只需要n,那简单
n = 100/7 + 100/11 - 100/(7*11);
#6
rjsp2012-06-19 14:07
刚才bccn无法访问,我帮你写了一个
程序代码:
unsigned fun( unsigned a[] )
{
    unsigned n = 0;

    for( unsigned i=7; i<=100; )
    {
        a[n++] = i;

        unsigned a = (i/7+1)*7;
        unsigned b = (i/11+1)*11;
        if( a < b )
            i = a;
        else if( a > b )
            i = b;
        else
            i = a + 7;
    }

    return n;
}

#include <stdio.h>
int main()
{
    unsigned a[100];
    unsigned n = fun( a );

    for( unsigned i=0; i<n; ++i )
        printf( "%u, ", a[i] );

    return 0;
}

输出
7, 11, 14, 21, 22, 28, 33, 35, 42, 44, 49, 55, 56, 63, 66, 70, 84, 88, 91, 98, 99,
#7
xl06070315112012-06-20 00:43
不必那么复杂,7和11互质,满足能被7和11整除不能被77整除就行了。
#8
xl06070315112012-06-20 01:08
#include<iostream>
using namespace std;
main()
{
int j=0,n=0,a[30],i=0;
for(i=7;i<=100;i++)
if((i%7==0||i%11==0)&&(i%77!=0))
{a[j++]=i;
n++;}


cout<<n<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<endl;
getchar();
}
#9
zuoxi2012-06-20 15:32
回复 6楼 rjsp
谢谢啊。。我运行的时候提示有语法错误,可是我找不出是哪出错了啊。。。
#10
rjsp2012-06-21 14:06
以下是引用zuoxi在2012-6-20 15:32:06的发言:

谢谢啊。。我运行的时候提示有语法错误,可是我找不出是哪出错了啊。。。

如果有语法错误的话,则连编译都不能通过,怎么可能到“运行的时候”?

我的代码用的都是C语言标准的语法,如果你的编译器不能编译通过的话,说明你的编译器有错误,或者是你的编译器太老旧了,旧到不认识现在的C语言标准语法。
我的代码在 gcc4.6.1 中加 编译参数-std=c99 编译通过
#11
zuoxi2012-06-21 19:06
回复 10楼 rjsp
谢谢啊。。。成功了。非常感谢。。。
#12
kangtachan2012-06-22 01:29
vc大概是这么写的
头文件
#pragma once

#ifndef CNUMBER_1_H
#define CNUMBER_1_H

#include <vector>

struct DivisibleBuff
{
    int nmax;
    int nmin;
};

typedef std::vector<int> AryInt;



class CNumber_1
{
//构造、析构
public:
    CNumber_1();
    virtual ~CNumber_1();

//共有成员
public:
    AryInt m_ResultAry;

//保护成员函数
protected:
    //能被7或者11整除的数字
    void GetCanDivisible(AryInt& ary,DivisibleBuff vbuff,int vMax,int vMin=1);

    //不能被7或者11整除的数字
    void GetCannotDivisible(AryInt& ary,DivisibleBuff vbuff,int vMax,int vMin=1);

//私有成员
private:
    DivisibleBuff m_buff;
};

#endif

cpp文件
#include "stdafx.h"
#include "CNumber_1.h"

CNumber_1::CNumber_1()
{

}

CNumber_1::~CNumber_1()
{

}


void CNumber_1::GetCanDivisible( AryInt& ary,DivisibleBuff vbuff,int vMax,int vMin/*=1*/ )
{
    for (int i=vMin;i<=vMax;i++)
    {
        if (!(i%vbuff.nmin) || !(i%vbuff.nmax))
        {
            ary.push_back(i);
        }
    }
}

void CNumber_1::GetCannotDivisible( AryInt& ary,DivisibleBuff vbuff,int vMax,int vMin/*=1*/ )
{
    AryInt::iterator itor=ary.begin();

    if (ary.empty())
    {
        return;
    }

    for (;itor!=ary.end();itor++)
    {
        if ((!(*itor)%vbuff.nmin) && (!(*itor)%vbuff.nmin))
        {
            m_ResultAry.push_back(*itor);
        }
    }
}
1