d8Word文件下载.docx
《d8Word文件下载.docx》由会员分享,可在线阅读,更多相关《d8Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
default:
\n"
}
}
2:
读入一个年份和月份,打印出该月有多少天(考虑闰年),用switch语句编程。
intyear,month;
Inputyear,month:
"
scanf("
%d,%d"
&
year,&
month);
/*输入相应的年和月*/
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
31days\n"
case2:
if((year%4==0&
&
year%100!
=0)||(year%400==0))
{
printf("
29days\n"
/*闰年的2月有29天*/
}
else
28days\n"
/*平年的2月有28天*/
case4:
case6:
case9:
case11:
30days\n"
Inputerror!
3:
编程计算1+3+5+7+…+99+101的值。
方法1:
inti=1,sum=0;
while(i<
=101)
sum=sum+i;
i=i+2;
sum=%d\n"
sum);
方法2:
inti,sum=0;
for(i=1;
i<
=101;
i=i+2)
sum=sum+i;
4:
编程计算1×
2×
3+3×
4×
5+…+99×
100×
101的值。
longi=1;
longterm,sum=0;
while(i<
=99)
term=i*(i+1)*(i+2);
sum=sum+term;
i=i+2;
sum=%ld"
sum);
longi;
=99;
i=i+2)
getch();
5:
编程计算1!
+2!
+3!
+4!
+…+10!
的值。
longterm=1,sum=0;
inti=1;
while(i<
=10)
term=term*i;
++i;
1!
+...+10!
=%ld\n"
inti;
=10;
i++)
term=term*i;
sum=sum+term;
6:
编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。
longterm=0,sum=0;
inta,i,n;
Inputa,n:
%d,%d"
a,&
n);
/*输入a,n的值*/
=n;
term=term*10+a;
/*求出累加项*/
/*进行累加*/
sum=%ld\n"
inta,i=1,n;
/*输入a,n的值*/
=n)
term=term*10+a;
/*求出累加项*/
i++;
/*进行累加*/
7:
利用
=
×
…的前100项之积计算的值。
doubleterm,result=1;
/*累乘项初值应为1*/
intn;
for(n=2;
n<
=100;
n=n+2)
term=(double)(n*n)/((n-1)*(n+1));
/*计算累乘项*/
result=result*term;
result=%f\n"
2*result);
for(n=1;
=50;
n++)
term=(double)(2*n*2*n)/((2*n-1)*(2*n+1));
8:
利用泰勒级数e
…+
计算e的近似值,当最后一项的绝对值小于105时认为达到了精度要求。
要求统计总共累加了多少项。
math.h>
intn=1,count=1;
doublee=1.0,term=1.0;
longfac=1;
for(n=1;
fabs(term)>
=1e-5;
fac=fac*n;
term=1.0/fac;
e=e+term;
count++;
e=%f,count=%d\n"
e,count);
9:
计算
,直到最后一项的绝对值小于10-4为止。
main()
intn=1;
floatterm=1.0,sign=1,sum=0;
while(fabs(term)>
=1e-4)/*判断末项大小*/
term=sign/n;
/*累加*/
sign=-sign;
/*改变项的符号*/
n++;
/*分母加1*/
sum=%f\n"
10:
利用泰勒级数sin(x)≈
计算sin(x)的值。
要求最后一项的绝对值小于10-5,并统计出此时累加了多少项。
intn=1,count=1;
floatx;
doublesum,term;
/*因为位数多,所以定义为双精度*/
Inputx:
%f"
x);
sum=x;
term=x;
/*赋初值*/
do
term=-term*x*x/((n+1)*(n+2));
/*累加*/
n=n+2;
}while(fabs(term)>
=1e-5);
sin(x)=%f,count=%d\n"
sum,count);
11:
打印所有的“水仙花数”。
所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。
例如,153是“水仙花数”,因为153=13+33+53。
inti,j,k,n;
resultis:
for(n=100;
1000;
i=n/100;
/*分出百位*/
j=(n-i*100)/10;
/*分出十位*/
k=n%10;
/*分出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("
%d\t"
n);
/*输出结果*/
方法2:
#include<
for(i=1;
i<
=9;
for(j=0;
j<
j++)
for(k=0;
k<
k++)
{
if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)
{
%d\t"
100*i+10*j+k);
}
}
12:
从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负号)。
例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。
inti1,i2,i3,i4,k,n;
Inputdatais:
%d"
k=fabs(n);
/*取绝对值*/
i1=k/1000;
/*分离出千位*/
i2=(k-i1*1000)/100;
/*分离出百位*/
i3=(k-i1*1000-i2*100)/10;
/*分离出十位*/
i4=k%10;
/*分离出个位*/
Thesumofthetotalbitis%d\n"
i1+i2+i3+i4);
13:
爱因斯坦数学题。
爱因斯坦曾出过这样一道数学题:
有一条长阶梯,若每步跨2阶,最后剩下1阶;
若每步跨3阶,最后剩下2阶;
若每步跨5阶,最后剩下4阶;
若每步跨6阶,最后剩下5阶;
只有每步跨7阶,最后才正好1阶不剩。
请问,这条阶梯共有多少阶?
intx=1,find=0;
while(!
find)
if(x%2==1&
x%3==2&
x%5==4&
x%6==5
&
x%7==0)
{
x=%d\n"
x);
find=1;
}
x++;
intx=1;
while
(1)
if(x%2==1&
x%3==2&
x%5==4&
x%6==5&
x%7==0)
break;
方法3:
intx=0,find=0;
do{
find=x%2==1&
x%7==0;
}while(!
find);
方法4:
intx=0;
(x%2==1&
x%7==0));
14:
三色球问题。
若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?
inti,j,k;
for(i=0;
=3;
for(j=0;
j<
for(k=0;
k<
=6;
if(i+j+k==8)
i=%d,j=%d,k=%d\n"
i,j,k);
15:
鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。
intx,y;
for(x=1;
x<
=97;
x++)
y=98-x;
if(2*x+4*y==386)
x=%d,y=%d"
x,y);
16:
我国古代的《张丘建算经》中有这样一道著名的百鸡问题:
“鸡翁一,值钱五;
鸡母一,值钱三;
鸡雏三,值钱一。
百钱买百鸡,问鸡翁、母、雏各几何?
”其意为:
公鸡每只5元,母鸡每只3元,小鸡3只1元。
用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?
intx,y,z;
for(x=0;
=20;
for(y=0;
y<
=33;
y++)
z=100-x-y;
if(5*x+3*y+z/3.0==100)
x=%d,y=%d,z=%d\n"
x,y,z);
17:
用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?
每种方案各换多少枚?
intx,y,z,count=0;
=28;
for(y=1;
=73;
if(5*x+2*y+z==150)
count++;
%d,%d,%d\n"
count=%d\n"
count);
18:
编程输出如下上三角形式的九九乘法表。
intm,n,i;
/*打印表头*/
for(m=1;
m<
10;
m++)
%4d"
m);
-"
n++)/*被乘数n从1变化到9*/
=4*n-4;
/*输出相应空格使数字右对齐*/
for(m=n;
m++)/*乘数m从n变化到9*/
m*n);
/*输出第n行m列中的m*n的值*/
/*输出换行符,准备打印下一行*/
19:
编程打印以下图案。
(1)
(2)(3)
(1)#include<
=4;
i++)/*i控制行数*/
for(j=1;
=4-i;
j++)/*随行数的增加,输出递减数目的空格*/
for(k=1;
k++)/*每行输出6个*字符*/
*"
/*将光标移到下一行起始位置处*/
(2)#include<
inti,j,k;
i++)/*控制行数*/
=(2*i-1);
k++)/*控制每行输出的*号个数*/
/*输出一行后换行*/
}getch();
(3)#include<
inti,j,k;
i++)/*控制行数*/
=8-i;
k<
=(2*i-1);
k++)
}getch();
20:
按如下格式打印100以内整数的平方根表。
for(m=0;
%7d"
for(n=0;
n++)/*乘数n从1变化到9*/
n);
/*输出每行的开头数字*/
m++)/*被乘数m从1变化到9*/
%5.3f"
sqrt(n*10+m));
}/*输出第m行n列中的值*/