已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章【例3-3】输出单个字符。 #include main() char a=B,b=O,c=Y; putchar(a); putchar(b);putchar(c); putchar(n); 【例3-4】用printf函数输出数据。main( ) int a=25; float b=123.4567898; double c=34567890.1234567; char d=k; printf(a=%d,%5d,%o,%x,%un,a,a,a,a,a); printf(b=%f,%lf,%10.4f, %5.4f,%e,%10.2en,b,b,b,b,b,b); printf(c=%f,%e,%gn,c,c,c); printf(d=%c,%8c,%in,d,d,d); printf(string=%s,%8s,%8.3s, %-8.3sn,china,china,china,china); 程序执行结果为:a=25, 25,31,19,25b=123.456787,123.456787. 123.4568, 123.4568,1.23457e+02, 1.2e+02c=34567890.123457,3.45679e+07,3.45679e+07d=k, k,107string=china, china, chi, chi【例3-6】用scanf函数输入数据。main() int a,b,c; printf(input a,b,cn); scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn ,a,b,c); 程序执行结果为:input a,b,c1 2 3a=1,b=2,c=3运行时可按以下任何一种方式输入变量a、b、c的值。1 2 3(以一个空格分隔) 1 (以回车符分隔)23 12 3(以一个空格分隔) 12(以tab键分隔)3 1 2 3(以多个空格分隔)【例3-7】 计算任意两整数的和、差、积、商。#include stdio.hmain() int a,b,c,d,e,f; printf(please input two integer a and b:n); scanf(%d%d,&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf(%d+%d=%d %d-%d=%dn,a,b,c,a,b,d); printf(%d*%d=%d %d/%d=%dn,a,b,e,a,b,f); 程序执行结果为::please input two integer a and b:15 1015+1025 15-10515*10150 15/10=1【例3-8】计算圆柱的体积。定义实型变量radius,high,vol分别表示圆柱的底面半径、高和体积。#define PI 3.1415926main() float radius,high,vol; printf(Please input radius & high: ); scanf(%f%f,&radius,&high);/*从键盘输入两个实数赋给变量radius,high */ vol=PI*radius*radius*high; printf(radius=%7.2f, high=%7.2f, vol=%7.2fn,radius,high,vol); 程序执行结果为::Please input radius & high:2 5radius= 2.00, high= 5.00, vol= 62.83【例3-9】计算一元二次方程ax2+bx+c=0的根。(假设b2-4ac0)#include math.h /*为使用求平方根函数sqrt(),必须包含math.h头文件 */main() float a,b,c,disc,x1,x2; printf(input a,b,c:); scanf(%f,%f,%f,&a,&b,&c); /*输入方程的三个系数的值*/ disc=b*b-4*a*c; /*求判别式的值赋给disc*/ x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(nx1=%6.2f x2=%6.2fn,x1,x2); 程序执行结果为:input a,b,c:1,3,2x1= -1.00 x2= -2.00【例3-10】按不同格式输出整型与长整型。main() int num1=123; long num2=123456; /*用3种不同格式,输出int型数据num1的值*/ printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1); /*用3种不同格式,输出long型数据num2的值*/ printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2);程序执行结果为::num1=123,num1= 123,num1=123 ,num1=123num2=123456,num2= 123456,num2=123456【例3-11】输入一个三位正整数,以倒序形式输出它的各位数。(例如:输入123,则输出321)main() int x,a,b,c; printf( please input x: ); scanf(%d,&x); /*输入一个三位正整数*/ c=x%10; /*获得个位数字*/ b=x/10%10; /*获得十位数字*/ a=x/100; /*获得百位数字*/ printf(nx=%d,daoshu=%dn,x,100*c+10*b+a); 程序执行结果为::please input x:345x=345,daoshu=543【例3-12】输入两个整数,比较它们的大小,并将其中的大数输出。 main() int a,b,max; printf(n input two numbers: ); scanf(%d%d,&a,&b); max=a; if (maxb) max=b; printf(max=%dn,max); 程序执行结果为::input two numbers:5 10max=10【例3-13】从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分为5个等级,这5个等级是:90100分为A级,8089分为B级,7079分为级,6069分为D级,059分为E级。学生的考试成绩为099分。main() int score; printf(please input a score:n); scanf(%d,&score); if(score100) printf(data error!n); else if(score=90) printf(the grade is A.n); else if(score=80) printf(the grade is B.n); else if(score=70) printf(the grade is C.n); else if(score=60) printf(the grade is D.n); else printf(the grade is E.n); 程序执行结果为:please input a score:95A【例3-14】比较两个数的大小关系。main() int a,b; printf(please input a,b:n); scanf(%d%d,&a,&b); if(a!=b) if(ab) printf(%d%dn,a,b); else printf(%d%dn,a,b); else printf(%d=%dn,a,b); 程序执行结果为:please input A,B: 3 5 6 4 5 534 5=5【例3-15】 利用switch语句重新完成例3-13编程任务。main() int score; printf(input a score(0100): ); scanf(%d, &score); score=score/10;/*将成绩整除10,转化成switch语句中的case标号*/ switch (score) case 10: case 9: printf(grade=An); /*标号10和9,都执行本行的语句*/ case 8: printf(grade=Bn); case 7: printf(grade=Cn); case 6: printf(grade=Dn); case 5: case 4: case 3: case 2: case 1: case 0: printf(grade=En); /*标号50,都执行本行的语句*/ default : printf(The score is out of range!n);/*成绩超出范围时,提示出错*/ 程序执行结果为:input a score(0100): 95grade=Agrade=Bgrade=Cgrade=Dgrade=E The score is out of range!main()int score;printf(input a score(0100): );scanf(%d, &score);score=score/10;/*将成绩整除10,转化成switch语句中的case标号*/switch (score)case 10:case 9: printf(grade=An); break; /*标号10和9,都执行本行的2条语句*/case 8: printf(grade=Bn); break;case 7: printf(grade=Cn); break;case 6: printf(grade=Dn); break;case 5:case 4:case 3:case 2:case 1:case 0: printf(grade=En); break;/*标号50,都执行本行的2条语句*/default: printf(The score is out of range!n);/*成绩超出范围时,提示出错*/【例3-16】计算器程序。用户输入运算数和四则运算符,输出计算结果。main()float a,b,s;char c;printf(input expression a+(-,*,/)b:n);scanf(%f%c%f,&a,&c,&b);switch(c)case +: printf(%fn,a+b);break;case -: printf(%fn,a-b);break;case *: printf(%fn,a*b);break;case /: printf(%fn,a/b);break;default: printf(input errorn);程序执行结果为:input expression a+(-,*,/)b:15+1025【例3-17】输入三个整数x,y,z,请把这三个数由小到大输出。main() int x,y,z,temp; scanf(%d%d%d,&x,&y,&z); if (xy) temp=x;x=y;y=temp; /*交换x,y的值*/ if(xz) temp=z;z=x;x=temp; /*交换x,z的值*/ if(yz) temp=y;y=z;z=temp; /*交换z,y的值*/ printf(small to big: %d %d %dn,x,y,z); 程序执行结果为:100 12 88small to big:12 88 100【例3-18】输入并判断和显示任意一年是否为闰年。main() int year; printf(please input a year:n); scanf(%d,&year); if (year%4=0&year%100!=0|year%400=0) printf(the year %d is leap year.n,year); else printf(the year %d is not leap year.n,year); 程序执行结果为:please input a year:2000the year %d is leap year.【例3-19】编写一个计算售票收款数目的小程序。具体要求为:每张票零售价格为25元,团体票价为20元,一次购票数目超过30张(包含30)时按团体票出售。对输入的购票数目计算并输出相应的购票款的数额。main() int number;float total;printf(please input the number of tickets you want to buy:n);scanf(%d,&number);if(number3000) printf(data error!n);elseif(number=30) total=20.0 * number;printf(you must pay %.2f yuan.n,total); else total=25.0 * number;printf(you must pay %.2f yuan.n,total); 程序执行结果为:35you must pay 700.00 yuan15you must pay 375.00 yuan【例3-20】编写一个已知利润计算薪水的程序。标准如下:(profit表示利润,薪水的单位是元)profit1000 基础薪水为5001000profit2000 另按利润的10提2000profit5000 另按利润的15提 5000profit10000 另按利润的20提10000profit 另按利润的25提程序如下:main()long profit;int grade;float salary=500;printf(Input profit: );scanf(%ld, &profit);grade=(profit-1)/1000;/* 将利润-1、再整除1000,转化成switch语句中的case标号 */switch(grade)case 0: break;/*profit1000 */case 1: salary+=profit*0.1;break;/*1000profit2000 */case 2: case 3: case 4: salary+=profit*0.15;break;/*2000profit5000 */case 5: case 6: case 7: case 8: case 9: salary+=profit*0.2; break;/*5000profit10000 */default: salary+=profit*0.25;/*10000profit */printf(salary=%.2fn, salary);程序执行结果为:Input profit: 800 salary=500.00Input profit:2500salary=875.00Input profit:6000salary=1700.00【例3-21】计算1+2+3+100的和。main()int i=1,sum=0; /*初始化循环控制变量i和累计器sum*/while( i=100 ) sum+=i; /*实现累加*/ i+; /*循环控制变量i增1*/ printf(sum=%dn,sum); 程序执行结果为:sum=5050例如:利用do-while语句计算1+2+3+100的和。main() int i=1,sum=0; /*初始化循环控制变量i和累计器sum*/ do sum+=i; /*实现累加*/ i+; /*循环控制变量i增1*/ while( i=100 ); /*循环继续条件:i=100*/ printf(sum=%dn,sum);【例3-22】求1、1、2、3、5、8、13、.Fibonacci数列的前20个数。#include stdio.hmain() long f1=1,f2=1,fn; /*定义并初始化数列的前2个数*/ int i,n; printf(n%20ld%20ld, f1, f2); /*输出前2个Fibonacci数*/ for(i=3;i=20;i+) fn=f1+f2; /*计算下1个Fibonacci数*/ f1=f2; f2=fn; printf(%20ld,fn); 程序执行结果为: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765也可以在循环体内每次产生两个Fibonacci数,程序修改如下:main()long int f1=1,f2=1; /*定义并初始化数列的前2个数*/ int i=1; /*定义并初始化循环控制变量i*/ for(;i=10;i+) /*每组2个数,20组40个数*/ printf(%15ld%15ld,f1,f2); /*输出当前的2个数*/ if(i%2=0) printf(n); /*输出2次(4个数)后换行*/ f1=f1+f2;f2=f2+f1; /*计算2个新数*/ 【例3-23】break语句的应用。main() int sum,i; for(i=1,sum=0;i+) /*省略了表达式2*/ sum=sum+i; if(i=100) break; /*利用if语句判断循环是否结束*/ printf(sum=%dn,sum); 程序执行结果为:sum5050【例3-24】输出100以内所有8的倍数,要求输出时每5个数占一行。main() int n,i=0; for(n=8;n=100;n+) if (n%8!=0) continue; printf(%10d,n); i+; if(i%5=0) printf(n); printf(n);程序执行结果为:8 16 24 32 40 48 56 64 72 80 88 96【例3-25】图形的输出。main() int i,j,k; for(i=1;i=5;i+) for(j=1;j=20-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); 【例3-26】编程计算n!。main() int i, n; long fact=1; /*将累乘器fact初始化为1*/ printf(input n:); scanf(%d, &n); for(i=1;i0) do sum+=number%10; /*利用取余运算可得到number的个位数*/ number/=10; /*利用除法/运算可将number的个位数去掉*/ while(number0); printf(the sum is %dn,sum); else printf(data error!); 程序执行结果为:please input a number:1234the sum is 10please input a number:-109data error!【例3-29】用穷举法来判断并输出100以内的素数。main() int n,i; for(n=2;n=100;n+) for(i=2;i=n) printf(%10d,n); 程序执行结果为:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 5359 61 67 71 73 79 83 8997实际上,2以上的所有偶数均不是素数,因此可以使循环变量的步长值改为2;此外判断n是否素数,只需用2n范围内的数就行了。这样将大大减少循环次数,减少程序运行时间。程序可修改如下:#includemath.hmain() int n,i,k; printf(n%10d,2); for(n=3;n=100;n+=2) k=sqrt(n); for(i=2;i=k+1) printf(%10d,n); /*整数n是素数,输出*/ 3.9 习题3-1单选题1.下列程序要求从键盘上输入值并打印出来,请选择正确的输入方法( ) main()int a,b;scanf(“please input a and b:%d %d”,&a,&b);printf(“a=%d,b=%dn”,a,b): A.5,6 B.Please input a and b :56 C.5 6 D.5 62.printf函数中用到格式符%5s,其中5表示输出的字符串占5列。如果字符串长度大于5,则输出方式( );如果字符串长度小于5,则输出方式( )A.从左起输出该字符串,右补空格 B.按原字符长度从左向右全部输出 C.从右起输出该字符串,左补空格 D.输出错误信息3. putchar函数可以向终端输出一个( )A.字符或字符型变量值 B.字符串 C.整型变量表达式的值 D.实型变量的值4. 对if语句中表达式的类型,下面正确的描述是( )。A. 必须是关系表达式 B. 必须是关系表达式或逻辑表达式C. 必须是关系表达式或算术表达式 D. 可以是任意表达式5.执行下面程序的正确结果是( )。main( )float a=1.9;switch(a) case 0: printf(0000);case 1: printf(1111);case 2: printf(2222);printf(%f,a);A. 1.900000 B. 111122221.900000C. 22221.900000 D. 0000111122221.9000006.为了避免嵌套的ifelse语句的二义性,C语言规定else总是与 组成配对关系。( )A.缩进位置相同的if B.在其之前未配对的if C.在其之前最近未配对的if D.同一行上的if 7.设int a=0,b=5,c=2;选择可执行x+的语句是 A. if(a) x+; B.if(a=b) x+ ; C.if(a=b)x+ ; D.if(!(b-c) ) x+;8.下列程序运行后i的值是( )int i=10;switch(i+1)case 10 : i+; break;case 11 : +i; case 12 :+i; break;default:i=i+1; A.11 B.13 C.12 D.149.若有条件表达式(exp)?x- -:- -x,则下列表达式能完全等价于表达式(exp)的是( )A.(exp!=0) B.(exp!=1) C.(exp= =0) D.(exp= =1)10.语句while(!e);中的条件!e 等价于 Ae= =0 B.e!=1 C.e!=0 D.e11.以下for循环是( )for(x=0,y=0;(y!=123)&(x4);x+); A无限循环 B.循环次数不定 C.执行四次 D.执行三次12.以下程序段( )x= -1;do x=x*x; while(!x);A是死循环 B.循环执行两次 C.循环执行一次 D.语法错误13.下列程序的输出结果是( )#includemain()int a,b;for(a=1,b=1;a=20) break; if(b%3= =1)b+=3; continue;b= -5;printf(“%dn”,a);A.7 B.8 C.9 D.1014.执行此程序片段,描述正确的是( )int k=5;while(k= =1) k- -;A.while循环执行四次 B.循环体执行一次C.循环体一次也不执行 D.死循环15.以下程序的输出结果是( )main()int n=10; while(n7) n- -; printf(“%dn”,n);A.10 B.9 C.10 D.9 9 8 9 88 7 8 7 7 616.for(表达式1;表达式3)可理解为( )A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3)3-2 写出下列各程序段的运行结果1.main( ) int a=20,b=30,c=40;if(ab) a=b;b=c;c=a;printf(a=%d,b=%d,c=%d,a,b,c);2.main( )int m=20;switch(m) case 19: m+=1;case 20: m+=1;case 21: m+=1;case 22: m+=1; printf(%dn,m); 3. main()int a,b;scanf(“%2d%*2s%2d”,&a,&b);printf(“%dn”,a+b); 执行时输入:12345678 4. main()int a=2,b=3; printf(“a=%d,b=%dn”,a,b);5. main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(%d %d %3.1f %3.1fn,a,c,f,x); 6. main()float a=3.14,b=-3.1415;printf(“a=%f,%e,%.4e,%10.4en”,a,a,a,a);printf(“b=%4.3f,%.5e,%-12.5en”,b,b,b);7.main()int a=3,b=5,x,y;x=a+1,b+6;y=(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河南兴豫惠民职业技能培训学校有限公司市场化招聘15人备考题库含答案详解(模拟题)
- 2026江西省农业科学院园艺研究所编外招聘1人备考题库含答案详解(研优卷)
- 2026浙江衢州市龙游县新教师提前批招聘11人备考题库(江西师范大学)及答案详解(名师系列)
- 2026江西萍乡莲花县文物管理办公室招聘见习生2名备考题库及答案详解1套
- 2026广东星海音乐学院第二批招聘2人备考题库及答案详解(历年真题)
- 2026浙江省商业集团有限公司招聘4人备考题库(第3期)带答案详解
- 2026青海省核工业核地质研究院非编工勤岗人员招聘2人备考题库含答案详解(a卷)
- 2026投资合同协议书(10篇不同范畴)
- 2026届山东省菏泽市鄄城县第一中学高三下学期学情自测历史试题(含答案)
- “五一”假期AI伪造与智能设备风险防范指南
- 小羊羔(2023年江苏苏州中考语文试卷记叙文阅读题及答案)
- 2024年内蒙古呼和浩特中考化学试卷试题真题(含答案详解)
- DL∕T 1631-2016 并网风电场继电保护配置及整定技术规范
- QCT457-2023救护车技术规范
- DZ∕T 0207-2020 矿产地质勘查规范 硅质原料类(正式版)
- JC-T 564-2000 纤维增强硅酸钙板
- 华为信用管理手册
- 酒店财务管理课件:成本控制
- 抑郁症病人护理课件
- 新苏教版四年级下册科学活动手册参考答案
- 扁锭铸造工艺流程-铸造生产工艺流程图课件
评论
0/150
提交评论