C++编程语言实现“三天打鱼两天晒网”的示例代码
- 格式:docx
- 大小:23.16 KB
- 文档页数:1
Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public写在最前:本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….呵呵……..有一两个….偷了下懒哦………提供原题目还有本人自己的解答的源代码。
感谢大家的。
建议…………….问题A: 趣味程序设计_狼追兔子时间限制: 1 Sec 内存限制: 128 MB提交: 341 解决: 63[提交][状态][讨论版]题目描述一只兔子躲进了n个环形分布的洞的某一个中。
狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。
以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?输入有多组测试数据,读取到文件结尾符为止。
每组测试数据输入n(2≤n≤100),即洞穴个数。
输入到文件结尾符为止。
输出兔子可能藏匿的洞。
如果不止一个,按从小到大的顺序输出。
如果不存在,输出空行。
样例输入10815样例输出2 4 7 92 4 5 7 8 9 11 12 14提示用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。
通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。
循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。
#include<stdio.h>#include<string.h>int ok[110];int main(){int n,s,i,find;while(scanf("%d",&n)!=EOF){memset(ok,0,sizeof(ok));for(i=1;i<=200;i++)if(!ok[find=(i*(i+1)/2)%n])if(find==0)ok[n]=1;elseok[find]=1;for(s=0,i=1;i<=n;i++)s+=ok[i];for(i=1,find=0;i<=n;i++)if(!ok[i]){if(find!=(n-s-1)){printf("%d ",i);find++;}elseprintf("%d",i);}printf("\n");}return 0;}问题B: 趣味程序设计_巧夺偶数时间限制: 1 Sec 内存限制: 128 MB提交: 174 解决: 73[提交][状态][讨论版]题目描述桌子上有25颗棋子。
C语言程序设计及实验指导练习及习题参考答案(8--10) 8练习参考答案1、练习8-1.如果有定义:intm,n=5,某p=&m;与m=n等价的语句是BA.m=某p;B.某p=某&n;C.m=&n;D.m=某某p;8-2.设计一个程序计算输入的两个数的和与差,要求自定义一个函数um_diff(floatop1,floatop2,float某pum,float某pdiff),其中op1和op2是输入的两个数,某pum和某pdiff是计算得出的和与差。
解答:#includeintmain(void){floatop1,op2,um,diff;voidum_diff(floatop1,floatop2,float某pum,float某pdiff);printf(“inputop1andop2:“);canf(“%f%f”,&op1,&op2);um_d iff(op1,op2,&um,&diff);printf(“%f+%f=%f;%f-%f=%f\\n”,op1,op2,um,op1,op2,diff);return0;}voidum_diff(floatop1,floatop2,float某pum,float某pdiff){某pum=op1+op2;某pdiff=op1–op2;}8-3.两个相同类型的指针变量能不能相加?为什么?解答:不能。
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在C语言中指针变量相加是非法的。
8-4.根据表8.2所示,这组数据的冒泡排序其实循环到第6遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1次循环。
请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。
解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag值为1。
1.短信计费用手机发短信,一般一条短信资费为 0.1 元,但限定每条短信的内容在 70 个字以内(包括 70个字)。
如果你所发送的一条短信超过了 70个字,则大多数手机会按照每 70 个字一条短信的限制把它分割成多条短信发送。
假设已经知道你当月所发送的每条短信的字数,试统计一下你当月短信的总资费。
#include <set>#include <map>#include <vector>#include <cstdio> #include <cstring>#include <iostream>#include <algorithm>#define ll long long#define inf 47using namespace std;int n;int main(){cin >> n;double ans = 0;for(int i = 1; i <= n; i++){int x;cin >> x;ans = ans + ((x - 1) / 70 + 1) * 0.1;}printf("%.1lf\n", ans);return 0;}2.集体照医学部口腔 3 班 n 位同学约定拍集体照, n 大于 1 且不超过 100 。
摄影师要求同学按照身高站成两排,保证第二排的人身高都要大于等于第一排的人,且第二排的人数和第一排的人数相等或者比第一排多一个人。
输入 n 位同学的身高,请问第二排中身高最矮的人的身高是多少?#include <set>#include <map>#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define ll long long#define inf 47using namespace std;int n;int a[105];int main(){while(scanf("%d", &n)){if(n == 0)return 0;for(int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + n + 1); cout << a[n / 2 + 1] << endl;}return 0;}3.1020 跳格问题有一种游戏,在纸上画有很多小方格,第一个方格为起点(S),最后一个方格为终点。
1.计算分段函数本题目要求计算下列分段函数f(x)的值:注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:输入在一行中给出实数x。
输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
输入样例1:10输出样例1:f(10.00) = 3.16输入样例2:-0.5输出样例2:f(-0.50) = -2.75(1)编程思路。
简单的if …else …结构。
(2)源程序。
#include <stdio.h>#include <math.h>int main (){double x,y;scanf("%lf",&x);if (x>=0){y=sqrt(x);}else{y=(x+1)*(x+1)+2*x+1/x;}printf("f(%.2f) = %.2f\n",x,y);return(0);}2.三天打鱼两天晒网中国有句俗语叫“三天打鱼两天晒网”。
假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?输入格式:输入在一行中给出一个不超过1000的正整数N。
输出格式:在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
输入样例1:103输出样例1:Fishing in day 103输入样例2:34输出样例2:Drying in day 34(1)编程思路。
按输入的N五天一个周期,因此分成两种情况:1)N%5等于1或2或3,打鱼;2)N%5等于4或0,嗮网。
写成简单的if…else …结构。
(2)源程序。
#include <stdio.h>int main(){int n;scanf("%d",&n);if (n%5>=1 && n%5<=3)printf("Fishing in day %d\n",n);elseprintf("Drying in day %d\n",n);return 0;}3.比较大小本题要求将输入的任意3个整数从小到大输出。
C语言实验习题7-1 输出图形(10 分)编写程序输出图形。
第一行输出12个$,第二行先输出3个空格,然后再输出hello!,第三行输出12个$输入样例:输出样例:代码:#include <stdio.h>int main(){printf("$$$$$$$$$$$$\n"" hello!\n”"$$$$$$$$$$$$\n");return 0 ;}7-5 计算华氏温度(5 分)本题要求编写程序,计算摄氏温度26°C 对应的华氏温度。
计算公式:F=9×C/5+32,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输入格式:本题目没有输入。
输出格式:按照下列格式输出代码:#include 〈stdio。
h>int main(){int f;int c;c=26;f=9*c/5+32;printf(”celsius = 26, fahr = %d”,f);return 0 ;}7-9 逆序的三位数(10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。
比如输入700,输出应该是7。
输入格式:每个测试是一个3位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:代码:#include <stdio。
h〉int main(){int n,a,b,c;scanf(”%d”,&n);a=n/100;b=n/10—a*10;c=n—a*100—b*10;int d;d=a+b*10+c*100;printf("%d",d);return 0 ;}7—10 整数四则运算(10 分)本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型范围内。
输入格式:输入在一行中给出2个正整数A和B。
输出格式:在4行中按照格式“A 运算符 B = 结果"顺序输出和、差、积、商。
实验一1、计算整数各位数字之和(2.1) (10 分)输入一个3位正整数,将其每一位的数字相加,输出和。
输入格式:输入一个3位正整数。
变量数据类型为unsigned。
输出格式:输出整数每一位相加后的整数和。
输入样例:123输出样例:6【参考答案】#include "stdio.h"int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(2.2) (10 分)求:输入格式:输入角度x。
变量数据类型为double。
π为3.14159。
输出格式:输出y的值,精确到小数点后2位。
输入样例:输出样例:#include <stdio.h>#include <math.h>#define PI 3.14159int main(){double x,y;scanf("%lf",&x);y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数(10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。
比如输入700,输出应该是7。
输入格式:每个测试是一个3位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:【参考答案】#include "stdio.h"int main(){ int a,ge,shi,bai,b; scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai; printf("%d\n",b); return 0;}{int a,b,c,d,sum;float ave;scanf("%d %d %d %d",&a,&b,&c,&d);sum=a+b+c+d;ave=sum/4.0;printf("Sum = %d; Average = %.1f\n",sum,ave); return 0;}6、日期格式化(10 分)世界上不同国家有不同的写日期的习惯。
程序设计基础(C 语言)上机考试题 第一套2003~2004学年冬学期 2004年2月注意: 1. 请先双击Windows98桌面上的“C 上机考登录”图标,进入“程序设计基础(C语言)上机考试考生登录”框,正确输入或选择你的学号、姓名、学院、教师、考场、试题套号、机号和卷类等。
登录成功,在你考盘中会形成一个文件夹,文件夹名是你的学号。
2. 座机号末位是双数,考A 卷;座机号末位是单数,考B 卷。
3. 源程序必须存入考盘上以你学号命名的文件夹中。
源程序文件名必须为:套号-卷类-题号。
如:2-B -3是第二套B 卷第3题的源程序。
4. 必须严格按题目要求的输出格式来输出。
5. 阅卷时以程序的运行结果为准。
A 卷1.从键盘输入三角形边长,编程计算三角形面积,并输出。
程序要能对不合理输入打印出提示:Input error 。
已知三角形的三边长a ,b ,c ,则该三角形的面积公式为:))()((c s b s a s s area ---= 其中:)(21c b a s ++=2.钢球从100米高处落下,着地后弹起的 最高点为初始高度的2/3,再着地后弹起的最高点仍是上次最高点的2/3,如此继续运动下去。
问第十次弹起的最高点是多少,到第十次触地为止钢球运动经过多少路程。
依次打印输出这两个结果。
3.从键盘输入一个正整数(小于1000),将它表示成1和质因子(即素数因子)的连乘积。
如:输入45,输出45=1*3*3*5。
B 卷1.从键盘输入三角形边长,鉴别出这三角形是等边三角形(输出1)、等腰三角形(输出2)、直角三角形(输出3)、还是任意三角形(输出4),或构不成三角形(输出0)。
2.编程计算分数序列:2/1,3/2,5/3,8/5,13/8,21/13 ……的前20项之和,并输出。
3.从键盘输入一个正整数(大于1000),将它表示成1和质因子(即素数因子)的连乘积。
如: 输入60306,输出60306=1*2*23*23*57。