C语言编程题

1.定义函数int fa(int a ),求[50,1000]之间能被8整除的所有数之和。

2.一个数列,它的头三个数为4,5,6,以后的每个数都是其前三个数的和,求此数列的第10项。

根据题意:
题目1:函数参数是除数(这里传值8),返回满足条件的数字和。
题目2:函数参数是要找的项目数(这里传值10),返回对应项的值。

#include<stdio.h>

#define MIN 50

#define MAX 1000

int fa(int a);//对应题目1的函数,参数:要除的数,返回可以被整除的数之和

int getByIndex(int n);//对应题目2,返回数列第n项,错误返回-1

int main()

{

printf("1、%d~%d之间能被%d整除的数字之和为:%d\n",MIN,MAX,8,fa(8));

printf("2、数列头三个数为4,5,6,以后的每个数为前三数和,求此数列第%d项:%d\n",10,getByIndex(10));

return 0;

}

int fa(int a)//对应题目1的函数,参数:要除的数,返回可以被整除的数之和

{

int i,sum=0;

for(i=MIN;i<=MAX;i++)

if(i%a==0)

sum+=i;

return sum;

}

int getByIndex(int n)//对应题目2,返回数列第n项,错误返回-1

{

if(n<1)

return -1;

int i,nums[n];

nums[0]=4,nums[1]=5,nums[2]=6;

for(i=3;i<n;i++)

nums[i]=nums[i-1]+nums[i-2]+nums[i-3];

return nums[n-1];

}

追问

不会这个编程,可以把他分成俩答案吗?这是两个题目。

追答

可以啊,我不是写了2个函数了么,你两个程序里分别只要留一个就行啊。main函数也只要调用一个。

追问

那请问您会写这个吗?用for循环语句编程实现图案,图案参数分别为:绘图环境为800×800像素,背景色为红色,园的颜色为白色,园的半径为100像素,左上角园的圆心坐标分别为100、100像素。

追答

用C语言可以绘图,需要图形库graphics.h,或者调用windows API。这些都不是C语言的基本库函数。说直白就是调用被人写好的函数而已。网上有一大堆资料。就是写起来麻烦,一个简单图形都要写一堆。没必要深入。真想写,自己百度看里面有哪些函数,自己调用就好。用C做图像开发成本太高。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-04
#include <stdio.h>
#include <math.h>
int fa(){
int a=0;
for(int i=50;i<1000;i++){
if(i%8==0){
a+=i;
}
}
return a;
}
int x(){
int A[11]={4,5,6};
for(int i=3;i<11;i++){
A[i]=A[i-1]+A[i-2]+A[i-3];
}
return A[9];
}
void main(){
printf("和是%d数组第10为%d",fa(),x());
}
第2个回答  2019-07-06
这是个很著名的问题哦。
解释如下,不是本人所写。
设dis[i]第i个贮油至终点(i=0)的距离
oil[i]第i个贮油的存贮油量
我们可以用倒推法来解决该问题。从终点向始点倒推,逐一求出每个贮油点的位置以及油量。
终点
起点
|-------|--------|---------|
i=0
i=2
...i=n
从贮油点i向贮油点i+1倒推的策略是,卡车在点i和点i+1间往返若干次。卡车每次返回i+1处时正好耗尽500公升汽油,而每次从i+1处出发时又必须满足500公升汽油。两点之间的距离必须满足在蚝油最少的条件下使
i点
贮油i*500公升汽油的要求(0<=i<=n-1)。具体讲,第一个贮油点i=1应距离终点i=0处500km,且在该贮藏500公升汽油,这样才能保证卡车能有i=1处到达终点i=0出,就是说:
dis[1]=500
oil[1]=500
为了在i=1出贮藏500公升汽油,卡车至少从i=2出开两趟满载油的车至i=1出,所以i=2出至少贮有2*500公升汽油,即oid[2]=500*2=1000。另外,再加上上i=1返回至i=2处的一趟空载,合计往返3次。3次路程的蚝油量按最省要求只能为500公升,即d12=500/3(如下图示)
dis[2]=dis[1]+d12=dis[1]+500/3
|<-500/3--->|
|<----------|
|---------->|
|<----------|
|-----------|-----------|--------------->
i=0
i=1
i=2
为了在i=2出贮存1000公升汽油,卡车至少从i=3处开3趟满载油的车至i=2出。所以i=3处至少贮有3*500公升汽油,即oil[3]=500*3=1500.加上i=2至i=3处的两趟返程空车,合计5次。路途蚝油量也应500公升,即d23=500/5
dis[3]=dis[2]+d23=dis[2]+500/5
依次类推,为了在i=k-1出贮藏(k-1)*500公升汽油,卡车至少从i=K处开k趟满载车至i=k-1处,即oid[K]=(k-1)*500=oik[k-1]+500,加上从i=k返回i=k=1的k-1趟返程空间,合计2k-1。这2K-1次总耗油量按最省要求为500公升,即dk-1k=500/(2K-1)
dis[k]=dis[k-1]+dk-1k=dis[k-1]+500/(2K-1)
完整的程序如下,也不是本人所写。
#include<stdio.h>
#include<stdlib.h>
#define
MAX_STATION_NUM
32
/*定义最大允许的储油点数目*/
int
main()
{
int
k,i;
double
wDistance;
/*wDistance是终点至当前贮油点的距离*/
double
storedOil[MAX_STATION_NUM];/*storedOil[i]是第i个储油点的储油量*/
double
distance[MAX_STATION_NUM];
/*distance[i]是第i个储油点到终点的距离*/
puts("The
whole
distance
is
1000km,and
the
result
is:\n");
puts("station
distance(km)
oil(l)");
k=1;
wDistance=500;
/*从i=1处开始向始点倒推*/
distance[1]=500;
storedOil[1]=500;
while(1)
{
k++;
wDistance+=500/(2*k-1);
distance[k]=wDistance;
storedOil[k]=storedOil[k-1]+500;
if(wDistance>=1000)
break;
}
distance[k]=1000;
/*置始点至终点的距离值*/
storedOil[k]=(1000-distance[k-1])*(2*k+1)+storedOil[k-1];
/*求始点藏油量*/
for(i=0;i<k;i++)
/*由始点开始逐一打印始点至当前贮油点的距离和藏油量*/
printf("%4d
%6.3f
%6.3f\n",i,1000-distance[k-i],storedOil[k-i]);
system("pause");
return
0;
}
第3个回答  2019-07-04
建议考虑时下火爆的python,python不仅入门简单,灵活高效。更是在人工智能方面应用广泛,对将来大有裨益
相似回答