山东科技大学oj部分题目记答案 - 副本

上传人:xzh****18 文档编号:34300780 上传时间:2018-02-22 格式:DOC 页数:106 大小:435.60KB
返回 下载 相关 举报
山东科技大学oj部分题目记答案 - 副本_第1页
第1页 / 共106页
山东科技大学oj部分题目记答案 - 副本_第2页
第2页 / 共106页
山东科技大学oj部分题目记答案 - 副本_第3页
第3页 / 共106页
山东科技大学oj部分题目记答案 - 副本_第4页
第4页 / 共106页
山东科技大学oj部分题目记答案 - 副本_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《山东科技大学oj部分题目记答案 - 副本》由会员分享,可在线阅读,更多相关《山东科技大学oj部分题目记答案 - 副本(106页珍藏版)》请在金锄头文库上搜索。

1、C语言精彩作图之一颗三维的心 /* Heart */ #include #include #define PI 3.1415926 void main() double a; int x,y,y1,r,r1; int gdriver=DETECT,gmode; initgraph( printf(Please input Radus(640&ih480) fclose(fp);fclose(targetfp);return(0); iw-;ih-; /*putimage中的长宽比实际数值少1*/ scan_times=iw/8+1; /*行处理单位数*/ scan_pixs=scan_time

2、s*4; /*行像素字节数1单位=4字节*/ fputc(iw%256,targetfp); /*填充信息头:长、宽部分*/ fputc(iw/256,targetfp); fputc(ih%256,targetfp); fputc(ih/256,targetfp); fseek(fp,-scan_pixs,SEEK_END); for(j=0;j=0;n-) /*解码4个位面*/ for(i=0;in worklinenowpos=workpos;nowpos+; fwrite(workline,scan_pixs,1,targetfp); fclose(fp);fclose(targetf

3、p); return(1); main() int gd=VGA,gm=VGAHI,n; char *buffer,bmpfile13,_16file13=0; FILE *fp; struct ffblk *ff; /*registerbgidriver(EGAVGA_driver);*/ initgraph( printf(Now start to display 16 color bmp.nn); puts(Please choice: ); printf(0. Quit n1. BMP file namen); while(1) n=getch(); switch(n) case 0

4、:continue; case 0:exit(0); case 1: printf(Please input BMP file name(*.bmp):); gets(bmpfile); goto OUT; OUT: strncpy(_16file,bmpfile,strlen(bmpfile)-3); strcat(_16file,dat); if(!bmp_to_dat(bmpfile,_16file) puts(Cant open file!); closegraph(); exit(0); fp=fopen(_16file,rb); findfirst(_16file,ff,FA_AR

5、CH); if(buffer=malloc(ff-ff_fsize)=NULL)exit(0); n=0; while(!feof(fp) buffern=fgetc(fp); n+; for(n=0;nint main()int m,n,x;float s;scanf (%d %d %d,if (m*x=n)s=m*x*0.88;elses=m*x;printf (%.2f,s);Problem B: 判断闰年Description输入一个正整数的年份,判断是否为闰年。Input输入只有一行,为一个10000以内的正整数。Output输出为一行。若输入为闰年偶数则输出“Yes”,否则输出“N

6、o” 。Sample Input2010Sample OutputNoHINT了解逻辑运算符和关系运算符。#include int main()int y;scanf (%d, if(y%4=0&y%100!=0|y%400=0)printf (Yes);elseprintf (No);Problem C: 水仙花数Description如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:1 3+53+33=153。Input一个整数x,100int main()int x,a,b,c;scanf (%d,a=x%10;b=x/10%10;c=x/100;if(a*a*a+b

7、*b*b+c*c*c=x)printf (YES);elseprintf (NO);Problem A: 多少张钞票Description客户去商店买东西时,不超过100美金的账单喜欢用现金支付。商店喜欢用最少的钞票给付客户的找零。请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张100美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得钞票总数最少。假设不存在其他面值的钞票,也不会有几角几分的价格,商店的各种钞票总是够用的。Input输入一个整数x,0int main()int x,s,a,b,c,d;scanf (%d,s=100-x;a=s/20;b

8、=(s-20*a)/10;c=(s-20*a-10*b)/5;d=s-20*a-10*b-c*5;printf ($20 bills: %dn,a);printf ($10 bills: %dn,b);printf ( $5 bills: %dn,c);printf ( $1 bills: %dn,d);Problem B: 自动拨出电话的程序Description某外国销售公司需要向国内的一些大型单位打电话推销产品。这个公司的工作场景是这样推销员坐在自己电脑旁边,通过一款自动拨电话的软件与客户联系。所有需要被拨打的电话号码都事先存储在服务器上,推销员不需要每次都很麻烦的输入客户的电话号码,当

9、推销员点击软件里拨打的按钮,下一个电话将会自动拨出。现在你需要编写个程序来模拟这个自动拨电话软件的工作过程。电话号码是按照中国的习惯存储下来的,可能是从网站上抓取的,也可能是扫描的手写件。不过它们都被按照这样的格式存储下来:(城市区号)分区前缀- 分机号比如青岛的一个大型单位的某部电话是(0532)621-15486,是指如果在单位内部直接拨打15486就行,在青岛的其他地方要拨打62115486,而在北京要拨打053262115486。根据常识,先拨0就是要转外线,所以一般电话号码的各个部分都不会以0开头。你的程序可以把如上格式的电话号码翻译成一个只包含有数字的串,发送给电话机并拨出。值得注

10、意的是中国的城市区号长度并不相同,比如北京是010。再有不同城市的电话号码位数也不相同,并且不同单位根据内部电话分机数目多少,有的可能只有3位分机号码,有的可能分区前缀号会只有2位。但不管怎样中国现在还没有哪个城市的电话号码超过十位数的。中国的国际区号是0086。这里不含像114这样的特服电话。Input输入只有一行,是符合“(城市区号) 分区前缀-分机号”规律的电话号码,这里面除了英文字符“(”、“)”、“-”之外只有数字。Output输出只有一行,是带中国区号的能电话号码。注意从国外打国内的电话,城市区号前面的0是不用拨打的。比如中国青岛的国际分区号是0086532。Sample Inpu

11、t(0532)621-15486Sample Output008653262115486HINT这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。#include int main()int a,b,c;scanf(0%d)%d-%d,printf(0086%d%d%d,a,b,c);Problem C: 求1+2+.+n=?Description给定一个n,求出s = 1+2+3+.+n的值。Input输入只有一行,包含一个正整数n(nint main()unsigned long long int n,s,i;scanf(%llu,if(n%2=0)s=n/2*(n+1

12、);elses=(n+1)/2*n;printf (%llu,s);Problem D: 2的多少次幂Description从键盘输入一个数x,x是2的整数次幂(x=2 y),请编程求出y的值。Input一个非负有理数x,x在0,2 256范围内。Output一个整数y。Sample Input1Sample Output0HINT看起来数据很大,但是用double完全可以存储。为什么?请研究下IEEE-754标准的浮点数存储格式。这里要用到C语言标准库的数学函数。#include #include int main()double x,n;scanf (%lf,n=(log10(x)/(lo

13、g10(2);printf (%d,(int)n);Problem E: 三个数比较大小Description从键盘上输入0100之间的三个数,按从小到大的顺序输出。Input输入只有一行,为三个整数。Output按从小到大输出这三个数。Sample Input15 10 20Sample Output10 15 20HINT用if语句判断各种情况可以解决这个问题。#include int main()int x,y,z,a;scanf (%d %d %d,if(xy) a=x;x=y;y=a;if(xz)a=x;x=z;z=a;if(yz)a=y;y=z;z=a;printf (%d %d

14、%d,x,y,z);Problem A: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数Description输出1k之间是m的倍数或n 的倍数、但不是m 和n的公倍数的数,其中 1int main()int k,m,n,i=0,j;scanf (%d %d %d,for (j=1;jint main() int i,n,m,max,min;scanf (%d%d,min=max;for(i=1;imax)max=m;if(m#include #include string.hint main()int n;while (scanf (%d,&n)!=EOF) if (n=100)prin

15、tf (Excellentn);else if(n100)printf (Errorn);elseswitch (n/10)case 9:printf (Excellentn);break;case 8:printf (Goodn);break;case 7:printf (Averagen);break;case 6:printf (Passn);break;default :printf (Failingn);return 0;Problem D: A+B ProblemDescription计算a+b,0int main() int a,b;while(scanf(%d %d,&a,&b)!=EOF)printf(%dn,a+b);return 0;Problem E: A+B Problem (II) : Input/Output PraticeDescription计算a+b,0int main() int N,i,j;scanf(%

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

当前位置:首页 > 中学教育 > 试题/考题 > 高中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号