c语言程序阅读练习_第1页
c语言程序阅读练习_第2页
c语言程序阅读练习_第3页
c语言程序阅读练习_第4页
c语言程序阅读练习_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Guoxinlin C语言第1章例1.3求2个数中较大者#include <stdio.h>void main() int max(int x,int y); int a, b, c; scanf("%d, %d", &a, &b); c=max(a, b); printf("max=%dn", c); int max(int x, int y) int z;if (x>y) z=x;else z=y;return (z); 1.5 编写一个C程序,输出以下信息:*Very good!*/ chapter1.cpp :

2、Defines the entry point for the console application./#include "stdafx.h"int main(int argc, char* argv)printf("*n");printf(" Very good!n");printf("*n");return 0;1.6 编写一个C程序,输入a、b、c3个值,输出其中最大者。/ chapter1.cpp : Defines the entry point for the console application.

3、/#include "stdafx.h"int max(int a, int b, int c)int temp;temp=a;if(temp < b)temp=b;if(temp < c)temp=c;return temp;int main(int argc, char* argv)int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("max=%dn", max(a, b, c);return 0;- C语言第2章例2.1求1×2×

4、;3×4×5例2.2有50个学生,要求将他们之中成绩在80分以上的学号和成绩输出例2.3判定2000-2500年中的每一年是否是闰年例2.4求1-1/2+1/3-1/4+1/99-1/100例2.5对一个大于或等于3的正整数,判断它是不是一个素数例2.6将例2.1求5!的算法用流程图表示例2.7将例2.2的算用流程图表示。将50名学生中成绩在80分以上者的学号和成绩输出 例2.8将例2.3判定闰年的算法用流程图表示例2.16将例2.11表示的算法(求5!)用C语言表示#include <stdio.h>main()int i, t;t=1; i=2; while

5、(i<=5)t=t*i;i=i+1; printf(“%d”, t); 例2.17求例2.14表示的算法(求级数的值)求1-1/2+1/3+1/99-1/100用C语言表示#include <stdio.h>main()int sign=1;float deno=2.0, sum=1.0, term;while(deno<=100) sign=-sign; term=sign/deno;sum=sum+term;deno=deno+1; printf(“%f”, sum);2.4 用传统流程图表示求解以下问题的算法(1) 有两个瓶子A和B,分别盛放醋和酱油,要求将它们互

6、换。#include "stdafx.h"int main(int argc, char* argv)int A;int B;A=1;B=2;printf("A=%d B=%dn", A, B);int C;C=A;A=B;B=C;printf("A=%d B=%dn", A, B);return 0;(2) 依次将10个数输入,要求将其中最大的数输出#include "stdafx.h"int main(int argc, char* argv)int a;int max;scanf("%d"

7、, &a);max=a;for(int i=2; i<=10; i+)scanf("%d", &a);if(a > max)max=a;printf("max=%dn", max);return 0;(3) 有3个数a、b、c,要求按大小顺序把它们输出#include "stdafx.h"int main(int argc, char* argv)int a, b, c;int temp;scanf("a=%d b=%d c=%d", &a, &b, &c);if

8、(a>b)temp=a;a=b;b=temp;if(b>c)temp=b;b=c;c=temp;if(a>b)temp=a;a=b;b=temp;printf("a=%d b=%d c=%dn", a, b, c);return 0;(4) 求1+2+3+100#include "stdafx.h"int main(int argc, char* argv)int sum;sum=0;for(int i=1; i<=100; i+)sum=sum+i;printf("1+2+3+.+100=%dn", sum)

9、;return 0;(5) 判断一个数n能否同时被3和5整除#include <stdafx.h>int main(int argc, char * argv)int n;scanf("n=%d", &n);if(n%3=0 && n%5=0)printf("%d能够被3和5同时整除n", n);elseprintf("%d不能够被3和5同时整除n", n);return 0; (6) 将100-200之间的素数输出#include <stdafx.h>#include <math

10、.h>int judge(int n)int w;w=0;for(int i=2; i<=sqrt(n); i+)int r;r=n%i;if(r=0)w=1;break;return w;int main(int argc, char * argv)int n;for(n=100; n<=200; n+)if(judge(n) = 0)printf("%d是素数n", n);elseprintf("%d不是素数n", n);return 0;(7) 求两个数m和n的最大公约数#include <stdafx.h>int m

11、ain(int argc, char * argv)int m, n;int min;scanf("%d %d", &m, &n);if(m<n)min=m;elsemin=n;for(int i=min; i>=1; i-)if(m%i=0 && n%i=0)printf("%d是%d和%d的最大公约数n", i, m, n);break;return 0;(8)求方程式ax2+bx+c=0的根。分别考虑:有两个不等的实根;有两个相等的实根#include <stdafx.h>#include &

12、lt;math.h>int main(int argc, char * argv)float a, b, c;scanf("a=%f b=%f c=%f", &a, &b, &c);float disc;disc=b*b-4*a*c;if(disc > 0)printf("x1=%fn", (-b+sqrt(disc)/(2*a);printf("x2=%fn", (-b-sqrt(disc)/(2*a);if(disc = 0)printf("x=%f", -b/(2*a);i

13、f(disc < 0)printf("方程没有实根");return 0;- C语言第3章例3.7大小写字母的转换#include <stdio.h>void main() char c1, c2;c1='a'c2='b' c1=c1-32; c2=c2-32; printf("%c %c", c1, c2);3.6写出以下程序的运行结果:#include <stdio.h>void main()char c1=a, c2=b, c3=c, c4=101, c5=116;printf(“a%c

14、b%ctc%ctabcn”, c1, c2, c3);printf(“tb%c%cn”, c4, c5);3.7要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是”E“,用”E“代替”A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为C、h、I、n、a,经过运算,使c1、c2、c3、c4、c5分别变为G、l、m、r、e,并输出。#include <stdafx.h>int main(int argc, char * argv)char c1, c

15、2, c3, c4, c5;c1='C'c2='h'c3='i'c4='n'c5='a'printf("%c%c%c%c%cn", c1, c2, c3, c4, c5);c1+=4;c2+=4;c3+=4;/c3=c3+4c4+=4;c5+=5;printf("%c%c%c%c%cn", c1, c2, c3, c4, c5);3.8 例3.6能够改成如下:#include <stdio.h>void main()int c1, c2;c1=97;c2=98;p

16、rintf(“%c %cn”, c1, c2);printf(“%d %dn”, c1, c2);3.9求下面算术表达式的值(1)x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.5#include <stdafx.h>main()float x=2.5;int a=7, b;float y=4.7;printf("%lfn",x+a%3*(int)(x+y)%2/4);/2.5a=2;b=3;x=3.5;y=2.5;printf(

17、"%lfn", (float)(a+b)/2+(int)x%(int)y);/3.53.10写出下面程序的运行结果#include <stdio.h>void main()int i, j, m, n;i=8;j=10;m=+i;n=j+;printf(“%d, %d, %d, %dn”, i, j, m, n);3.11写出下面赋值的结果#include <stdafx.h>main()int i=99;char c;unsigned int ui;float f;long int li;c=i;/c='c'ui=i;/ui=99f

18、=i;/f=99.0li=i;/li=99printf("c=%cn", c);printf("ui=%un", ui);printf("f=%fn", f);printf("li=%ldn", li); 3.12写出下面赋值表达式运算后a的值,设原来a=12:(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2), n的值等于5(6)a+=a-=a*=a#include <stdafx.h>main()int a=12;printf("a+=a %dn&qu

19、ot;, a+=a);/a=a+aprintf("a-=2 %dn", a-=2);/a=a-2printf("a*=2+3 %dn", a*=2+3);/a=a*(2+3)=22*5printf("a/=a+a %dn", a/=a+a);/a=a/(a+a)int n=5;printf("a%=(n%=2) %dn", a%=(n%=2);/a=a%printf("a+=a-=a*=a %dn", a+=a-=a*=a);/*1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5

20、)a%=(n%=2), n的值等于5(6)a+=a-=a*=a*/- C语言第4章例4.1输出单个字符#include <stdio.h>void main()char a, b, c;a=B; b=O; c=Y;putchar(a); putchar(b); putchar(c); putchar(n);例4.2输入单个字符#include <stdio.h>void main()char c;c=getchar();putchar(c);putchar(n);例4.3无符号数据的输出#include <stdio.h>void main()unsigne

21、d int a=65535;int b=-2;printf(“a=%d, %o, %x, %un”, a, a, a, a);printf(“b=%d, %o, %x. %un”, b, b, b, b);例4.5字符串的输出#include <stdio.h>void main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,”CHINA”,”CHINA”,”CHINA”,”CHINA”);例4.6输出实数时的有效位数#include <stdio.h>void main()float x, y;x=111111.111;y=222222.222;p

22、rintf(“%fn”, x+y);例4.7输出双精度数时的有效位数#include <stdio.h>void main()double x, y;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%fn”, x+y);例4.9用scanf函数输入数据#include <stdio.h>void main()int a, b, c;scanf(“%d%d%d”, &a, &b, &c);printf(“%d,%d,%dn”, a, b, c);例4.10输入三角形的三边长,求

23、三角形面积 其中s = (a+b+c)/2#include <math.h>main() float a, 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.2fn”, a, b, c, s); printf(“area=%7.2fn”, area);例4.11从键盘输入一个大写字母,要求改用小写字母输出#include <stdio

24、.h>void main()char c1, c2;c1=getchar();printf(“%c, %dn”, c1, c1);c2=c1+32;printf(“%c, %dn”, c2, c2);例4.12求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac>0#include <math.h>main() float a, b, c, disc, x1, x2, p, q; scanf(“a=%f, b=%f, c=%f”, &a, &b, &c); disc=b*b-4*a*c; p=-b/(2*a);q=sqrt(dis

25、c)/(2*a);x1=p+q;x2=p-q; printf(“x1=%5.2fnx2=%5.2fn”, x1, x2);4.8 输入圆半径,求圆周长、圆面积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。#include <stdafx.h>void main()float r;scanf("%f", &r);printf("圆的半径=%.2fn", r);printf("圆的面积=%.2lfn", 3.14*r*r);printf("圆的周长=%.2lfn&q

26、uot;, 3.14*r*2);4.9 输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(F-32)。输出要有文字说明,取2位小数。#include <stdafx.h>void main()float F;scanf("%f", &F);double c;c=5.0/9*(F-32);printf("华式温度=%f对应的摄氏温度%lf=n", F, c);- C语言第5章5.1输入两个实数,按代数值由小到大的顺序输出这两个数#include <stdio.h>void main()float a, b, t;sca

27、nf(“%f,%f”, &a, &b);if(a>b)t=a;a=b;b=t;printf(“%5.2f,%5.2fn”, a, b);例5.2输入3个数a、b、c,要求按由小到大的顺序输出#include <stdio.h>void main()float a, b, c, t;scanf(“%f,%f,%f”, &a, &b, &c);if(a>b) t=a;a=b;b=t;if(a>c) t=a;a=c;c=t;if(b>c) t=b;b=c;c=t;例5.3编程,输入x值,输出y值,函数:-1 (x<0)

28、 y = 0 (x=0)1 (x>0)#include <stdio.h>void main()int x, y;scanf(“%d”, &x);if(x<0) y=-1;elseif(x=0) y=0; else y=1;printf(“x=%d,y=%dn”,x,y);例5.4输入一个字母,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符#include <stdio.h>void main()char ch;scanf(“%c”, &ch);ch=(ch>=A && ch&l

29、t;=Z) ? (ch+32) : ch;printf(“%cn”, ch);例5.5写程序,判断某一年是否闰年#include <stdafx.h>void main()int y;scanf("%d", &y);if(y%4 = 0)if(y%100 != 0)printf("%d是闰年n", y);elseif(y%400 = 0)printf("%d是闰年n", y);elseprintf("%d不是闰年n", y);elseprintf("%d不是闰年n", y);

30、例5.6求ax2+bx+c=0方程的解(1)a=0(2)b2-4ac=0(3)b2-4ac>0(4)b2-4ac<0#include <stdafx.h>#include <math.h>void main()double a, b, c;scanf("%lf %lf %lf", &a, &b, &c);if(a = 0)printf("不是一元二次方程n");elsedouble disc;disc=b*b-4*a*c;if(disc > 0)printf("x1=%lfn&q

31、uot;, (-b+sqrt(disc)/(2*a);printf("x2=%lfn", (-b-sqrt(disc)/(2*a);elseif(disc = 0)printf("x1=x2=%lfn", (-b)/(2*a);elseprintf("没有实根n");例5.7运输公司对用户计算运费路程越远,每吨每千米运费越低。标准如下:s<250没有折扣250s<500 2%折扣500s<1000 5%折扣1000s<2000 8%折扣20003<3000 10%折扣3000s 15%折扣设每吨每千米货物

32、的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为f=p*w*s(1-d)#include <stdafx.h>void main()double p, w, d;int s;scanf("%lf %lf %d", &p, &w, &s);if(s<=0)printf("路程不能为0或负数n");return;int c=s/250;switch(c)case 0:/s<250d=0.0;break;case 1:d=0.02;break;case 2:/500, 750)case 3:

33、/750, 1000)d=0.05;break;case 4:case 5:case 6:case 7:/1000, 2000)d=0.08;break;case 8:case 9:case 10:case 11:/2000, 3000)d=0.1;break;default:d=0.15;break;printf("总运费%lfn", p*w*s*(1-d);5.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。(1)a+b>c && b=c(2)a|b+c && b-c(3)!(a>b) && ! c|1

34、(4)!(x=a) && (y=b) && 0(5)!(a+b)+c-1 && b+c/2#include <stdafx.h>void main()int a, b, c;a=3;b=4;c=5;printf("%dn", (a+b)>c) && (b=c);/1 && 05.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。#include <stdafx.h>void main()int a, b, c;scanf("%d %d %d"

35、;, &a, &b, &c);int max=a;if(max < b)int t;t=max;max=b;b=t;if(max < c)int t;t=max;max=c;c=t;printf("max=%dn", max);5.5 有一个函数:x x<1 y= 2x-1 1x<103x-11 10x#include <stdafx.h>void main()float x, y;scanf("%f", &x);if(x < 1)y=x;elseif(x < 10)y=3*

36、x-11;elsey=2*x-1;printf("y=%fn", y);5.6 给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。#include <stdafx.h>void main()int grade;scanf("%d", &grade);if(grade >= 90)printf("%d->%cn", grade, 'A');elseif(grade >= 80)printf("

37、;%d->%cn", grade, 'B');elseif(grade >= 70)printf("%d->%cn", grade, 'C');elseif(grade >= 60)printf("%d->%cn", grade, 'D');elseprintf("%d->%cn", grade, 'E');5.9 输入4个整数,要求按由小到大的顺序输出。5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)

38、、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任意点的坐标,求该点的建筑高度(塔外的高度为零)。- C语言第6章 例6.1用if语句和goto语句构成循环,求1+2+100 #include <stdio.h>void main()int i, sum=0;i=1;loop: if(i<=100) sum=sum+i;i+;goto loop;printf(“%dn”, sum);例6.4while和dowhile循环的比较#include <stdio.h>void main()int sum=0, i;scanf(“%d”, &am

39、p;i);while(i<=10)sum=sum+i;i+;printf(“sum=%dn”, sum);#include <stdio.h>void main()int sum=0, I;scanf(“%d”, &i);dosum=sum+i;i+; while (i<=10);printf(“sum=%dn”, sum);例6.5把100200之间的不能被3整除的数输出#include <stdio.h>void main()int n;for(n=100; n<=200; n+)if(n%3=0)continue;printf(“%d “

40、, n);printf(“n”);例6.6用p/41-1/3+1/5-1/7+公式求p的近似值,直到某一项的绝对值小于10-6为止#include "stdafx.h"#include <math.h>int main(int argc, char* argv)int n, s;float t, pi;t=1.0;pi=0;n=1;s=1;while(fabs(t)>=1e-6)pi=pi+t;n=n+2;s=-1*s;t=(float)s*1/n;printf("%fn", pi*4);return 0;例6.7求Fibonacci数

41、列前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和#include "stdafx.h"int main(int argc, char* argv)int f1=1, f2=1;for(int i=1; i<=20; i+)printf("%d %dn", f1, f2);f1=f1+f2;f2=f2+f1;return 0;例6.8判断m是否素数#include <math.h>int main(int argc, char* argv)int m, k, i;scanf("%d

42、", &m);k=sqrt(m);i=2;while(i<=k)if(m%i = 0)break;i=i+1;if(i > k)printf("%d是素数n", m);elseprintf("%d不是素数n", m);return 0;例6.9求100200间的全部素数#include "stdafx.h"#include <math.h>int main(int argc, char* argv)int m, k, i;for(int j=100; j<=200; j+)k=sqrt(

43、j);i=2;while(i<=k)if(j%i = 0)break;i=i+1;if(i > k)printf("%d是素数n", j);elseprintf("%d不是素数n", j);return 0;例6.10译密码。为使电文保密,往往按一定规律将其转换成密码,受保人再按约定的规律将其译回原文 例如,可以按一下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。例如“China!”转换为“Glmre!”#include "std

44、afx.h"int main(int argc, char* argv)char c;while( c=getchar() ) != 'n')if(c >= 'A' && c <= 'Z') | (c >= 'a' && c <= 'z')if(c >= 'W' && c <= 'Z') | (c >= 'w' && c <= 'z'

45、;)c=c-26;c=c+4;printf("%c", c);printf("n");return 0;6.2 输入一行字符,分别统计出其中英文字母、空格、数字和其他字母的个数。#include <stdafx.h>void main()char c;int c1, c2, c3, c4;c1=c2=c3=c4=0;while(c=getchar() != 'n')if(c >= 'a' && c <= 'z' | c >= 'A' &&

46、amp; c <= 'Z')c1+;else if(c = ' ')c2+;else if(c >= '0' && c <= '9')c3+;else c4+;printf("%d %d %d %dn", c1, c2, c3, c4);6.3 求Sn=a+aa+aaa+aaa之值,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(此时n=5)#include <stdafx.h>void main()int a, n, term, s

47、um;term=0;scanf("%d %d", &a, &n);sum=0;for(int i=1; i<=n; i+)term=term*10+a;printf("%d->%dn", i, term);sum=sum+term;printf("sum=%dn", sum);6.4 求1!+2!+3!+4!+20!#include <stdafx.h>void main()float term, sum;sum=0;term=1;for(int i=1; i<=20; i+)term=t

48、erm*i;printf("%d!=%fn", i, term);sum+=term;printf("sum=%fn", sum);6.6 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33#include <stdafx.h>void main()int n;for(n=100; n<=999; n+)int a, b, c;c=n%10;a=n/100;b=n/10%10;if(a*a*a+b*b*b+c*c*c = n)printf("%d是水仙花数n"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论