c语言练习题.doc

上传人:豆**** 文档编号:29964270 上传时间:2022-08-02 格式:DOC 页数:68 大小:114KB
返回 下载 相关 举报
c语言练习题.doc_第1页
第1页 / 共68页
c语言练习题.doc_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《c语言练习题.doc》由会员分享,可在线阅读,更多相关《c语言练习题.doc(68页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1停车场收费问题一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。(注意输出结果小数点后保留两位)输入#include int main()double m,x;printf(输入停车时间x:);scanf(%lf,&x);if(x=24)if(x3.0)m=5.0+2.0*(x-3.0);if(m=40)printf(%lfn,m);elseprintf(输出停车费用40元

2、n);return 0;2.#includeint main()double x,m;printf(输入停车时间(x):);scanf(%lf,&x);if(x=24)if(x3)m=5.0+2.0*(x-3.0); if(m=40) printf(%6.2fn,m); else printf(停车费用40元n);2 计算细菌数量一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。 3 计算邮资计算邮资:用户输入:邮件的重量,以及是否加快计算规则:重量在1克以

3、内(包括1克), 基本费0.8元。超过1克的部分,按照0.5元/克的比例加收超重费。如果用户选择加快,多收2元。#includeusing namespace std;int main() double x,sum; char exp; while(cinxexp) if(x=1&exp=n) sum=0.8; if(x1&exp=n) sum=0.8+(x-1)*0.5; if(x1&exp=y) sum=0.8+(x-1)*0.5+2; coutsumendl; return 0;#include using namespace std; int main() int x,y; /变量定义

4、,此处假设需要定义两个变量,均定义为整型 while(cinxy) 你对一组输入的一次处理过程代码 return 0; C: #include using namespace std; int main() int x,y; /变量定义,此处假设需要定义两个变量,均定义为整型 while(scanf(%x %y,&x,&y)!=EOF) 你对一组输入的一次处理过程代码 return 0; 注意:考虑以下几点,然后直接套用模版就行了: i) 变量定义。 ii) 有几个变量需要输入,在while中cin相应的变量。 iii) 开始考虑主程序代码,在“”中写一次处理过程的代码即可。4学分绩点计算北京

5、大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。公式如下:实际成绩 绩点90100 4.08589 3.78284 3.37881 3.07577 2.77274 2.36871 2.06467 1.56063 1.060以下 01一门课程的学分绩点=该课绩点*该课学分2总评绩点=所有学科绩点之和/所有课程学分之和现要求你编写程序求出某人A的总评绩点(GPA)。#includeint main()int str110,str210,n,i;/定义两个数组分别表示每门课的学分,所得绩点 double h,GPA,sum=0,s=0;

6、/定义双精度变量h表示学分,GPA总评绩点,sum表示所有学科绩点之和,s表示所有课程学分之和。scanf(%d,&n);for(i=0;in;i+)scanf(%d,&str1i);s=s+str1i;for(i=0;in;i+)scanf(%d,&str2i);if(str2i=90)h=4.0; else if(str2i=85) h=3.7; else if(str2i=82) h=3.3; else if(str2i=78) h=3.0; else if(str2i=75) h=2.7; else if(str2i=72) h=2.3; else if(str2i=68) h=2.0

7、; else if(str2i=64) h=1.5; else if(str2i=60) h=1.0; else h=0;sum=sum+h*str1i; GPA=sum/s;printf(%.2fn,GPA);return 0;5一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物#includeint main()int a,min,max,s;scanf(%d,&s);while(s=1) scanf(%d,&a);if(a%2=1) min=0; max=0;elseif(a%4=0)min=a/4;

8、 max=a/2; elsemin=(a-2)/4+1; max=a/2;printf(%d %dn,min,max);s-;return 0;5通过指针变量访问整型变量#includeint main()int a=100,b=10; /定义整型变量a,b并初始化int*pointer_1,*pointer_2; /定义指向整型数据的指针变量pointer_1,pointer_2;pointer_1=&a; /把变量a的地址赋给指针变量pointer_1pointer_2=&b; /把变量b的地址赋给指针变量pointer_2printf(a=%d,b=%dn,a,b); /输出变量a和b的

9、值printf(*pointer_1=%d,*pointer_2=%dn,*pointer_1,*pointer_2);/输出变量a和b的值return 0;6输入a和b两个整数,按先大后小的顺序输出a和b#includeint main()int *pointer_1,*pointer_2,*pointer_3,a,b;/*pointer_1,*pointer_2的类型是指向整型的指针变量printf(please enter two integer numbers:);scanf(%d,%d,&a,&b);/输入两个整数pointer_1=&a;/使p1指向变量apointer_2=&b;

10、/使p2指向变量bif(ab) /如果abpointer_3=pointer_1;/将p1,p2的值互换pointer_1=pointer_2;pointer_2=pointer_3;printf(a=%d,b=%dn,a,b);/输出a,bprintf(max=%d,min=%dn,*pointer_1,*pointer_2);/输出p1,p2所指向变量的值return 0;7,函数嵌套调用输入3个整数,要求由大到小输出,用函数调用。#includeint main()void exchange(int *q1,int *q2,int *q3);int a,b,c,*p1,*p2,*p3;p

11、rintf(please enter three numbers:);scanf(%d,%d,%d,&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf(the older isn: );return 0;void exchange(int *q1,int *q2,int *q3)void swap(int *pt1,int *pt2);if(*q1*q2) swap(q1,q2);if(*q1*q3) swap(q1,q3);if(*q2*q3) swap(q2,q3);void swap(int *pt1,int *pt2)int te

12、mp;temp=*pt1;*pt1=*pt2;*pt2=temp;8,改写大小写,要求从键盘输入大写字母,从显示器上输出小写字母#includeint main()char c1,c2;c1=getchar();c2=c1+32;putchar(c2);putchar(n);return 0;9输入三个数,a,b,c要求按由小到大顺序输出。#includeint main() float a,b,c,t;printf(please enter three numbers :);scanf(%f,%f,%f,&a,&b,&c);if(ab形式交换位置使小的在前,若按由大到小则是ab形式a=b;b

13、=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);return10给定一个正整数k(1k10),求1到k的立方和m。即m=1+2*2*2+k*k*k。输入13#includeint main()int k,m=0,i=1;scanf(%d,&k);if(1k&k10)/这里进行修改,注意你的写法在c语言里是不成立的while(i=k)m=m+i*i*i;i+=1;printf(%d,m);elseprintf(error);return 0;用一个字符串表示一段基因,例如:“CTATGGGTTT”。两段

14、基因的相似度定义为它们所包含的最大公共子串的长度。例如:“CCTTGG”和“TGGGC”的最大公共子串为“TGG”,它的长度为3,则我们称“CCTTGG”和“TGGGC”的相似度为3。现给定两段基因,要求计算它们的相似度。111晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出OK;如果不能则输出NO#include#includevoid main() int w,c,y,m,d; /c世纪 y年 w星期 d日 m月; scanf(%d%d%d,&y,&m,&d); c=y/100; y= y - c * 100; /分离世

15、纪与年; if(m=1) m=13; if(y=00) y=99; c-; y-; if(m=2) m=14; if(y=0) y=99; c-; y-; w=y+y/4+c/4-2*c+26*(m+1)/10+d-1; / 蔡勒公式 switch(w % 7) case 1: case 3: case 5: printf(NOn);break; case 2: case 4: case 6: case 0: printf(YESn);break; 12求一个长度不大于100的字符串的长度,要求不使用strlen方法,并且使用到字符指针。原文地址:1023-求字符串长度作者:小礼子地盘求一个长

16、度不大于100的字符串的长度,要求不使用strlen方法,通过自定义的#includeint main()int length(char *p);int len;char str100;gets(str);len=length(str);printf(%dn,len);return 0;int length(char *p)int n;n=0;while(*p!=0)n+;p+;return (n);函数实现字符串长度的计算。函数定义为:int GetStrLen(char *pStr)Input一行字符串,使用(gets(str)方法读取此行字符串)。Output输出只有一行,只包含一个整数

17、,表示字符串的长度。具体程序:#include main() char a101; int sum=0,i; gets(a); for(i=0;ai!=; i+) sum+;printf(%dn,sum); 描述求前n(1n12)个整数的阶乘的和(即求1!+2!+3!+.+n!)。# include int main() int i,n,r,temp; scanf(%d,&n); r=0; temp=1; for(i=1;i=n;i+) temp=temp*i; r+=temp; printf(%dn,r); return 0; 有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/

18、13,. 求这个分数序列的前n项之和题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。#includemain() int i,x,y,a; float sum=0; x=2; y=1; for(i=1;i20;i+) sum+=(float)(x)/y; / printf(%d/%dn,x,y); a=x; x=x+y; y=a; printf(%7.5fn,sum); 12在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自

19、行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米.请判断走不同的距离去办事,是骑车快还是走路快.#includeint main()int n,i,s;double t1,t2;scanf(%d,&n);while(n=1) scanf(%d,&s);t1=s/1.2;t2=s/3.0+50;if(t1t2)printf(Biken); if(t1t2)printf(Walkn); if(t1=t2)printf(Alln);n-;return 0;#include void main() int k,j;float a1=0,t110,t210;scan

20、f(%d,&k);for(j=1;j=k;j+)scanf(%f,&a0); t1j=50+a0/3;t2j=a0/1.2;for(j=1;j=k;j+)if(t1jt2j) printf(Biken); else if(t2jt1j)printf(Walkn);else printf(Alln);13一张CT扫描的灰度图像可以用一个N*N(0N100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得

21、到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长#includeint main()int a100100,i,j,n,mj=0,zc=0;scanf(%d,&n);for(i=0;i=n-1;i=i+1) for(j=0;j=n-1;j=j+1) scanf(%d,&aij); for(i=0;i=n-1;i=i+1) for(j=0;j=n-1;j=j+1) if(aij=50) mj=mj+1;if(i=0|j=0|i=

22、n-1|j=n-1)&aij50)|(aij-150)|(ai+1j50)|(ai-1j50)&(aij=50) zc=zc+1; printf(%d %dn,mj,zc);return 0;14给定一个正整数k(1k10),求1到k的立方和m。即m=1+2*2*2+k*k*k。#includeint main()int i,k,sum=0;scanf(%d,&k);for(i=1;i=k;i+)sum=sum+i*i*i;printf(%dn,sum);return 0;求前n(1n12)个整数的阶乘的和(即求1!+2!+3!+.+n!)。输入#includeint main()int n,

23、i,t,r;r=0;t=1;scanf(%d,&n);for(i=1;i=n;i+)t=t*i;r=r+t;printf(%dn,r);return 0;15有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,. 求这个分数序列的前n项之和。#includeint main() int i,n;double sum=0,a=1,b=2,t;scanf(%d,&n);for(i=1;i=n;i+)sum=sum+b/a;t=b;b=a+b;a=t;printf(%.4lfn,sum);return 0;16一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1

24、、2、3,而6123,因此6是“完数”。编程序打印出1000之内(包括1000)所有的完数,并按如下格式输出其所有因子:#includeint main()int i,j,sum=0;for(i=1;i=1000;i+)for(j=1;j=i/2;j+)if(i%j=0)sum=sum+j;if(sum=i)printf(%d its factors are ,i);for(j=1;ji/2;j+)if(i%j=0)printf(%d,j);if(i%(i/2)=0)printf(%d,i/2);printf(n); sum=0;return 0;17将一个数组中的值按逆序重新存放。例如,原来

25、的顺序为8,6,5,4,1。要求改为1,4,5,6,8。#includeint main()int a100,i,b100,k;scanf(%d,&k);for (i=0;ik;i+)scanf(%d,&ai);for(i=0;ik;i+)bk-i-1=ai;for(i=0;ik;i+)printf(%d ,bi);printf(n);return 0;18在一个字符串中找出元音字母a,e,i,o,u出现的次数。#includeint main()int q=0,w=0,r=0,t=0,y=0,k;char s80;gets(s);for(k=0;sk!=0;k+)if(sk=a)q+;if(

26、sk=e)w+;if(sk=i)r+;if(sk=o)t+;if(sk=u)y+;printf(%d %d %d %d %dn,q,w,r,t,y);return 0;19把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。#includeint main() int i;char s80;gets(s);for(i=0;si!=0;i+)if(si=65&si=97&si=122)si=si-32;printf(%sn,s);return 0;20在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,

27、极值点的下标就是i。#includevoid main()int m,n,a100100,i,j;scanf(%d,&m);for(i=0;im;i+)scanf(%d,&n);for(j=0;jn;j+)scanf(%d,&aij);for(i=0;im;i+)for(j=0;aij!=0;j+)if(aijaij-1&aijaij-1&aijaij+1)|(aij!=aij-1&aij+1=0)|(aij!=aij+1&j=0)printf(%d ,j);printf(n);21给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。#inclu

28、devoid main() int t,i,a100016,j,row,col1000,k; for(i=0;i1000;i+) scanf(%d,&ai0); if(ai0=-1) break; for(j=1;j16;j+) scanf(%d,&aij); if(aij=0) coli=j; break; row=i; for(i=0;irow;i+) t=0; for(j=0;aij!=0;j+) for(k=0;aik!=0;k+) if(aij=2*aik) t+; printf(%dn,t); 22陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会

29、跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。#includeint main()int s10,i,h,j=0,g;for(i=0;i10;i+)scanf(%d,&si);scanf(%d,&g);for(i=0;i=si)j+;printf(%dn,j);return 0;23描述一张CT扫描的灰度图像可以用一个N*N(0N100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-25

30、5。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。#includeint main()int a100100,i,j,n,mj=0,zc=0;scanf(%d,&n);for(i=0;i=n-1;i=i+1) for(j=0;j=n-1;j=j+1) sc

31、anf(%d,&aij); for(i=0;i=n-1;i=i+1) for(j=0;j=n-1;j=j+1) if(aij=50) mj=mj+1;if(i=0|j=0|i=n-1|j=n-1)&aij50)|(aij-150)|(ai+1j50)|(ai-1j50)&(aij=50) zc=zc+1; printf(%d %dn,mj,zc);return 0;24a的立方 = b的立方 + c的立方 + d的立方为完美立方等式。例如12的立方 = 6的立方 + 8的立方 + 10的立方 。编写一个程序,对任给的正整数N (N100),寻找所有的四元组(a, b, c, d),使得a的立方

32、 = b的立方 + c的立方 + d的立方,其中a,b,c,d 大于 1, 小于等于N。#includeint main()int a,b,c,d,k;scanf(%d,&k);for(a=1;a=k;a+)for(b=2;b=k-3;b+)for(c=b+1;c=k-2;c+)for(d=c+1;dk-1;d+)if(a*a*a=b*b*b+c*c*c+d*d*d)printf(Cube = %d, Triple = (%d,%d,%d) n,a,b,c,d);printf(n);return 0;25一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关

33、的数.现求所有小于等于n(n100)的与7无关的正整数的平方和.#includeint main()int i,n,t=0;scanf(%d,&n);for(i=1;i=n;i+)if(i%7!=0&i%10!=7&(i-i%10)/10!=7)t=t+i*i;printf(%dn,t);return 0;26给定一组整数,要求利用数组把这组数保存起来,再利用指针实现对数组中的数循环移动。假定共有n个整数,则要使前面各数顺序向后移m个位置,并使最后m各数变为最前面的m各数。注意,不要用先输出后m个数,再输出前n-m个数的方法实现,也不要用两个数组的方式实现。要求只用一个数组的方式实现,一定要保

34、证在输出结果时,输出的顺序和数组中数的顺序是一致的。#includeint main()void move(int 20,int ,int );int number20,n,m,i;scanf(%d %d,&n,&m);for(i=0;in;i+)scanf(%d,&numberi);move(number,n,m);for(i=0;iarray;p-)*p=*(p-1);*array=array_end;m-;if(m0)move(array,n,m);27对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数.例如21,21%(2+1)=0,所以21是自整除数.现求出从10到n(n100)之间的所有自整除数.#includeint main()int n,i,m;scanf(%d,&n);

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com