C的高手们,麻烦帮小弟做几个题目。

commemoration 2010-10-30 10:00:41
因为小弟现在做的的ASP,所以对大学时期学的C都忘了,天天看书又在重温,但现在又需要交点作业。所以请大家帮帮忙把代码贴下。谢谢了!


1. 有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。

2. 编写程序,求1!+2!+3!+…+10!。

3. 编写一个C程序,实现对10个整数进行升序排序输出(排序算法不限,要求用数组实现)。

4. 编写一个程序,读入9个裁判所打的分数,去掉一个最高分,去掉一个最低分,求剩余7个分数的平均值(要求用数组实现)。
...全文
310 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
elegant87 2010-10-30
  • 打赏
  • 举报
回复

#include <stdio.h>

//分数求和
float sum(int n)
{
float temp;
float numerator=2;
float denominator=1;
float result = 0 ;
while(n--)
{
result += numerator / denominator;
temp= numerator;
numerator += denominator;
denominator = temp;
}
return result;
}

//计算阶乘
int factorial(int n)
{
int result = 1;
int i;
for(i=2;i<=n;++i)
result *= i;
return result;
}

//阶乘求和
int FactorSum(int n)
{
int result = 0;
int i;
for(i=1;i<=n;++i)
result+=factorial(i);
return result;
}


int main()
{
printf("%0.4f\n",sum(30));
printf("%d\n",FactorSum(10));
return 0;
}
rickky_1 2010-10-30
  • 打赏
  • 举报
回复
楼主把分给我吧,16#我已经贴出代码了,都在编译器中调试通过了的。就是贴的时候格式有点不太对,不好意思!!
lpch06 2010-10-30
  • 打赏
  • 举报
回复
作业贴呀~~
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
//第4题
#include<stdio.h>

int a[100];

int Partition(int left,int right)
{
int flag=a[left],free=left;

while(left<right)
{
while(a[right]>=flag&&left<right)right--;
a[free]=a[right];
free=right;

while(a[left]<=flag&&left<right)left++;
a[free]=a[left];
free=left;
}

a[free]=flag;
return free;

}

void QuickSort(int left ,int right)
{
int k;

if(left<right)
{
k=Partition(left,right);
QuickSort(left,k-1);
QuickSort(k+1,right);
}
}
int main()
{
int n,i,sum=0;
float av;

scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

QuickSort(0,n-1);

for(i=1;i<n-1;i++)
sum+=a[i];

av=(float)sum/(n-2);
printf("%.2f\n",av);
return 0;
}
rickky_1 2010-10-30
  • 打赏
  • 举报
回复
第一题:

int main(void)
{
int m = 2, n = 1;
float sum;
int i, temp;

for (i = 1; i <= 30; i++)
{
sum += (float)m/n;

temp = n;
n = m;
m += temp;
}
printf("sum = %f\n", sum);
return 0;
}

第二题:

int main(void)
{
int i, m = 1;
int sum = 0;

for (i = 1; i <= 10; i++)
{
m *= i;
sum += m;
}
printf("1!+2!+...+10!= %d\n", sum);

return 0;
}

第三题:

void swap(int *m, int *n)
{
int temp;
temp = *m;
*m = *n;
*n = temp;
}


void print(int *array, int number)
{
int i;
for (i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}


int patition(int *array, int left, int right)
{
int pivotkey = array[left];

while (left < right)
{
while (left < right)
{
if (pivotkey <= array[right]) right --;
break;
}
swap(array+left, array+right);

while (left < right)
{
if (pivotkey >= array[left]) left ++;
break;
}
swap(array+left, array+right);
}

return left;
}
void quickSort(int *array, int left, int right)
{
int middle;

if (left < right)
{
middle = patition(array, left, right);
quickSort(array, left, middle-1);
quickSort(array, middle+1, right);
}
}

int main(void)
{
int number = 10;
int array[10]= {9,8,7,4,7,3,2,5,6,0};

quickSort(array, 0, number-1);
print(array, number);

return 0;
}

第四题:

int main(void)
{
int array[9] = {4,5,2,6,8,1,7,3,6};
int i;
int sum = 0;

int max, min;

if (array[0] > array[1])
{
max = array[0];
min = array[1];
}
else
{
max = array[1];
min = array[0];
}

for (i = 2; i < 9 ; i++)
{
if (array[i] <= min)
{
sum += min;
min = array[i];
}
else if (array[i] >= max)
{
sum += max;
max = array[i];
}
else
{
sum += array[i];
}

}
printf("average = %f\n", (float)sum/7);

return 0;
}
x642458 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shangyangzi 的回复:]

//第4题
/*************************************************************************************************
------------10-10-30----- yzf csdn (求1!+2!+3!+…+10!)
*8************************************……
[/Quote]
漫步者、 2010-10-30
  • 打赏
  • 举报
回复
第四题用随机函数,任意取!
然后去掉最高最低,再求平均!
w_shun 2010-10-30
  • 打赏
  • 举报
回复
作业贴?
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
//第4题
/*************************************************************************************************
------------10-10-30----- yzf csdn (求1!+2!+3!+…+10!)
*8***********************************************************************************************/

#include<stdio.h>

int a[100];

int Partition(int left,int right)
{
int flag=a[left],free=left;

while(left<right)
{
while(a[right]>=flag&&left<right)right--;
a[free]=a[right];
free=right;

while(a[left]<=flag&&left<right)left++;
a[free]=a[left];
free=left;
}

a[free]=flag;
return free;

}

void QuickSort(int left ,int right)
{
int k;

if(left<right)
{
k=Partition(left,right);
QuickSort(left,k-1);
QuickSort(k+1,right);
}
}
int main()
{
int n,i,sum=0;
float av;

scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

QuickSort(0,n-1);

for(i=1;i<n-1;i++)
sum+=a[i];

av=(float)sum/(n-2);
printf("%.2f\n",av);
return 0;
}
sky198306 2010-10-30
  • 打赏
  • 举报
回复
我也学习下呵呵,自己写的不是太好
zherowolf 2010-10-30
  • 打赏
  • 举报
回复

//有一个分数序列:2/1、3/2、5/3、8/5、13/8、……,编写一个C程序,求出这个数列的前30项之和。
#include<iostream.h>
int main(){
double i = 2;
double j = 1;
double sum = 0;
for(int a = 0;a < 3;a++){
sum = sum + i/j;
double m = j;
j = i;
i = i + m;
}
cout <<"sum:"<<sum<<endl;
return 0;
}



//2. 编写程序,求1!+2!+3!+…+10!。
#include<iostream.h>
int main()
{
int a = 1;
int sum = 0;
for(int i = 1; i <= 4;i++){
a = a *i;
sum = sum +a;
}
cout<<"sum:"<<sum<<endl;
return 0;
}
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
//第三题的排序(快排)
#include<stdio.h>

int a[100];

int Partition(int left,int right)
{
int flag=a[left],free=left;

while(left<right)
{
while(a[right]>=flag&&left<right)right--;
a[free]=a[right];
free=right;

while(a[left]<=flag&&left<right)left++;
a[free]=a[left];
free=left;
}

a[free]=flag;
return free;

}

void QuickSort(int left ,int right)
{
int k;

if(left<right)
{
k=Partition(left,right);
QuickSort(left,k-1);
QuickSort(k+1,right);
}
}
int main()
{
int n,i;

scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

QuickSort(0,n-1);

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

printf("\n");
return 0;
}
sky198306 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sky198306 的回复:]
flaot s=0.0
int i,j,k,n;
j=1,k=2;
for(i=1;i<=30;i++)
{
s=(flaot)k/j;
n=j;
j=k;
k=n+k;
}
[/Quote]
for(i=1;i<=30;i++) //这里30修改为10,手误
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
//第2题这个会效率高一些
#include<stdio.h>

int main()
{
long sum=0,s=1;
for(int i=1;i<=10;i++)
{
s*=i;
sum+=s;
}
printf("%ld\n",sum);
return 0;
}
sky198306 2010-10-30
  • 打赏
  • 举报
回复
int sum,min,max,i,a[8];
flaot average ;
for(i=0;i<=8;i++)
{ if a[i]<=min min=a[i];
else if a[i]>=max max=a[i];
else sum+=a[i];
}
average=(float)(sum/7);
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
上面那行for(int i=1;i<=4;i++)
改为for(int i=1;i<=10;i++)
shangyangi 2010-10-30
  • 打赏
  • 举报
回复
第二题的:
#include<stdio.h>

long je(int i)
{
if(i==0||i==1)return 1;
else return i*je(i-1);
}

int main()
{
long sum=0;
for(int i=1;i<=4;i++)
{
sum+=je(i);
}
printf("%ld\n",sum);
return 0;
}
sky198306 2010-10-30
  • 打赏
  • 举报
回复
#include <stdio.h>


int sort(int a[],int n);

void main()
{
int sort(int a[],int n);
printf("sort:",sort(int a[],int n));
}


int sort(int a[],int n);
{
int m;
for(n=0;n<10;n++)
if(a[n]>a[n+1])
{
m=a[n];
a[n]=a[n+1];
a[n+1]=m;
}
return (a[n]);
}
liweihua9796 2010-10-30
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int max=0,min=0;
int a[9];
int sum=0,avg=0;
printf("please input 9 number:\n");
for(int i=0;i<9;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=1;i<=9;i++)
{
if(max<a[i])
max=a[i];
else
{
if(min>a[i])
min=a[i];
}
}
printf("max=%d,min=%d\n",max,min);
for(i=0;i<9;i++)
sum+=a[i];
printf("sum=%d\n",sum);
avg=(sum-max-min)/7;
printf("avg=%d\n",avg);
}
dongbo12369 2010-10-30
  • 打赏
  • 举报
回复
哈哈,LS的好快。。。
加载更多回复(12)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧