程序编写.docx
- 文档编号:589663
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:41
- 大小:24.81KB
程序编写.docx
《程序编写.docx》由会员分享,可在线阅读,更多相关《程序编写.docx(41页珍藏版)》请在冰点文库上搜索。
程序编写
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 编写