C语言经典问题Word文件下载.docx
- 文档编号:18391590
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:51
- 大小:31.93KB
C语言经典问题Word文件下载.docx
《C语言经典问题Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言经典问题Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。
c&
b+c>
a&
a+c>
b){
area=sqrt(p*(p-a)*(p-b)*(p-c));
三角形的面积为:
%7.2f\n"
area);
else
不能构成三角形\n"
(1)此程序还可加入一个函数判断三角形形形状,但是较为复杂
(2)其他的凸多边形可以通过分割成若干三角形,用此公式计算各三角形面积后相加得多边形面积
4.鸡兔同笼问题:
鸡头兔头的总个数m,脚的总个数n计算鸡和兔的只数
voidmain()
intm,n,x,y;
请输入鸡、兔子的头以及脚的的个数和都应为偶数\n"
%d,%d"
m,&
n);
if((4*m-n>
0)&
(n-2*m>
0))
x=(4*m-n)/2;
y=(n-2*m)/2;
鸡的个数为%d,兔子的个数为为%d\n"
x,y);
}
不存在这样的组合\n"
}2.____________________________________________________________________________________________________________________
5.计算分段函数的函数值y=
Sinx(-5<
x<
0)
1(x=0)
3x-3(x>
floatx,y;
请输入x的值:
%f"
x);
if(x>
-5&
0){
y=sin(x);
elseif(x==0){
y=0;
elseif(x>
y=3*x-3;
当x=%f时,y=%10.6f"
6.给出一百分制成绩,要求输出成绩等级A、B、C、D、E,90以上为A;
80-89为B,70-79为C,60-69分为D,60分以下为E
#include<
floatscore,i;
chargrade;
请输入学生的成绩\n"
score);
i=score/10;
while(score<
0||score>
100){
输入的成绩值有误,重新输入\n"
switch((int)i){
case0:
grade='
E'
;
break;
case1:
case2:
case3:
case4:
case5:
case6:
D'
case7:
C'
case8:
B'
case9:
A'
case10:
输入的成绩为%8.2f,其对应的等级为%c\n"
score,grade);
7.用微元法(梯形法)计算积分:
x3+2x2+4x在规定区间的值
floatf(floatx0);
floatx0,x1,y=0;
intn,i;
请输入区间等分数,值越大,结果越精确\n"
输入函数的区间:
%f,%f"
x0,&
x1);
for(i=1;
i<
=n;
i++){
y=y+(f(x0+(x1-x0)*(i-1)/n)+f(x0+(x1-x0)*i/n))*((x1-x0)/n)*(1.0/2);
所求积分值为%8.2f"
y);
floatf(floatx0){
floatz;
z=x0*x0*x0+2*x0*x0+4*x0;
return(z);
8.计算阶乘,用递归法
floatnum,z;
floatfactor(intnum);
输入要计算阶乘的正数:
num);
z=factor(num);
if((num<
0)||(((int)num-num)!
=0)){
printf("
无效的数值\n"
%8.0f!
=%10.8f"
num,z);
floatfactor(intnum){
floatf;
if(num==0||num==1){
f=1;
f=factor(num-1)*num;
return(f);
9.求sqrt(2+sqrt(2+sqrt(2+……)+sqrt
(2)),次数由键盘输入
floatresult=sqrt
(2);
intn,m;
请输入根号的个数:
m=n;
while(n>
1){
result=sqrt(2+result);
n--;
如果有%d个根号,则结果为%f"
m,result);
10.计算形如Ax2+Bx+C=0的方程的解,按情况讨论
floata,b,c,di,x1,x2,p,q;
请依次输入方程的系数abc\n"
di=b*b-4*a*c;
if(a==0){
if(b!
=0){
x1=-c/b;
方程为一元一次方程,有一实根x=%8.2f\n"
x1);
else
{
if(c==0){
printf("
方程是一个恒等式,x可以取任意值\n"
}
else{
这是一个矛盾式\n"
{
if(di<
p=-b/(2.0*a);
q=sqrt(-di);
x1=q;
该二元一次方程有两个复根x1=%6.2f+%6.2fix2=%6.2f-%6.2fi\n"
p,x1,p,x1);
elseif(di==0){
x1=-b/(2.0*a);
该二元一次方程有一个实根x=%8.2f\n"
else{
x1=(-b/(2.0*a))+sqrt(di);
x2=(-b/(2.0*a))-sqrt(di);
该二元一次方程有两个实根x1=%8.2fx2=%8.2f\n"
x1,x2);
11.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积圆柱体积。
由键盘输入数据,用宏定义圆周率,结果取两位小数。
#definepi3.14159
floatr,h;
floatc,cs,bs,bv,zv;
请输入圆的半径以及圆柱体的高\n"
r,&
h);
c=2.0*pi*r;
cs=pi*r*r;
bs=4*pi*r*r;
bv=(4.0/3)*pi*r*r*r;
zv=cs*h;
圆周长为%6.2f,圆面积为%6.2f,圆球表面积为%6.2f,圆球体积为%6.2f,圆柱体积为%6.2f"
c,cs,bs,bv,zv);
12.将输入的字母变为其后的第四个字母,若到z就返回字母表顶端的a,变换前后大小写一致,例如a-e,z-a
charc,s;
输入字符串\n"
while((c=getchar())!
='
\n'
){
if((c>
a'
c<
v'
)||(c>
V'
)){
s=c+4;
if((c>
w'
z'
s=c-22;
%c"
s);
13.判断输入的字符串中是否含大写字母,若是大写字母将其转换为小写字母
if(c>
s=c+32;
elseif(c>
s=c;
14.打印出斐波那契数列的前20项:
1,1,2,3,5,8,13……
intFibonacci(intnum);
intnum,m=0;
斐波那契数列的前20项为\n"
for(num=1;
num<
=20;
num++){
%10d"
Fibonacci(num));
m++;
if(m%5==0){
intFibonacci(intnum){
intf;
if(num==2||num==1){
else{
f=Fibonacci(num-1)+Fibonacci(num-2);
15.输入两个整数,求它们相除的余数。
用带参数的宏来定义。
#definemod(a,b)a%b
intm,n;
从大到小依次输入两个整数\n"
%d和%d相除的余数为%d\n"
m,n,mod(m,n));
}
16.判断一个数是否为素数
inti,m,k;
请输入一个整数:
m);
for(i=2;
=sqrt(m);
if(m%i!
%d是素数\n"
m);
%d不是素数\n"
17.分解合数
voidmain(){
intm,k;
请输入一个数:
\n"
%d="
for(k=2;
k<
m;
){
if(m%k!
=0){//不能被k整除,就让k自加1
k++;
}
else{//能被k整除,就让m等于被除后的数
%d*"
k);
m=m/k;
k=2;
//让k重新等于2
18,计算两个数的最大公约数和最小公倍数
intmi(int,int);
intdi(int,int,int);
请输入两个整数\n"
x=mi(m,n);
y=(m*n)/x;
这两个数的最大公约数为%d,最小公倍数为%d"
intmi(intu,intv){
intr,t;
if(v>
u){
t=u;
u=v;
v=t;
while((r=u%v)!
v=r;
returnv;
intdi(intu,intv,inth){
return((u*v)/h);
19.完数:
因子之和等于它本身的数,打印1000内的完数,例如6=1*2*3=1+2+3
intm,i,sum;
1000以内的完数如下所示:
for(m=1;
m<
=1000;
m++){
sum=0;
for(i=1;
if((m%i)==0)sum=sum+i;
if(sum==m){
%dit'
sfactorsare:
"
for(i=1;
if((m%i)==0){
printf("
%d,"
i);
}
20.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
intword=0,space=0,digit=0,other=0;
charc;
输入一行字符\n"
Z'
word++;
elseif(c>
0'
9'
digit++;
elseif(c='
'
space++;
other++;
字母的个数为%d\n"
word);
空格的个数为%d\n"
space);
数字的个数为%d\n"
digit);
其他字符的个数为%d\n"
other);
}该题也可通过字符数组和gets(str)函数实现
21.求Sn=a+aa+aaa+……,若n为a的位数,求一直到有n个a时多项式的值,a和n由键盘输入。
inttn=0,sn=0,a,n,i;
依次输入a,n的值:
tn=tn+a;
sn=sn+tn;
a=a*10;
sn=%d\n"
sn);
22.输出所有水仙花数:
指各位数字立方和等于该数的三位数
intm,a,b,c;
水仙花数如下所示\n"
for(m=100;
=999;
a=(m%100)%10;
b=((m%100)-a)/10;
c=(m-b*10-a)/100;
if(m==a*a*a+b*b*b+c*c*c){
%6d"
23.猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,有多吃了一个。
以后每天都如此。
第十天只剩下一个桃子。
求第一天摘的桃子的总个数
intsum=1,day;
for(day=10;
day>
1;
day--){
sum=2*(sum+1);
第一天摘的桃子总数为%d\n"
24.用迭代法求x=sqrt(a),求平方根的迭代公式为:
xn+1=1/2(xn+a/xn),要求前后两次求出的x的差的绝对值小于10-5
floata;
floatx0,x1;
请输入要求平方根的数:
a);
x0=a/2;
x1=(x0+a/x0)/2;
while(fabs(x0-x1)>
=1e-5){
x0=x1;
x1=(x0+a/x0)/2;
%6.2f的平方根为%8.5f"
a,x1);
25.
(1)打印出一个由*构成的菱形图案
(2)打印数字金字塔
类似题型难点在于找出列控制与行控制变量间的关系
(1)#include<
inti,j,k;
for(i=0;
=3;
for(j=0;
j<
=2-i;
j++)
"
for(k=0;
=2*i;
k++)
*"
=2;
=i;
=4-2*i;
(2)1
121
12321
1234321
#include<
#defineN9
//N可换为任意整数,由于没有设置格式,故超出9无法正确显示
{
inti,j,k,m;
=N;
for(j=1;
=N-i;
for(k=1;
k+'
for(m=i;
m>
m--)
m-1);
26.两乒乓球队进行比赛,甲队ABC三人,乙队XYZ三人,已知A不和X比,C不和XZ比,
编程找出三队比赛名单。
比赛名单如下:
for(i='
X'
i++)
for(j='
if(i!
=j)
for(k='
if(i!
=k&
j!
=k)
if(i!
k!
)
A->
%c\nB->
%c\nC->
%c\n"
i,j,k);
27.用筛选法求100之内的素数
]
inti,j,a[101];
printf("
0-100内的素数为:
=100;
a[i]=i;
sqrt(100);
for(j=i+1;
if(a[i]!
=0&
a[j]!
(a[j]%a[i]==0))
{
a[j]=0;
if(a[i]!
=0)
%5d"
a[i]);
28.对输入的数进行
(1)选择排序
(2)冒泡排序
(1)#include<
inti,j,a[10],min,t;
请输入要排序的数:
=9;
a[%d]="
scanf("
a[i]);
}printf("
待排序的数:
%4d"
min=i;
if(a[min]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 经典 问题