C语言复习完整上课课件程序.docx
- 文档编号:3274742
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:85
- 大小:48.82KB
C语言复习完整上课课件程序.docx
《C语言复习完整上课课件程序.docx》由会员分享,可在线阅读,更多相关《C语言复习完整上课课件程序.docx(85页珍藏版)》请在冰点文库上搜索。
C语言复习完整上课课件程序
第一章例1.1
main()/*主函数*/
{
printf(“ThisisaCprogram.\n”);;
}
本程序执行后屏幕上输出以下一行信息:
ThisisaCprogram.
例1.2
main()
{
inta,b,sum;/*变量定义*/
a=123;b=456;
sum=a+b;
printf(“sumis%d\n”,sum);
}
◆本程序的作用是求两个整数a和b之和sum。
输出一行信息:
sumis579
例1.3
main()
{
inta,b,c;
scanf(“%d,%d”,&a,&b);/*输入a、b的值*/
c=max(a,b);/*调用max函数*/
printf(“max=%d”,c);
}
intmax(intx,inty)/*定义max函数类型为整型*/
/*形式参数x,y为整型*/
{
intz;/*定义max函数中的变量z*/
if(x>y)z=x;
elsez=y;
return(z);/*函数返回语句,将z的值返回,*/
}/*通过max带回调用处*/
◆本程序求两个数中的最大数。
程序运行情况如下:
3,8(输入3和8给a和b)
max=8(输出c的值)
第三章
例3.1符号常量的使用。
#include
#definePRICE30
main()
{
intnum=10,total;
total=num*PRICE;/*相当total=num*30;*/
printf(“total=%d”,total);
}
程序运行结果为:
total=300
例3.2整型变量的定义及使用
#include
main()
{
inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}
运行结果:
a+u=22,b+u=-14
例3.3实型数据的舍入误差
main()
{floata,b;
a=123456.789e5;
b=a+20;
printf(“%f,%f”,a,b);
}
运行结果:
a和b的值都是12345678848.000000
例3.4字符数据的使用。
#include
main()
{
charc1,c2;
c1=97;
printf("%c%c\n",c1,c1+1);
printf("%d%d\n",c1,c1+1);
c2='a';
c2=c2-32;
printf("%c%c\n",c2,c2+1);
}
运行结果:
ab
9798
AB
例3.5自增、自减运算符的运用
main()
{输出值i的值
inti=8;
printf("%d\n",++i);99
printf("%d\n",--i);88
printf("%d\n",i++);89
printf("%d\n",i--);98
printf("%d\n",-i++);-89
printf("%d\n",-i--);-98
}
例3.6自增、自减运算符的结合方向
main()
{
inti=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
说明:
①P=(i++)+(i++)+(i++)应理解为
三个i相加,故P值为15。
然后i再自增1三次,故i的最后值为8。
②q=(++j)+(++j)+(++j)应理解为
j自增1三次后值为8,三个8相加的和q为24,j的最后值仍为8。
例3.7赋值时的类型转换。
main()
{
inta,b=322;
floatx,y=8.88;
charc1='k',c2;
a=y;/*a中得到整数8*/
x=b;/*x赋以整型量b值322,后增加小数部分*/
a=c1;/*a中得到‘k’的ASCII码*/
c2=b;/*取b低八位成为字符型(b的低八位
为01000010,即十进制66,按ASCII码
对应于字符B*/
printf("%d,%f,%d,%c",a,x,a,c2);
}
例3.9逗号表达式的求值。
main()
{
inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
a<--2,b<--4,c<--6,
x<--a+b,y<---x
main()
{
inta=2,b=4,c=6,x,z;
z=((x=a+b),(b+c));
printf(“z=%d,x=%d",z,x);
}
a<--2,b<--4,c<--6,
x<--a+b,z<--b+c
◆本例中,z等于整个逗号表达式的值,也就是表达式2的值,y是第一个表达式的值。
例3.9逗号表达式的求值。
main()
{
inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
a<--2,b<--4,c<--6,
x<--a+b,y<---x
main()
{
inta=2,b=4,c=6,x,z;
z=((x=a+b),(b+c));
printf(“z=%d,x=%d",z,x);
}
a<--2,b<--4,c<--6,
x<--a+b,z<--b+c
◆本例中,z等于整个逗号表达式的值,也就是表达式2的值,y是第一个表达式的值。
第四章
例4.1输出单个字符。
#include
main()
{
chara='B',b='o',c='k';
putchar(a);putchar(b);putchar(b);
putchar(c);putchar('\t');
putchar(a);putchar(b);
putchar('\n');
putchar(b);putchar(c);
}
运行结果:
BookBo
ok
例4.2printf函数的使用
#include
main()
{
inta=88,b=89;
printf("%d%d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d",a,b);
}
运行结果:
8889
88,89
X,Y
a=88,b=89
本例中四次输出了a,b的值,但由于格式控制字符串不同,输出的结果也不相同。
例4.3d格式符的使用
#include
main()
{inta,b;longd;
a=123;b=12345;d=135790;
printf("%4d,%4d\n",a,b);
printf("%ld,%8ld\n",d,d);
}
运行结果:
123,12345
135790,135790
例4.4格式字符的使用
main()
{
inta=15;
floatb=138.3576278;
doublec=35648256.3645687;
chard='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%5.4f\n",b,b);
printf("c=%f,%8.4f\n",c,c);
printf("d=%c,%8c\n",d,d);
}
运行结果:
a=15,15,17,f
b=138.357620,138.3576
c=35648256.364569,35648256.3646
d=p,p
例4.5用scanf函数输入数据。
main()
{
inta,b,c;
printf(“inputa,b,c:
\n”);/*在屏幕上输出提示*/
scanf(“%d%d%d”,&a,&b,&c);/*注意&的用法!
*/
printf("a=%d,b=%d,c=%d",a,b,c);
}
◆由于没有非格式字符在“%d%d%d”之间作输入时的间隔,输入时用一个以上的空格或回车键作为间隔。
运行结果:
inputa,b,c:
789
a=7,b=8,c=9
例4.6输入三个小写字母,输出其ASCII码和对应的大写字母。
main()
{
chara,b,c;
printf("inputcharactera,b,c:
\n");
scanf("%c%c%c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
}
运行结果:
inputcharactera,b,c:
dfg
D,F,G
例4.7输入三角形的三边长,求三角形面积。
设三边长分别为a、b、c,则三角形面积为area=√(s(s-a)(s-b)(s-c)),其中,s=(a+b+c)/2
程序:
#include
main()
{
floata,b,c,s,area;
scanf(“%f,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);
}
运行结果:
3,4,5
a=3.00,b=4.00,c=6.00,s=6.00
area=6.00
第五章
例5.1关系表达式的值。
#include
main()
{charc='k';
inti=1,j=2,k=3;
floatx=3e+5,y=0.85;
printf("%d,%d\n",'a'+5
printf("%d,%d\n",1 printf("%d,%d\n",i+j+k==-2*j,k==j==i+5); } 运行结果: 1,0 1,1 0,0 例5.2 逻辑表达式的值。 #include main() { charc='k'; inti=1,j=2,k=3; floatx=3e+5,y=0.85; printf("%d,%d\n",! x*! y,! ! ! x); printf("%d,%d\n",x||i&&j-3,i } 运行结果: 0,0 1,0 0,1 例5.3输入两个整数,输出较大的整数。 #include main() { inta,b,max; printf("\ninputtwonumbers: "); scanf("%d%d",&a,&b); max=a; if(max printf("max=%d",max); } 运行结果: inputtwonumbers: 1244 max=44 例5.4输入两个整数,输出较大的整数。 #include main() { inta,b; printf("inputtwonumbers: "); scanf("%d%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b); } ◆本例中改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。 例5.5求任一实数的绝对值 #include main() { doublex,xabs; printf(“inputadata: ”); scanf(“%lf”,&x); if(x<0) xabs=-x; else xabs=x; printf(“x=%f,|x|=%f\n”,x,xabs); } 运行结果: inputadata: -88 x=-88.000000,|x|=88.000000 例5.6判别键盘输入字符的类别。 #include main() { charc; printf("inputacharacter: "); c=getchar(); if(c<32) printf("Thisisacontrolcharacter\n"); elseif(c>='0'&&c<='9') printf("Thisisadigit\n"); elseif(c>='A'&&c<='Z') printf("Thisisacapitalletter\n"); elseif(c>='a'&&c<='z') printf("Thisisasmallletter\n"); else printf("Thisisanothercharacter\n"); } 运行结果: inputacharacter: A Thisisacapitalletter 例5.7 输入两个整数,判断其大小。 #include main() { inta,b; printf("pleaseinputA,B: "); scanf("%d%d",&a,&b); if(a! =b)/*if(a==b)printf(“A=B\n”); if(a>b)printf("A>B\n");elseif(a>b)printf(“A>B\n”); elseprintf("A elseprintf("A=B\n"); } ◆本例中用了if语句的嵌套结构。 ◆这种问题也可以用if-else-if语句完成。 且程序更清晰 例5.8 求a,b,c中的绝对值最大的数。 #include“stdio.h” #include“math.h” main() { floata,b,c,max; printf(“inputthreedata: \n”); scanf(“%f,%f,%f”,&a,&b,&c); if(fabs(a)>fabs(b)) max=fabs(a)>fabs(c)? a: c; else max=fabs(b)>fabs(c)? b: c; printf(“a=%.2f,b=%.2f,c=%.2f\nmax=%.2f”, a,b,c,max); } 运行结果: inputthreedata: 33,-45,26 a=33.00,b=-45.00,c=26.00 max=-45.00 例: switch(grade) {case'A': printf("85~100\n"); case'B': printf("70~84\n"); case'C': printf("60~69\n"); case'D': printf("<60\n"); default: printf("Error\n");} (6)多个case可共用一组执行语句。 例: case'A': case'B': case'C': printf(">60\n");break; 例5.9判断某一年是否闰年 分析: 闰年的条件是符合下列条件之一: 1)能被4整除,但不能被100整除 2)能被400整除(如,2000年) #include“stdio.h” main() { intyear,leap; scanf("%d",&year); if((year%4==0&&year%100! =0)||year%400==0) leap=1; else leap=0; if(leap) printf("%dis",year); else printf("%disnot",year); printf("aleapyear\n"); } 运行结果: 1998 1998isnotaleapyear 例5.10运输公司对用户计算运费。 距离(s) 越远,每公里运费越低,标准如下: s<250km没有折扣 250s<5002%折扣 500s<10005%折扣 1000s<20008%折扣 2000s<300010%折扣 3000s15%折扣 设每公里每吨的基本运费为p,货物重为w,距离为s,折扣为d,则总运费计算公式为: f=p*w*s*(1-d) 分析: 折扣变化的规律见下图,其中,c代表250的 倍数。 程序如下: #include“stdio.h” main() { intc,s; floatp,w,d,f; scanf("%f,%f,%d",&p,&w,&s); if(s>=3000)c=12; elsec=s/250; switch(c) {case0: d=0;break; case1: d=2;break; case2: case3: d=5;break; case4: case5: case6: case7: d=8;break; case8: case9: case10: case11: d=10;break; case12: d=15;break; } f=p*w*s*(1-d/100.0);printf("freight=%15.4f",f); } 运行结果: 100,10,500 freight=475000.0000 例6.1输入一个正整数n,求2n main() { intn,i=1; longp=1; printf(“inputdatan: \n”); scanf(“n=%d”,&n); while(i<=n) {p=p*2; i++; } printf(“p=%ld”,p);} ◆while和do-while循环的比较 例6.2求s=1+2+3+4…+100 (1)main() (2)main() {{ intsum=0,i=1;intsum=0,i=1; while(i<=100)do{ {sum=sum+i; sum=sum+i;i++; i++;} }while(i<=100); printf("%d\n",sum);printf("%d\n",sum); }} 例6.3把100~200之间不能被3整除的数输出。 main() { intn; for(n=100;n<=200;n++) { if(n%3==0)continue; printf(“%d,”,n); } } 例6.4用 公式求的值,直到最后一项的绝对值小于10-4为止。 #include“math.h” main() { ints;floatn,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)>=1e-4) { pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf(“pi=%10.6f\n”,pi); } 例6.5判断m是否素数 我们采用的算法是: 让m被2到K除,如果m能被2~K中的任何一个整数整除,则提前结束循环,此时i<=k。 如果m不能被2~k之间的任一整数整除,则在i>=k+1时终止循环。 循环之后如i>=k+1则i是素数。 #include"math.h" main() { intm,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf("%disaprimenumber\n",m); else printf("%disnotaprimenumber\n",m); } 例6.6求100到200之间的全部素数 #include"math.h" main() { intm,i,k,n=0; for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) { printf("%d",m);n++; } if(n%10==0)printf("\n"); } printf(“\n”); } 例6.7用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。 牛顿迭代公式: 算法分析: (1)f(x)=2x3-4x2+3x-6=((2*x-4)*x+3)*x-6f'(x)=6x2-8x+3=(6*x-8)*x+3 (2)循环初值: 置x1初值为1.5 (3)循环体为: x0=x1 f=((2*x0-4)*x0+3)*x0-6 f1=(6*x0-8)*x0+3 x1=x0-f/f1 (4)循环控制条件: 当fabs(x0-x1)>1.0e-5时进行循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言复习完整 上课课件程序 语言 复习 完整 上课 课件 程序