2017北京中考数学试卷:####C语言程序高手请回答!!!!!!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 09:45:00
(1) 求出n!,设n≥2且n≤50。
(2) 编写一个排序函数,要求这个函数即能完成从大到小的排序,又能完成从小到大的排序,并编写主函数完成:
① 输入n个数;
② 组织调用排序函数对n个数重排,要求重排后的结果是以最小值所在的位置为界,前段数据按重大到小排,后段数据从小到大排;
③ 输出重排结果。

(1)
#include<stdio.h>
main()
{
int i,n,s;
printf("input n:");
scanf("%d",&n);
for(i=1,s=1;i<=n;i++)
s*=i;
printf("%d",s);
}
//注意这个程序求阶乘只适合比较小的数,因为int数据范围的关系表示不了太大的数。

(2)
#include<stdio.h>
int *function(int a[50],int n)
{
int i,j,k,temp,b[100];
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)if(a[j]>a[k])k=j;
temp=a[k];a[k]=a[i];a[i]=temp;
}
for(i=0;i<n;i++)b[i]=a[i];
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)if(a[j]<a[k])k=j;
temp=a[k];a[k]=a[i];a[i]=temp;
}
for(i=0;i<n;i++)b[n+i]=a[i];
return b;
}
main()
{
int i,n,a[50],b[100];
printf("input n:");
scanf("%d",&n);
printf("input these numbers:");
for(i=0;i<n;i++)scanf("%d",&a[i]);
b=function(a[50],n);
for(i=0;i<2*n;i++)printf("%5d",b[i]);
}

(1)
main()
{int n,i;
scanf("%d",&n);
for(i=n-1;i>0;i--) n=n*i;
printf("%d",n);
}
没run过,你试试吧.