c语言100则经典问题.doc

上传人:hw****26 文档编号:3550793 上传时间:2019-06-04 格式:DOC 页数:113 大小:455.55KB
下载 相关 举报
c语言100则经典问题.doc_第1页
第1页 / 共113页
c语言100则经典问题.doc_第2页
第2页 / 共113页
c语言100则经典问题.doc_第3页
第3页 / 共113页
c语言100则经典问题.doc_第4页
第4页 / 共113页
c语言100则经典问题.doc_第5页
第5页 / 共113页
点击查看更多>>
资源描述

1、以文本方式查看主题- 江苏省计算机等级考试网 (http:/ 二级 c 语言学院 (http:/ 个经典 C 语言程序 (http:/ x,m;for(y=1;y=-1;y-=0.1) /*y 为列方向,值从 1 到-1,步长为 0.1*/m=acos(y)*10; /*计算出 y 对应的弧度 m,乘以 10 为图形放大倍数*/for(x=1;x#include void main()double y;int x,m,n,yy;for(yy=0;yy#includevoid main()double y;int x,m;for(y=10;y=-10;y-)m=2.5*sqrt(100-y*y)

2、; /*计算行 y 对应的列坐标 m,2.5 是屏幕纵横比调节系数因为屏幕的行距大于列距,不进行调节显示出来的将是椭圆*/for(x=1;xvoid main()int integer,i,max,min,sum;max=-32768; /*先假设当前的最大值 max 为 C 语言整型数的最小值*/min=32767; /*先假设当前的最小值 min 为 C 语言整型数的最大值*/sum=0; /*将求累加和变量的初值置为 0*/for(i=1;imax)max=integer; /*通过比较筛选出其中的最高分*/if(integervoid main()long i;int j;printf

3、(“Please input number:“);scanf(“%ld“,for(j=999;j=100;j-)if(i%j=0)printf(“The max factor with 3 digits in %ld is:%d,n“,i,j);break;*运行结果输入:555555输出:The max factor with 3 digits in 555555 is:7776.高次方数的尾数求 13 的 13 次方的最后三位数*问题分析与算法设计解本题最直接的方法是:将 13 累乘 13 次方截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果

4、。事实上,题目仅要求最后三位的值,完全没有必要求 13 的 13 次方的完整结果。研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,可以大大简化程序。*程序说明与注释#includevoid main()int i,x,y,last=1; /*变量 last 保存求 X 的 Y 次方过程中的部分乘积的后三位 */printf(“Input X and Y(X*Y):“);scanf(“%d*%d“,for(i=1;i=2)当 J=1 或 J=N+1 时:其值为 1J!=1 且 J!=N+1 时:其值为第 N-1 行的第 J-1 个值与第

5、 N-1 行第 J 个值之和将这些特点提炼成数学公式可表示为:1 x=1 或 x=N+1c(x,y)= c(x-1,y-1)+c(x-1,y) 其它本程序应是根据以上递归的数学表达式编制的。*程序说明与注释#includevoid main()int i,j,n=13;printf(“N=“);while(n12)scanf(“%d“, /*控制输入正确的值以保证屏幕显示的图形正确 */for(i=0;ivoid printb(int,int);void main()int x;printf(“Input number:“);scanf(“%d“,printf(“number of decim

6、al form:%dn“,x);printf(“ its binary form:“);printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int 型在内存中所占的字节数sizeof(int)*8:int 型对应的位数*/putchar(n); void printb(int x,int n)if(n0)putchar(0+(unsigned)(x /*输出第 n 位*/printb(x,n-1); /*归调用,输出 x 的后 n-1 位 */*运行结果输入:8输出:number of decimal form:8its bunary form:000000

7、0000001000输入:-8输出:number of decimal form:-8its binary form:1111111111111000输入:32767输出:number of decimal form:32767its binary form:0111111111111111输入:-32768输出:number of decimal form:-32768its binary form:1000000000000000输入:128输出:number of decimal form:128its binary form:000000001000000011.打鱼还是晒网中国有句俗

8、语叫“三天打鱼两天晒网”。某人从 1990 年 1 月 1 日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼” 还是“晒网”。*问题分析与算法设计根据题意可以将解题过程分为三步:1)计算从 1990 年 1 月 1 日开始至指定日期共有多少天;2)由于“ 打鱼”和“ 晒网” 的周期为 5 天,所以将计算出的天数用 5 去除;3)根据余数判断他是在“打鱼”还是在“晒网” ;若 余数为 1,2,3,则他是在“打鱼”否则 是在“晒网”在这三步中,关键是第一步。求从 1990 年 1 月 1 日至指定日期有多少天,要判断经历年份中是否有闰年,二月为 29 天,平年为 28 天。闰年的方法

9、可以用伪语句描述如下:如果 (年能被 4 除尽 且 不能被 100 除尽) 或 能被 400 除尽)则 该年是闰年;否则 不是闰年。C 语言中判断能否整除可以使用求余运算(即求模)*程序与程序注释#includeint days(struct date day);struct dateint year;int month;int day;void main()struct date today,term;int yearday,year,day;printf(“Enter year/month/day:“);scanf(“%d%d%d“, /*输入日期*/term.month=12; /*设置变量的初始值:月*/term.day=31; /*设置变量的初始值:日 */for(yearday=0,year=1990;year0for(i=1;i=9;i+) /*i:车号前二位的取值 */for(j=0;j=9;j+) /*j:车号后二位的取值 */if(i!=j) /*判断二位数字是否相异*/k=i*1000+i*100+j*10+j; /*计算出可能的整数*/for(c=31;c*ck;c+); /*判断该数是否为另一整数的平方*/if(c*c=k) printf(“Lorry-No. is %d.n“,k); /*若是,打印结果*/ *运行结果Lorry _No.is 7744

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。