程序编写.docx

上传人:b****2 文档编号:20722242 上传时间:2023-04-25 格式:DOCX 页数:41 大小:24.81KB
下载 相关 举报
程序编写.docx_第1页
第1页 / 共41页
程序编写.docx_第2页
第2页 / 共41页
程序编写.docx_第3页
第3页 / 共41页
程序编写.docx_第4页
第4页 / 共41页
程序编写.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

程序编写.docx

《程序编写.docx》由会员分享,可在线阅读,更多相关《程序编写.docx(41页珍藏版)》请在冰豆网上搜索。

程序编写.docx

程序编写

C语言(典型例子和课后习题)

第二章C语言程序基础

输入两个数,并互换。

#include

voidmain()

{inta,b,c;

printf("inputa,b\n");

scanf("%d%d",&a,&b);

c=a;a=b;b=c;

printf("a=%d,b=%d\n",a,b);

}

输入一个三位数,并反向输出各位数字。

#include

voidmain()

{intm,a,b,c;/*a表示百位数字,b表示十位数字,c表示个位数字*/

printf("inputm\n");

scanf("%d",&m);

a=m/100;b=(m-a*100)/10;c=m-a*100-b*10;/*c=m%10;b=m/10%10;a=m/100;*/

printf("%d,%d,%d\n",c,b,a);

}

输入两个圆的半径,分别求出它们的周长和面积。

#definePI3.1415926

main()

{floatr1,r2,len1,len2,s1,s2;

r1=10;r2=20;

len1=2*PI*r1;s1=PI*r1*r1;

printf("len1=%fs1=%f\n",len1,s1);

len2=2*PI*r2;s2=PI*r2*r2;

printf("len2=%fs2=%f\n",len2,s2);

}

第三章选择结构

P531.编写一个程序,从键盘输入三角形三条边的边长,求三角形的面积。

#include

#include

voidmain(void)

{floata,b,c,s,area;

printf("请输入三角形的三边:

\n");

scanf("%f%f%f",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)/*括号里的内容可写为a+b>c&&fabs(a-b)

{s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*fabs(x)表示x的绝对值*/

printf("area=%f\n",area);}

else

printf("输入数据错误!

\n");

}

2.输入圆的半径r和一个整型数k,当k=1时,计算圆的面积;当k=2时,计算圆的周长;当k=3时,既要求出圆的周长也要求出圆的面积。

编程实现以上功能。

#include

voidmain()

{intk;

floatr,len,area;

scanf("%d%f",&k,&r);

if(k==1)

{area=3.14*r*r;printf("area=%f\n",area);}

elseif(k==2)

{len=2*3.14*r;printf("len=%f\n",len);}

elseif(k==3)

{len=2*3.14*r;area=3.14*r*r;

printf("len=%f,area=%f\n",len,area);}

elseprintf("无结果!

\n");

}

3.从键盘上输入一个年份,判断该年是否为闰年。

闰年的条件是:

年份能被4整除但不能被100整除,或者能被400整除。

#include

voidmain()

{intk;

printf("输入一个年份:

\n");

scanf("%d",&k);

if(k%4==0&&k%100!

=0||k%400==0)

printf("该年是闰年!

\n");

else

printf("该年不是闰年!

\n");

}

4.有一个函数,其函数关系如下,试编程求对应于每个自变量的函数值。

#include

#include

voidmain(void)

{floatx,y;

printf("inputx\n");

scanf("%f",&x);

if(x<0)y=x*x;

elseif(x>=0&&x<10)y=-0.5*x+10;

elsey=x-sqrt(x);

printf("y=%f\n",y);

}

5.编一个程序,对于给定的一个百分制成绩,输出相应的等级。

方法一:

#include

voidmain(void)

{intscore;

printf("请输入学生成绩:

");

scanf("%d",&score);

if(score>=0&&score<=100)

switch(score/10)

{case10:

case9:

printf("优秀\n");break;

case8:

printf("良好\n");break;

case7:

printf("中等\n");break;

case6:

printf("及格\n");break;

default:

printf("不及格\n");break;

}

else

printf("输入数据错误!

\n");

}

方法二:

#include

voidmain(void)

{intscore;

printf("请输入学生成绩:

");

scanf("%d",&score);

if(score>=90&&score<=100)printf("优秀\n");

elseif(score>=80&&score<90)printf("良好\n");

elseif(score>=70&&score<80)printf("中等\n");

elseif(score>=60&&score<70)printf("及格\n");

elseif(score>=0&&score<60)printf("不及格\n");

elseprintf("输入数据错误!

\n");

}

7.从键盘上随机输入三个英文字母,要求从小到大的顺序输出这三个字母。

#include

voidmain(void)

{chara,b,c,t;

printf("从键盘上随机输入三个英文字母:

\n");

scanf("%c%c%c",&a,&b,&c);

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

if(a>b)

{t=a;a=b;b=t;}

printf("%c,%c,%c\n",a,b,c);/*程序结束后,a中存的最小的数,c中存的最大的数*/

}

8.计算一元二次方程ax*x+bx+c=0的根。

设方程为:

ax*x+bx+c=0,要求从键盘上输入a、b、c的值求出方程的根。

求解规则如下:

1)若a和b的值为0,方程无解。

2)若a=0,则方程只有一个实根。

3)若b*b-4ac>=0,则方程有两个实根。

4)若b*b-4ac<0,则方程有两个复根。

#include

#include

voidmain(void)

{floata,b,c,dt,x1,x2,realpart,imagpart;

scanf("%f%f%f",&a,&b,&c);

dt=b*b-4*a*c;

if(fabs(a)<=1e-6&&fabs(b)<=1e-6)

printf("方程无解!

\n");

elseif(fabs(a)<=1e-6)

printf("%f\n",-c/b);

elseif(fabs(dt)<=1e-6)

printf("%f\n",-b/(2*a));

elseif(fabs(dt)>=1e-6)

{if(dt>=1e-6)

{x1=(-b+sqrt(dt))/(2*a);x2=(-b-sqrt(dt))/(2*a);

printf("%f,%f\n",x1,x2);}

else

{realpart=-b/(2*a);imagpart=fabs(sqrt(dt)/(2*a));

printf("%f+%fi\n",realpart,imagpart);

printf("%f-%fi\n",realpart,imagpart);}

}

}

输入三角形的三边长,判断能不能构成三角形。

然后进一步判断它是等边,等腰,还是普通三角形。

#include

voidmain(void)

{floata,b,c;

printf("输入三角形的三边:

\n");

scanf("%f%f%f",&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

{if(a==b&&b==c)

printf("这是一个等边三角形!

\n");

elseif(a==b||b==c||c==a)

printf("这是一个等腰三角形!

\n");

else

printf("这是一个普通三角形!

\n");

}

else

printf("不能构成三角形!

\n");

}

从键盘上输入一个字符,判断该字符是数字、大写字母、小写字母还是其他字符。

#include

voidmain(void)

{charc;

printf("请输入一个字符:

");

c=getchar();

if(c>='0'&&c<='9')printf("是数字\n");

elseif(c>='A'&&c<='Z')printf("是大写字母\n");

elseif(c>='a'&&c<='z')printf("是小写字母\n");

elseprintf("是其他字符\n");

}

从键盘输入一串字符,以’\n’结束,分别统计出英文字母,空格,数字和其他字符的个数。

#include

voidmain()

{intletter=0,space=0,digital=0,other=0;

charch;

printf("输入一串字符:

");

ch=getchar();

while(ch!

='\n')

{if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')letter++;

elseif(ch=='')space++;

elseif(ch>='0'&&ch<='9')digital++;

elseother++;

ch=getchar();}

printf("letter=%d,space=%d,digital=%d,other=%d\n",letter,space,digital,other);

}

输入年份year和月份month,求该月的天数。

#include

voidmain()

{intyear,month,days=0;

printf("输入年份year和月份month:

");

scanf("%d%d",&year,&month);

switch(month)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;break;

case4:

case6:

case9:

case11:

days=30;break;

case2:

if(year%4==0&&year%100!

=0||year%400==0)days=29;

elsedays=28;break;

default:

printf("Inputerror!

\n");

}

if(days!

=0)printf("year=%d,month=%d,days=%d\n",year,month,days);

}

计算器程序。

输入两个运算数和一个四则运算符,输出计算结果。

#include

#include

voidmain()

{floata,b;

charc;

printf("输入表达式:

运算数<运算符>运算数\n");

scanf("%f%c%f",&a,&c,&b);

switch(c)

{case'+':

printf("%f\n",a+b);break;

case'-':

printf("%f\n",a-b);break;

case'*':

printf("%f\n",a*b);break;

case'/':

if(fabs(b)<=1e-6)

printf("数据错误,除数不能为0!

\n");

else

printf("%f\n",a/b);

default:

printf("运算符只能是+-*/!

\n");

}

}

第四章循环结构程序设计

猴子吃桃子问题:

猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第2天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早晨想再吃时,只剩下一个桃子了。

求第1天共摘了多少个桃子。

#include

voidmain()

{intx1,x2=1,day=9;

while(day>0)

{x1=2*(x2+1);x2=x1;day--;}

printf("Thetotalis%d\n",x1);

}

P88习题1.有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?

它们都是多少?

方法一:

#include

voidmain()

{intx=100,x1,x2,x3,i=0;

while(x<=999)

{x1=x/100;x2=x/10%10;x3=x%10;

if(x1>=1&&x1<=4&&x2>=1&&x2<=4&&x3>=1&&x3<=4&&x1!

=x2&&x2!

=x3&&x3!

=x1)

{printf("%-5d",x);i++;/*i计数*/

if(i%4==0)printf("\n");}

x++;}

printf("i=%-d\n",i);

}

方法二:

#include

voidmain()

{intx,i,x1,x2,x3,x4;

for(x1=1;x1<=4;x1++)

for(x2=1;x2<=4;x2++)

if(x1!

=x2)

for(x3=1;x3<=4;x3++)

if(x1!

=x3&&x2!

=x3)

{x=x1*100+x2*10+x3;i++;

printf("%d",x);

if(i%5==0)printf("\n");}

}

2.编写程序,求两个整数的最大公约数和最小公倍数。

#include

voidmain()

{intk,g,m,n;

printf("输入两个整数:

\n");

scanf("%d%d",&m,&n);

k=m

m:

n;

while(m%k!

=0||n%k!

=0)

k--;

printf("最大公约数:

%d\n",k);

g=(m*n)/k;

printf("最小公倍数:

%d\n",g);

}

3.把输入的整数(最多不超过5位)按输入顺序的相反顺序输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。

#include

voidmain()

{longnumber;intcount=0;

printf("输入一个整数(最多不超过5位):

");

scanf("%ld",&number);

if(number<0)number=-number;

do

{printf("%d",number%10);

number=number/10;count++;}

while(number!

=0);

printf("count=%d\n",count);

}

4.求s=a+aa+aaa+aaaa+a……a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共5个数相加),几个数相加又键盘控制。

#include

voidmain()

{ints=0,x,n,a,i=0;

printf("分别输入a和n:

");

scanf("%d%d",&a,&n);

x=a;

while(i

{s=s+x;x=x*10+a;i++;}

printf("s=%d\n",s);

}

5.一个数如果恰好等于它的因子之和,这个数就成为“完数”,例如6=1+2+3。

编程找出1000以内的所有完数。

#include

voidmain()

{intn,i,s;

for(n=1;n<=1000;n++)

{s=0;/*注意s=0的位置*/

for(i=1;i

{if(n%i==0)s=s+i;}

if(n==s)printf("%d\n",n);}

}

7.求1+2!

+3!

+…+20!

的和。

#include

voidmain()

{inti,n;

floatjc,s;

for(n=1;n<=20;n++)

{for(jc=1,i=1;i<=n;i++)

jc=jc*i;

s=s+jc;}

printf("s=%f\n",s);

}

8.输出100~200之间的全部素数。

#include

#include

voidmain()

{intn,i;

for(n=100;n<=200;n++)

{for(i=2;i<=sqrt(n);i++)

if(n%i==0)break;

if(i>sqrt(n))printf("%-5d",n);

}

}

9.编写程序,找出1~999之间的全部同构数。

同构数是这样一组数,它出现在平方数的右边,例如:

5是25的右边的数,25是625的右边的数,5和25都是同构数。

#include

voidmain()

{intk,m,n;

for(m=4;m<999;m++)

{n=m*m;

if(m>=1&&m<=9)k=n%10;

if(m>=10&&m<=99)k=n%100;

if(m>=100&&m<999)k=n%1000;

if(k==m)printf("%d",m);

}

}

10.输入所有大于1000小于10000的四位偶数,且该偶数的各位数字两两不同。

#include

voidmain()

{inti,x1,x2,x3,x4;

for(i=1002;i<10000;i+=2)

{x1=i/1000;x2=i/100%10;

x3=i/10%10;x4=i%10;

if(x1!

=x2&&x1!

=x3&&x1!

=x4&&x2!

=x3&&x2!

=x4&&x3!

=x4)

printf("%-5d",i);

}

}

13.编写程序,用牛顿迭代法求x*x-a=0的近似根。

要求前后两次求出的x的差的绝对值小于0.00001。

#include

#include

voidmain()

{floata,x0,x1,f0,f1;

printf("inputa,x1:

");

scanf("%f%f",&a,&x1);

do

{x0=x1;

f0=x0*x0-a;

f1=2*x0;

x1=x0-f0/f1;

}

while(fabs(x0-x1)>1e-5);

printf("x=%f\n",x1);

}

6.打印出如下图案

#include

voidmain()

{inth=4,k,j,m;

for(j=1;j<=2*h-1;j++)

{if(j<=h)m=2*j-1;elsem=4*h-2*j-1;

for(k=1;k<=m;k++)

printf("*");

printf("\n");

}

}

从键盘输入h的值,输出如下三角形,例号h=4

#include

voidmain()

{inth,k,j;

scanf("%d",&h);

for(k=1;k<=h;k++)

{for(j=1;j<=h-k;j++)

printf("");

for(j=1;j<=2*k-1;j++)

printf("*");

printf("\n");

}

}

从键盘输入h的值,输出h行用*号组成的菱形,例输入h=4,输出

#include

voidmain()

{inth,k,j,m,n;

printf("inputh:

");

scanf("%d",&h);

for(j=1;j<=2*h-1;j++)

{if(j<=h){m=h-j;n=2*j-1;}

else{m=j-h;n=4*h-2*j-1;}

for(k=1;k<=m;k++)

printf("");

for(k=1;k<=n;k++)

printf("*");

printf("\n");

}

}

打印出所有的“水仙花数”。

所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1×1×1+5×5×5+3×3×3。

#include

voidmain()

{intn,x1,x2,x3;

printf("waterflowernumberis:

");

for(n=100;n<=999;n++)

{x1=n/100;x2=n/10%10;x3=n%10;

if(n==x1*x1*x1+x2*x2*x2+x3*x3*x3)printf("%-4d",n);

}

printf("\n");

}

输出100—200之间不能被3整除的数。

#include

voidmain()

{inti.n;

for(n=100;n<=200;n++)

{if(n%3==0)continue;

printf(“%5d”,n);}

}

第六章数组

输出最大值

#include

voidmain(void)

{inta,b,c,max;

printf("输入三个数:

");

scanf("%d%d%d",&a,&b,&c);

max=a;

if(b>max)max=b;

if(c>max)max=c;

printf("%d是最大数\n",max);

}

#include

vo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1