《实习报告模板(C基础编程实习).doc》由会员分享,可在线阅读,更多相关《实习报告模板(C基础编程实习).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C基础编程实习报告(2010 2011 学年第二学期)实习名称:认识实习(C基础编程)专 业: 计算机应用 学 号: 20107903 姓 名: 侯松颢 实习地点: 机房 实习时间: 7月12日 7月 18日 实习成绩: 指导教师(签字): 西南交通大学峨眉校区年 月 日第 15 页注:后附纸若干,内容包括实习目的和要求、实习内容、实习方式和安排、实习完成情况、实习心得与体会等。一、 实习目的和要求巩固C语言编程基础知识加强C语言综合编程能力训练熟练掌握C语言程序上机调试过程学会编写C语言程序解决简单计算题、字符串处理问题、日期和时间处理问题、高精度数处理等问题 提高外文资料阅读理解的能力。二
2、、 实习方式和安排7月12日 另见通知 第1组 实习动员 中412 张强锋、唐加胜7月13日 上午8:00-11:00 第1组 C基础编程上课 6107 杨华莉7月14日 上午8:00-11:00 第1组 C基础编程上机 校机房4楼 杨华莉、袁平、翟勇涛、江磊7月15日 上午8:00-11:00 第1组 C基础编程上机 校机房4楼 杨华莉、袁平、翟勇涛、江磊7月16日 8:00-11:00 第1组 C二级强化上课 6107 杨华莉7月17日 上午8:00-11:00 第1组 C二级强化上机 校机房4楼 杨华莉、袁平、翟勇涛、江磊7月18日 上午8:00-11:00 第1组 C二级强化上机 校机
3、房4楼 杨华莉、袁平、翟勇涛、江磊三、 实习内容(一) C基础编程(共10题,必做)*第1题 start*1 题目解析题目编号 1001问题描述 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:90100为A;8089为B;7079为C;6069为D;059为E;输入数据 输入数据有多组,每组占一行,由一个整数组成。输出要求对于每组输入数据,输出一行。如果输入数据不在0100范围内,请输出一行:“Score is error!”。输入样例5667100123输出样例EDAScore is error!解题思路本题要求成绩的转换,属于简单。使用个swith语句就行了。2 源程序/
4、* Author: HSH 计应1班 */#include stdio.hvoid main()int n; while(scanf(%d,&n)=1) if(n100|n0&n60) printf(En); else switch(n/10) case 10:case 9: printf(An); break; case 8: printf(Bn); break; case 7: printf(Cn); break; case 6: printf(Dn); break; 3 本地计算机运行结果截图4 OJ提交结果截图(截图最后一行为自己的提交结果)5 实现中常见的问题1) 分数间的划分出错;
5、2) 在每行输出末尾缺少换行符。*第1题 end*第2题 start*题目编号 1004问题描述给定两个正整数,计算这两个数的最小公倍数。输入数据 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.输出要求对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。输入样例10 14输出样例70解题思路本题关键在于求到第一个公倍数时就停止6 源程序/* Author: HSH 计应1班 */#include stdio.hvoid main()int x,y,i;while(scanf(%d%d,&x,&y)=2)for(i=x;ix*y;i+) if(i%x=0&i%y=
6、0) break; printf(%dn,i); 7 本地计算机运行结果截图8 OJ提交结果截图(截图最后一行为自己的提交结果)9 实现中常见的问题3) 找倍数的时候容易出错4) 在出现最小倍数时没停下来*第2题 end*(二) C强化编程(共10题,至少选做4题)*第1题 start*题目编号 1004问题描述I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.输入数据 The first line of the input co
7、ntains an integer T(1=T=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exc
8、eed 1000.输出要求For each test case, you should output two lines. The first line is Case #:, # means the number of the test case. The second line is the an equation A + B = Sum, Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.输入样例21
9、2112233445566778899 998877665544332211输出样例Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110解题思路本题关键在于将数用数组储存10 源程序/* Author: HSH 计应1班 */#include void main() char s11000=0,s21000=0,s31001; int a,t,b,j=0,i,h=0,s,t1=0,t2=0; scanf(%d,&t); if(t20) return ; for(i=0;it;i+
10、) scanf(%s%s,s1,s2); while(s1j+);a=j-2; j=0; while(s2j+); b=j-2; while(s10=0&s11!=0) for(t1=0;t1=a;t1+) s1t1=s1t1+1; s1a-=0; while(s20=0&s21!=0) for(t1=0;t1=10) s=s%10,j=j+1; s3h=s+48; h+; if(a!=0) a-;t1=s1a-48; else t1=0; if(b!=0) b-;t2=s2b-48; else t2=0; printf(Case %d:n,i+1); printf(%s + %s = ,s1
11、,s2); for(j=h-1,a=0;j=0;j-) printf(%c,s3j); if(i!=t-1) printf(nn); else printf(n); for(h+;h=0;h-)s3h=0; for(j=0;j=a;j+) s1i=0; for(j=0;j=b;j+) s12=0; 11 本地计算机运行结果截图12 OJ提交结果截图(截图最后一行为自己的提交结果)13 实现中常见的问题5) 输出格式容易出错6) 算法容易出错*第1题 end*第2题 start*题目编号 1004问题描述Ignatius was born in a leap year, so he want t
12、o know when he could hold his birthday party. Can you tell him?Given a positive integers Y which indicate the start year, and a positive integer N, your task is to tell the Nth leap year from year Y.Note: if year Y is a leap year, then the 1st leap year is year Y.输入数据 The input contains several test
13、 cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.Each test case contains two positive integers Y and N(1=N=10000).输出要求For each test case, you should output the Nth leap year from year Y.输入样例32005 251855 122004 10000输出样例2108190443236解题思路
14、本题关键在于判断此后的第一个闰年是多少14 源程序/* Author: HSH 计应1班 */#include stdio.hvoid main() int num,x,i,n,leap; scanf(%d,&num); for(i=0;inum;i+) scanf(%d%d,&x,&n); leap=0; while(1!=0) if(x%4=0&x%100!=0)|(x%400=0) leap+;break; else x+; if(leap=n) printf(%dn,x);continue; while(1!=0) x=x+4; if(x%4=0&x%100!=0)|(x%400=0)
15、 leap+; if(leap=n) printf(%dn,x);break; 15 本地计算机运行结果截图16 OJ提交结果截图(截图最后一行为自己的提交结果)17 实现中常见的问题7) 找到的第一个闰年出错8) 没有考虑能被4整除,不能被100整除的数*第2题 end*第3题 start*18 题目解析题目编号 1006问题描述不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.死亡骑士:我要买道具!地精商人:我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个.
16、死亡骑士:好的,给我一个血瓶.说完他掏出那张N元的大钞递给地精商人.地精商人:我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿.死亡骑士:.死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.现在死亡骑士希望你能帮他计算一下,最少他要给地精商人多少小费.输入数据 输入数据的第一行是一个整数T(1=T=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1=N=10000),N代表死亡骑士手中钞票的面值.注意:地精商店只有题中描述的三种道具输出要求对于每组测试数据,请你输
17、出死亡骑士最少要浪费多少钱给地精商人作为小费.输入样例2900250输出样例050解题思路本题关键在于如何考虑钱的分配问题19 源程序/* Author: HSH 计应1班 */#include stdio.hvoid main() int t,n,i,a,b,j,k,min,m; scanf(%d,&t); for(k=0;kt;k+) scanf(%d,&n); a=n/150; b=n/200; min=n; for(i=0;i=a;i+) for(j=0;j=b;j+) if(i=j&i=0) m=n; else m=n%(150*i+200*j); if(mmin) min=m; p
18、rintf(%dn,min); 20 本地计算机运行结果截图21 OJ提交结果截图(截图最后一行为自己的提交结果)22 实现中常见的问题9) 钱的分配问题出错*第3题 end*第4题 start*23 题目解析题目编号 1009问题描述 某天gameboy玩魔兽RPG。有一个任务是在一个富含金矿的圆形小岛上建一个基地,以最快的速度采集完这个小岛上的所有金矿。这个小岛上有n(0n1000000)个金矿,每个金矿的矿藏量是相等的。而且这个小岛的地势非常平坦,所以基地可以建在小岛的任何位置,每个金矿的采矿速度只跟矿藏到基地的路程长度有关。为了不让这个任务太无聊,游戏设计者对这个小岛施了个“魔法”,规
19、定矿工在小岛上只能正南正北正西正东走。也就是说矿工不能斜着在岛上走。这个小岛在一个二维直角坐标系中描述。你的任务就是帮gameboy找一个建造基地的位置,使矿工能以最快的速度采完所有矿。输入数据 输入数据有多组。每组数据的第一行是一个正整数n(0n1000000),表示小岛上有n个金矿。在接下来的n行中,每行有两个实数x,y,表示其中一个金矿的坐标。n=0表示输入数据结束。输出要求每一组输入数据对应一行输出,输出两个实数x,y(保留小数点后两位),也就是你找到的建造基地的位置坐标。如果坐标不唯一,可以任选一个输出。输入样例41.0 1.03.0 1.03.0 3.01.0 3.00输出样例2.
20、00 2.00解题思路本题关键在于用数组储存好两个坐标24 源程序/* Author: HSH 计应1班 */#include stdio.hdouble x1000000,y1000000;void quicksort(double a,int l,int r) int i= l,k= r; double t,key = a(i+k)/2; while(ik) for(;(ir)&(ail)&(akkey);k-); if (i=k) t=ai,ai=ak,ak=t; i+; k-; if (il) quicksort(a,l,k);void main() int n,i; while(sc
21、anf(%d,&n)&n!=0) for(i=0;in;i+) scanf(%lf%lf,&xi,&yi); quicksort(x,0,n-1); quicksort(y,0,n-1);if(n%2)printf(%.2lf %.2lfn,xn/2,yn/2);elseprintf(%.2lf %.2lfn,(xn/2+xn/2-1)/2.0,(yn/2+yn/2-1)/2.0); 25 本地计算机运行结果截图26 OJ提交结果截图(截图最后一行为自己的提交结果)27 实现中常见的问题10) 数组储存出错11) 输出格式错误*第4题 end*四、 实习完成情况C基础实习10道题目全部完成C基础强化完成了4道题目五、 实习心得与体会经过了本次实习,对C语言这种计算机语言有了更深刻的认识,理清了很多以前记忆中关于C语言一些凌乱的片段,同时在这次实习的高强度练习中,对C语言的使用变得更加熟练和灵活,也明白了为什么很多人都说这种计算机语言是需要练习才能成功的。在练习中很多本以为已经明白的东西却在打代码时变得模糊而不可见了,在翻阅书本和电脑查找后关于这些知识又豁然开朗了,从此足以看出练习的重要性。
限制150内