1. 输入N, 打印下列高为N的等腰三角形
例当N=6时, 打印 *
***
*****
*******
*********
***********
#include "stdio.h"
main()
{
int n,i,j;
printf("Please Input N: ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
for (j=n-1;j>=i;j--)
printf(" ");
for (j=1;j<=2*i-1;j++)
printf("*");
printf("/n");
}
printf("/n");
}
2.依次输入10个数,打印其中最大的数。
#include <math.h>
main()
{
float i,a,max;
printf ("please input the frist number");
scanf ("%f",&max);
for(i=1;i<=9;i++)
{
printf ("please input the next number");
scanf ("%f",&a);
if (a>max)
max=a;
}
printf ("the max in the 10 number is %f",max);
}
3.输入两个正整数m,n,求其最大公约数和最小公倍数。
解一:
#include "stdio.h"
main()
{
int t,m,n,m0,n0;
printf("Please Input two integer: ");
scanf("%d%d",&n,&m);
m0=m; n0=n;
if (m<n)
{
t=m;
m=n;
n=t;
}
t=m%n;
while (t)
{
m=n;
n=t;
t=m%n;
}
printf("The two integer is %d and %d/n",m0,n0);
printf("The maximum common divisor is %d/n",n);
printf("The minimum common multiple is %d/n",m0*n0/n);
}
解二:直接利用定义计算
#include "stdio.h"
main()
{
int m,n,max,min,i;
printf("Please Input m & n : ");
scanf("%d%d",&m,&n);
if (m<=n)
{
min=n;
max=m;
}
else
{
min=m;
max=n;
}
for (i=min;(i%m!=0)||(i%n!=0);i++);
min=i;
for (i=max;(m%i!=0)||(n%i!=0);i--);
max=i;
printf("The min is: %d/n",min);
printf("The max is: %d/n",max);
}
4.求S = a + aa + aaa + aaaa + ……
#include "stdio.h"
main()
{
int n,a,i;
long sum=0,coef,an=0;
printf("Please Input n & a(a must between 1-9): ");
scanf("%d%d",&n,&a);
while ((a<1)||(a>9))
{
printf ("/na out of range, reInput a between 1-9:");
scanf("%d",&a);
}
for (i=1,an=0; i<=n; i++)
{
an=an*10+a;
sum=sum+an;
}
printf("/n");
printf("The result is %ld/n",sum);
}
5.求1!+2!+ …… +n!
main()
{
long int a,b=1,x=0;
int n;
printf("****work ** *****/n input the number:");
scanf("%d",&n);
for(a=1;a<=n;a++)
{b=b*a;
x=x+b;
}
printf("answer is:%ld/n",x);
}
6. 打印出所有的“水仙花”数,所谓“水仙花”数是指一个3位数,其各位数字立方和等于该数本身,例如153=13+53+33,153是一个水仙花数。
解一:
#include "stdio.h"
main()
{
int n,n1,n2,n3,m,t=0;
for (n=100;n<=999;n++)
{
n3=n/100;
n2=(n-n3*100)/10;
n1=n%10;
if (n==(n1*n1*n1+n2*n2*n2+n3*n3*n3))
{
printf("%8d",n);
t++;
if (t%5==0)
printf("/n");
}
}
printf("/n");
}
解二:
#include "stdio.h"
main()
{
int n,n1,n2,n3,m;
for (n1=1;n1<=9;n1++)
for (n2=0;n2<10;n2++)
for (n3=0;n3<10;n3++)
{
n = n1*n1*n1+n2*n2*n2+n3*n3*n3;
m = n1*100+n2*10+n3;
if (n == m)
printf("%8d",m);
}
printf("/n");
}
7. 有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,……,求出这个数列的前n项之和。
分析:1,总体上是求和运算,且循环20次(考虑用for循环)
2,每一项的数据是分数,且存在规律:后一项的分母是前一项的分子,后一项的分子是前一项分子、分母之和。
设置变量:
Sum – 计和 (初始为0)
I – 循环变量
A – 前一项的分子(初始为2)
B – 前一项的分母(初始为1)
T – 当前分数,存在t=(a+b)/a
main()
{
int a,b,temp,i,n;
float sum,t;
a=2;b=1;sum=t=2;
printf("Input n:");
scanf("%d",&n);
for (i=2;i<=n;i++)
{
t=1.0*(a+b)/a;
sum += t;
temp=a;
a=a+b;
b=temp;
}
printf ("N=%d,Sum=%f/n",n,sum);
}
8.略
9.用二分法求下面方程在(-10,10)之间的根。
利用中值定理:
连续函数f(x),若f(x1)*f(x2)<0;(即两者不同号),则在x1与x2之间必存在;一个值x0满足f(x0)=0。
二分法:
只要f(x1)*f(x2)<0, 取x0为(x1+x2)/2,将区间缩小一半,重复操作即可。
#include <math.h>
main()
{float x0,x1,x2,fx0,fx1,fx2,le;
do
{printf("Enter x1 & x2: ");
scanf("%f,%f",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}
while((fx1*fx2)>0);
do
{x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if ((fx0*fx1)<0)
{x2=x0;
fx2=fx0;
}
else
应该是数字1,而非字母l |
fx1=fx0;
}
} while(fabs(fx0)>=le-5);
printf("x=% 6.2f /n",x0);
}