1.下列程序的功能是求一组数(动态输入一组数据)的最大值和最小值,当输入为0时结束,程序不完整,请在划线处将程序补充完整。
void main( )
{ float x,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
while (x!=0)
{ if (x>amax) _________;
if (x<amin) __________;
________________
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
#include<stdio.h>
int main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while(x!=0)
{
if(x>amax) amax=x;
if(x<amin) amin=x;
scanf("%f",&x);
}
printf("amax=%f\namin=%f\n",amax,amin);
return 0;
}
2.求1!+2!+3!+4!+…+20!
第一种:
#include<stdio.h>
int main()
{
int n;
long long sum=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
sum+=t;
}
printf("1!+2!+3!+4!+…+20!=%d",sum);
return 0;
}
第二种:
#include<stdio.h>
long fac(int n)
{
long long f;
if(n<0) printf("error");
else
if(n==0||n==1) f=1;
else f=fac(n-1)*n;
return (f);
}
int main()
{
int n;
long long y,sum=0;
for(n=1;n<=20;n++)
{
y=fac(n);
sum+=y;
}
printf("1!+2!+3!+4!+…+20!=%d",sum);
return 0;
}
3.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include<stdio.h>
int main()
{
int x,a,b,c;
printf("输出所有的水仙花数:");
for(x=100;x<=999;x++)
{
a=x/100;
b=x%100/10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c) printf("%d ",x);
}
return 0;
}
4.2/1,3/2,5/3,8/5,13/8,21/13,…求这个数列的前20项之和。
#include<stdio.h>
int main()
{
int n;
float a=2,b=1,c=0,sum=0;
for(n=1;n<=20;n++)
{
sum=sum+a/b;
c=a;
a=a+b;
b=c;
}
printf("2/1,3/2,5/3,8/5,13/8,21/13,...这个数列的前20项之和:%f",sum);
return 0;
}
5.输出以下图案:
*
***
*****
*******
*****
***
*
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=i;j<=3;j++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++)
{
printf(" ");
}
for(j=1;j<=(7-2*i);j++)
{
printf("*");
}
printf("\n");
}
return 0;
}