c语言程序案例.doc_第1页
c语言程序案例.doc_第2页
c语言程序案例.doc_第3页
c语言程序案例.doc_第4页
c语言程序案例.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

上机注意: 1、请大家在VC6.0中建立工程,编写代码,编译(compile),链接(build),运行(execute program)后,输入题目中的例子输入,在输出与题目中的例子输出一致后再提交到编程网格上。 2、建立VC6.0工程(project)时,请建立Win32 Console Application。 3、下面是练习2中的两个习题讲解 /* * 练习2、习题(4-1) 计算邮资 * 习题讲解 */ #include int main() double weight; char exp; double d; /* * scanf里面的数字/字符变量(例如下面的weight),要用& * %c 是字符型变量的输入输出格式 */ /* * 如果输入之间有其他内容(例如空格,逗号等),scanf的输入格式(即双引号中的内容)要与之匹配 * 例如,本题的输入为“1 y”,之间有空格,scanf的输入格式应该写成%lf %c * 例如“练习2、习题(4-2) 点和正方形的关系”中的输入为“0.5,0.5”,之间有逗号,scanf的输入格式应该写成%lf,%lf */ scanf(%lf %c, &weight, &exp); if(weight = 1) d = 0.8; else d = (weight-1)*0.5 + 0.8; /* * if语句里的条件,如果是判断是不是相等,应该用两个等号 * 字符常量(例如下面的字符y)要用单引号 */ if(exp = y) d = d+2; /* * printf里面的变量(例如下面的d)不要用& * %lf是双精度浮点数的输入输出格式,.1 表示小数点后保留一位(保留两位用.2) */ printf(%.1lfn, d); return 0; /* * 练习2、习题(4-3) 判断一个数能否同时被3和5整除 * 习题讲解 */ #include int main() int i; scanf(%d, &i); /* * 下面i%3中的%表示取余数,余数为0,也就是i能被3整除了 * 如果if语句中有多个条件,要使用逻辑运算符(讲义 C语言编程基础(2)第63页-66页) */ if(i%3 = 0 & i%5 = 0) /* * printf双引号中内容除了像%d这样的变量输出格式,其他内容(像 contains 3 and 5)会全部输出 * 其中,%d所在的位置为变量i要输出的位置。 * 如果要求输出为“变量 15 contains 3 and 5”,那么应该写成printf(变量 %d contains 3 and 5, i) */ printf(%d contains 3 and 5n, i); else printf(%d doesnt contain 3 and 5n, i); return 0; 1.读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。输出浮点数时使用格式“%f”。关于输入共有四行: 第一行是一个字符; 第二行是一个整数; 第三行是一个单精度浮点数; 第四行是一个双精度浮点数。关于输出输出字符、整数、单精度浮点数和双精度浮点数,之间用空格分隔。#includeint main()char a;int b;float c;double d;scanf(%c,&a);scanf(%d,&b);scanf(%f,&c);scanf(%lf,&d);printf(%c,a);printf( %d,b);printf( %f,c);printf( %lf,d);return 0;2.给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。关于输入只有一个字符。关于输出该字符构成的等腰三角形,底边长5个字符,高3个字符。 例子输入*例子输出* *#includeint main()char a;scanf(%c,&a);printf( %cn,a);printf( %c,a);printf(%c,a);printf(%cn,a);printf(%c,a);printf(%c,a);printf(%c,a);printf(%c,a);printf(%cn,a);return 0;3.输入三个正整数表示三条边的长度,判断这三条边能否构成一个三角形,如果能,则输出“yes”,否则输出“no”。关于输入输入是三个正整型数,分别表示三条边的长度。关于输出yes 或者 no#includeint main()int a,b,c;scanf(%d%d%d,&a,&b,&c);if(a+bc&a+cb&b+ca)printf(yes);elseprintf(no);return 0;4. 甲流死亡率甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。关于输入输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。关于输出输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。#includeint main()int a,b;double c;scanf(%d%d,&a,&b);c=100.0*b/a;printf(%.3lf%,c);return 0;5.鸡兔同笼一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面鸡和兔子的总数a和脚的总数b,问笼子里面有多少只鸡,有多少只兔子关于输入输入仅一行,包括两个整数a和b,我们保证输入的合法性关于输出输出也是一行,输出鸡的个数和兔子的个数,中间用空格隔开#includeint main()int a,b,c,d;scanf(%d%d,&a,&b);c=2*a-b/2;d=b/2-a;printf(%d %d,c,d);return 0;6.奇数和计算正整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35 关于输入两个数 m 和 n,两个数以空格间隔,其中 m n 300 。关于输出奇数之和#includeint main()int a,b,i,m;m=0;scanf(%d%d,&a,&b);for(i=a;i=b;i+)if(i%2=1)m=m+i;printf(%d,m);return 0;7.与7无关数之和一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.现求所有小于等于n(n100)的与7无关的正整数的平方和. 关于输入输入为一行,正整数n,(n100)关于输出输出小于等于n的与7无关的正整数的平方和#includeint main()int i,n,m,n1,n2,n3;scanf(%dn,&n);m=0;for(i=1;i=n;i+)n1=i%7;n2=i/10;n3=i%10;if(n1!=0&n2!=7&n3!=7) m=m+i*i;printf(%dn,m);return 0;8.球落地一球从h米的高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第n次落地时,共经过多少米,第n次反弹多高。关于输入高度h(双精度浮点数),落地次数n(大于0整数)。关于输出输出它在第n次落地时,共经过的米数s 和第n次反弹的高度h。(精确到小数点后四位)#includeint main()double i,h,y,h2;int n;y=1;scanf(%lf,&h);scanf(%d,&n);for(i=1;i=n;i+)y=y*2;h2=h/y;y=3*h-4*h/y; printf(%.4lf %.4lf,y,h2);return 0;9.人民币面额从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。关于输入一个小于1000的正整数。关于输出输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数#includeint main()int x,a,b,c,d,e,f;scanf(%d,&x);a=x/100;b=(x-100*a)/50;c=(x-100*a-50*b)/20;d=(x-100*a-50*b-c*20)/10;e=(x-100*a-50*b-c*20-d*10)/5;f=x-100*a-50*b-c*20-d*10-5*e;printf(%dn%dn%dn%dn%dn%dn,a,b,c,d,e,f);return 0;10.最大两个数写一个程序,它读入一系列的整数,最后输出其中最大的两个数。关于输入第一行输入一个大于1且小于100的整数,表示数列的长度。 此后每行输出数列的一项。关于输出输出应有两行,第一行输出最大的数,第二行输出次大的数。#includeint main()int i,n,m,max1,max2;scanf(%dn,&n);for(i=1;imax2) max1=m; else max1=max2; if(i=3) if(m=max1) max2=max1; max1=m; else if(m=max2) max2=m; printf(%dn,max1); printf(%dn,max2); return 0;11.计算邮资计算邮资: 用户输入:邮件的重量,以及是否加快 计算规则:重量在1克以内(包括1克), 基本费0.8元。超过1克的部分,按照0.5元/克的比例加收超重费。 如果用户选择加快,多收2元。 关于输入重量 double weight 是否加快 char exp(可以取y or n)关于输出邮资(注:只需要输出数字,不需要加单位。例如1.3元,只需要输出1.3) #includeint main()double weight,m;char exp;scanf(%lf,&weight);scanf( %c,&exp);if(weight=1)m=0.8;elsem=0.3+weight*0.5;if(exp=y)m=m+2;printf(%.1lf,m);return 0;12.点是否在正方形内有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,1),(-1,-1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内。关于输入输入坐标x,y关于输出点在正方形内,输出yes;点在正方形外,输出no#includeint main()double x,y;scanf(%lf,%lf,&x,&y);if(x=-1)&(x=-1)&(y=1)printf(yes);elseprintf(no);return 0;13.判断一个数n 能否同时被3和5整除关于输入任意一个整数关于输出是否能同时被3和5整除例子输入1520例子输出15 contains 3 and 520 doesnt contain 3 and 5#includeint main()int x;scanf(%d,&x);if(x%3=0&x%5=0)printf(%d contains 3 and 5,x);elseprintf(%d doesnt contain 3 and 5,x);return 0;14. 能否被3,5,7整除输入一个整数,判断它能否被3,5,7整除,并输出以下信息: (1)能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格); (2)能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔) (3)能被其中一个数整除(输出这个除数) (4)不能被任何数整除;(输出小写字符n) 关于输入一个整数关于输出实现题目的要求#includeint main()int a3,a5,a7,x;scanf(%d,&x);a3=x%3;a5=x%5;a7=x%7;if(a3=0)&(a5=0)&(a7=0)printf(3 5 7);if(a3=0)&(a5=0)&(a7!=0)printf(3 5);if(a3=0)&(a5!=0)&(a7=0)printf(3 7);if(a3!=0)&(a5=0)&(a7=0)printf(5 7);if(a3=0)&(a5!=0)&(a7!=0)printf(3);if(a3!=0)&(a5=0)&(a7!=0)printf(5);if(a3!=0)&(a5!=0)&(a7=0)printf(7);if(a3!=0)&(a5!=0)&(a7!=0)printf(n);return 0;15.输出最大数输入三个整数,输出最大的数。关于输入输入为一行,共三个整数。关于输出输出为最大的整数。例子输入10 20 56例子输出56#includeint main()int a,b,c;scanf(%d%d%d,&a,&b,&c);if(ab)&(ac)printf(%d,a);if(ba)&(bc)printf(%d,b);if(cb)&(cb)printf(%d,c);return 0;16.计算器一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。 关于输入输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。关于输出输出只有一行,一个整数,为运算结果。然而: 1. 如果出现除数为0的情况,则输出:Divided by zero! 2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!例子输入1 2 +例子输出3#includeint main()int a,b,c;char x;scanf(%d%d,&a,&b);scanf( %c,&x);switch(x)case+:c=a+b;printf(%d,c);break;case-:c=a-b;printf(%d,c);break;case*:c=a*b;printf(%d,c);break;case/: if(b=0)printf(Divided by zero!);else c=a/b;printf(%d,c);break;default:printf(Invalid operator!);return 0;17.财务管理阿华今年毕业并找到一份工作。他挣的钱很多,但却总不够花。阿华决定看紧自己的钱包以解决他的财务问题。他要做的第一步是先弄清自己的钱的情况。阿华拿出银行结帐单想算一算他都有多少钱。请写一个程序处理过去十二个月月末帐户余额,帮助阿华计算出平均帐户余额。关于输入输入共12行,每行一个数字,代表相应月份月末帐户余额,每个数字都是正数,并且小数点后精确到分。金额数字前没有货币符号。关于输出输出是一个金额数,即这十二个月的平均帐户余额。请按四舍五入近似到分。金额前带一个美元符号($),金额后紧跟一个回车符号(n)。输出中不应包含空白符号或其他任何符号。例子输入100.00489.1212454.121234.10823.05109.205.271542.25839.1883.991295.011.75例子输出$1581.42#includeint main()float x,y,sum;sum=0;int i;for(i=1;i=12;i+)scanf(%f,&x);sum+=x;y=sum/12;printf($%.2fn,y);return 0;18.满足条件的数编写程序,读入若干个四位数(小于30),求出其中满足以下条件的数的个数: 个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。关于输入输入为两行,第一行为四位数的个数,第二行为要读入的四位数关于输出输出为一行,即满足条件的四位数的个数#includeint main()int n,m,i,x1,x2,x3,x4,p,j; j=0; scanf(%d/n,&n); for(i=1;i0) j+; printf(%d,j);return 0;19.求最大公约数#include int main()int a, b, result;scanf(%d %d, &a, &b);result = a;while(1)if(a%result = 0)&(b%result = 0)break;result-;printf(%dn, result);return 0;20.最小公倍数#include int main()int a, b, result;scanf(%d %d, &a, &b);result = a;while(1)if(result%a = 0)&(result%b = 0)break;result+;printf(%dn, result);return 0; 21.编写一个完整的 C 程序, 求一个正整数中各个数位(个位、十位、百位、 )上数字的和。 输入:一个正整数; 输出:一个整数,即输入的正整数中各个数位上数字的和。 例子输入: 123456 例子输出: 21 int main() int a, result = 0; scanf(“%d”, &a); for(int i = a; i0; i /= 10) result += i%10; printf(“%d”, result); return 0; 22. 输出一个 double 型数的小数部分. #include int main() double a; scanf(%lf, &a); a-= (int)(a) ; printf(%lfn, a); return 0; 23.接受从控制台输入的三个整数,并按照绝对值的大小进行从大 到小输出到控制台#include int main() int a, b, c, t; scanf(%d %d %d,&a,&b,&c); if(a0 ? -a : a) (b0 ? -b : b) t = a; a = b; b = t; if(a0 ? -a : a) (c0 ? -c : c) t= a; a =c; c= t; if(b0 ? -b : b) (c0 ? -c : c) t=b; b=c; c=t; printf(%d %d %dn, a, b, c); return 0; 24.判断是否为素数输入一个正整数,请判断它是不是素数。如果是输出yes,不是则输出no关于输入输入仅一行,一个正整数,范围是1到3000之间关于输出输出也仅一行,yes或者no#includeint main()int n,i,m,i2;i2=0;scanf(%d,&n);if(n=2)|(n=3) printf(yes);else for(i=2;i=n-1;i+) m=n%i; if(m=0) printf(no); break; else i2+; if(i2=n-2) printf(yes);return 0;25.阶乘和求前n(1 n 12)个整数的阶乘的和(即求1!+2!+3!+.+n!)。关于输入输入整数n关于输出输出阶乘和#includeint main()int n,i,j;int sum=0;scanf(%d,&n);for(i=1;i=n;i+)int ch=1; for(j=1;j=i;j+) ch*=j; sum+=ch;printf(%d,sum);return 0;26.药房管理随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。 对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。关于输入共3行 第一行是每天开始时的药品总量m 第二行是这一天取药的人数n(0 n = 100) 第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序),两数之间以空格分隔关于输出只有1行,为这一天没有取上药品的人数例子输入30610 5 20 6 7 8例子输出2#includeint main()int m,n,i;int j=0;int num100;scanf(%dn,&m);scanf(%dn,&n);for(i=0;in;i+) scanf(%d,&(numi); if(numi=m) m-=numi; j+; printf(%d,n-j);return 0;27. 将一个数组中的值按逆序重新存放将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。关于输入输入为两行:第一行数组中元素的个数n(1 n 100),第二行是n个整数,每两个整数之间用空格分隔。关于输出输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。#includeint main()int i,n;scanf(%dn,&n);int num101;for(i=0;i=0;i-)if(i=0)printf(%d,num0);elseprintf(%d ,numi);return 0;28. 陶陶摘苹果陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。关于输入输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。关于输出输出文件包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。#includeint main()int i,h;int h1010;for(i=0;i10;i+)if(i=9)scanf(%dn,&(h109);elsescanf(%d ,&(h10i);scanf(%d,&h);h+=30;int j=0;for(i=0;i10;i+)if(h10i=h)j+;printf(%d,j);return 0;29.绩点计算北京大学对本科生的成绩施行平均学分绩点制(GPA)。将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 曾经使用的规定如下: 实际成绩 绩点 90-100 4.0 85-893.7 82-843.3 78-813.0 75-

温馨提示

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

评论

0/150

提交评论