C语言习题

  • 格式:doc
  • 大小:42.50 KB
  • 文档页数:4

1.编写一函数求N!。在主函数中输入N,调用函数求N!,输出结果。
方法一:
#include
int sum(int n)
{
int i,pi=1;
for(i=1;i<=n;i++)
pi=pi*i;
return(pi);
}
void main()
{
int p=0,n;
scanf("%d",&n);
p=sum(n);
printf("%d\n",p);
}󰀀
方法二:
#include
main( )
{
int i=1,n;
long s=1;
printf("please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s*i;
printf("%d!=%ld\n",n,s);
}

2.输入5个整数,找出最大数和最小数所在位置,并把二者对调,然

后输出。
参考程序:
main( )
{
int a[5],max,min,i,j,k;
for(i=0; i<5; i++) scanf("%d",&a[i]);
min=a[0]; max=a[0];j=k=0;
for (i=1; i<5; i++)
if (a[i]else if (a[i]>max) { max=a[i]; k=i ; }
a[j]=max; a[k]=min;
for (i=0; i<5; i++) printf("%5d",a[i]);
printf("\n");
}

3.求斐波那契数列的前20项程序如下
1.long fib(int n)
{
long f;
if (n<=2) f=1;
else
f=fib(n-1)+fib(n-2);
return (f);
}
#include
main( )
{
int i; long f;
long fib(int);
for(i=1;i<=20;i++)
{
f=fib(i);
printf(“fib(%d)=%ld\n",i,f);
}
}
2.#include
void main( )
{
int i; int f[20]={1,1};
for (i=2; i<20; i++)
f[i]=f[i-2]+f[i-1];
for (i=0; i<20; i++)
{if(i%5= =0)
printf(“\n”);
printf("%-5d",f[i] );}
}

4.求出某数组a[5][5]每行元素的平均值。
#include
main()
{
int a[5][5],i,j,sum=0;
float ave[5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);󰀀
for(i=0;i<5;i++)
{ sum=0;
for(j=0;j<5;j++)
sum+=a[i][j];
ave[i]=sum/5.0;}
for(i=0;i<5;i++)
printf("%f\n",ave[i]);
}

5.通过键盘输入10个数,求这10个数的最大值和最小值。
#include
main()
{
int a[10];int i,max;
printf(“Please input tennumbers:\n”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
max=a[0];
min=a[0];
for(i=1;i<10;i++)
{if(maxmax=a[i];
if(min>a[i])
min=a[i];
}
printf("max=%d,min=%d\n",max,min);
}

6.计算一个3*3矩阵的主对角线的元素之和sum。

参考程序:
main( )
{
int a[3][3],sum=0,i,j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
scanf("%d",&a[i][j]);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if (i==j) sum=sum+a[i][j];
printf("%d\n",sum);
}

7.输入a和b两个数,按先后大小顺序输出a和b。
#include
void main()
{
int *p1,*p2,*p,a,b;
scanf(“%d,%d”,&a,&b);
p1=&a;p2=&b;
if(a{ p=p1;p1=p2;p2=p; }
printf(“a=%d,b=%d\n”,a,b);
printf(“max=%d,main=%d\n”,*p1,*p2);
}

8.输出斐波那契数列的前20项。(用数组做)
#include
void main()
{
int i;
int fib[20]={1,1};
for(i=2;i<20;i++)
fib[i]=fib[i-1]+fib[i-2];
for(i=0;i<20;i++)
{
if(i%5==0)printf(“\n”);
printf(“%6d”,fib[i]);
}
printf(“\n”);
}