C语言老师要我们编程序,但是不太会,请C语言高手来帮帮忙,谢谢。

第一题:输出个位是3的倍数,十位是奇数,百位是4或者是8的三位数
第二题:有一个分数数列: 求出这个数列前20项之和。
第三题:求100~150之间和400~450之间能被9整除的数。
第四题:将从键盘输入的偶数写成两个素数之和。
第五题:根据公式 求e的近似值,精度要求为10-6。
不好意思,第二题的数列: 2/1,3/2,3/5,5/8,8/5,13/8,21/13,......

五题的公式:e=1+1/1!+1/2!+1/3!+......

第一题:
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
{
if(i%4==0 && j%2!=0)
{
printf("%d\n",i*100+j*10+3);
}
}
return 0;
}

第二题:你所说的数列不说清楚我怎么做,

第三题:
#include<stdio.h>
int main()
{
int i;
for(i=100;i<=150;i++)
if(i%9==0)
printf("%d\n",i);
for(i=400;i<=450;i++)
if(i%9==0)
printf("%d\n",i);
return 0;
}

第四题:
#include<stdio.h>#include<math.h>
int f(int x){
int i;
if(x==2)
return 1;
if(x==1)
return 0;
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}

int main(){
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=2;i<=n;i++)
{
if(f(i) && f(n-i))
printf("%d %d\n",i,n-i);
}
}
return 0;
}

第五题:具体公式你也没说,不过应该就是这个了,我做过公式应该就是这个
#include "stdio.h"
float fun(int n){
float t=1.0;
int i;
for(i=1;i<=n;i++){
t*=i;}
return t;}
void main(){
float e=1.0;
int n=1;
while(1/fun(n)>=10e-6){
e+=1.0/fun(n);
n++;}
printf("%.6f",e);
}追问

补充了第二题和第五题了,谢谢你了 : )

追答

第二题:
#include
int main()
{
int i,a=2,b=1,c;
float sum=0.0;
for(i=0;i<20;i++)
{
sum+=a*1.0/b;
c=a;
a=a+b;
b=c;
}
printf("%.2f\n",sum);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-28
//只写了第一题,共同学习,请加腾讯9814-55795
//输出个位是3的倍数,十位是奇数,百位是4或者是8的三位数
#include<stdio.h>
int main()
{
int temp = 0;
for(int i=100;i<1000;i++)//循环控制,i为三位数
{
temp = i;
if(temp%10==4||temp%10==8)//如果百位是4或8
{
temp /= 10;//将temp变为2位数
if((temp%10)%2!=0)//如果十位是奇数
{
temp /= 10;//将temp变为1位数
if(temp%3==0) //如果个位是3的倍数
printf("%d\n",i);
}
}
}
return 0;
}本回答被网友采纳
第2个回答  2013-03-29
第一题
void foo1(){
short Unit ;
short Dec;
short Hun ;
printf("所有输出个位是3的倍数,十位是奇数,百位是4或者是8的三位数\n");
for(Unit =3 ; Unit<10; Unit*=3){
for(Dec = 1; Dec<10; Dec+=2){
for(Hun = 4; Hun<10 ; Hun*=2){
short sum = Hun*100+ Dec*10 + Unit;
printf(" %d ",sum);
}
}
}
printf("\n");
}
第二题
struct fs {
int zs; //整数
int fz; //分子
int fm;//分母
};

//len 分数数列的长度 pfsl 分数数列 sum 分数数列前len之和
fs* fssum(fs *pfsl,,int len,fs *sum){
fs *min = (sum->fm)>(pfsl)->fm?(pfsl) : sum;
fs *max =(sum->fm)<(pfsl)->fm?(pfsl) : sum;

for(int i = max->fm ;i<=(max->fm)*(min->fm); i++){
if(i%(min->fm)==0 && i%(max->fm)==0){
sum->zs = min->zs+ max ->zs;
int ibs = i/min->fm, abs = i/max;
sum->fz = min->fz*ibs + max->fz* abs;
sum->fm = min->fm*ibs + max->fm*abs;
len--;
break;
}
}
//还可以分子和分母的约分处理,和缩小分子的处理, 你可以试试自己完成
if(len <=0){
return sum;
}
fssum((pfsl+1),len,sum);
}
相似回答