




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c程序设计i实验指导书c程序设计i实验指导书信息工程学院计算机系目 录c程序设计实验要求2实验一 简单程序设计21010 测试验证结果21011 温度转换21012 计算书费31013 时间相加3实验二 分支结构程序设计41020 函数值计算41021 颠倒整数51022 整数排序51023 自整除数61024 选作题:fibonacci again6实验三 循环结构程序设计71030 整数的立方和71031 求累加和71032 与7无关的数81033 选作题:细菌繁殖8实验四 数组应用91040 杨辉三角形91041 矩阵乘法101042 学生成绩管理101043 选作题:大整数乘法11实验
2、五 函数应用121050 各类型变量在函数调用过程中的变化121051 最大公约数和最小公倍数121052 进制转换131053 字符串替换131054 排序141055 选作题:数制转换14实验六 综合应用151060 同一天生日151061 忽略大小写比较字符串161062 不吉利日期171063 统计字符数171064 选作题:digital roots18附录19一、visual c+调试环境的使用19二、tc环境下的使用23三、实验报告要求27四、c程序设计常见错误及解决方案28c程序设计实验要求课程实验是c程序设计课程的一个重要的实践环节,要求每个同学按以下要求独立完成每次实验,每
3、次上机前必须编写完实验要求的所有题目,并按输出格式写出程序的运行结果,上机时调试程序并验证结果的正确性,若与运行结果不符,则要分析原因,上机时间由课内和课外上机两部分,以下时间为课内上机时间。实验一 简单程序设计目的及要求: 1.熟练掌握 c开发环境的窗口、菜单命令及相应的命令,并掌握在开发环境下如何编辑、编译、连接、运行一个c程序,以及如何保存和修改c语言的源程序。2.通过运行一个简单的c程序过程,逐步了解c程序的基本结构及特点。3.掌握c语言的基本数据类型,熟悉它们的使用方法及定义方式,了解各类型数据输出时所用的格式转换符,熟悉各种运算符和表达式的使用特点。4.熟练掌握c中赋值运算的使用。
4、1010 测试验证结果习题4.5。1011 温度转换第三题:description华氏温度和摄氏温度的转换公式为:c = 5/9 * ( f 32 )其中: f为华氏温度c摄氏温度input一个整数表示华氏温度。output输出一行。该行包含一个浮点数c,表示转换的摄氏温度。精确到小数点后两位。sample input93sample output33.89答案:#includevoid main()int f;float c;scanf(%d,&f);c=(5/9.0)*(f-32);printf(%0.2fn,c);getchar();1012 计算书费description下面是一个图书
5、的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 c+程序设计教程 78 元/本 人工智能 35 元/本 计算机体系结构 86.2 元/本 编译原理 27.8元/本 操作系统 43 元/本 计算机网络 56 元/本 java程序设计 65 元/本 给定每种图书购买的数量,编程计算应付的总费用。input输入每行包含一组10个整数(大于等于0,小于等于100),分别表示购买的计算概论、数据结构与算法、数字逻辑、c+程序设计教程、人工智能、计算机体系结构、编译原理、操作系统、计算机网络、java程序设计的数量(以本为单位)。每两个整数用一个空格分开
6、。output输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。可用printf(%.2fn, sum)来输出sum的值,并精确到小数点后两位。sample input1 5 8 10 5 1 1 2 3 4 sample output2140.201013 时间相加description用整数表示时间,如:1050表示10点50分,2010表示20点10分。现输入两个时间,求两个时间的和。例:2030 + 850 = 520 不是28801055 + 850 = 1945 不是1905input两行数据,每行一个整数。output输出相加后的时间整数。sample inp
7、ut2030850sample output520答案一:#include stdio.hvoid main()int a,b,b1,b2,a1,a2,s1,s2,sum;scanf(%d,&a);scanf(%d,&b); a1=a/100;a2=a-a1*100;b1=b/100;b2=b-b1*100;if(a2+b2=60)s2=a2+b2-60;if(a1+b1+1=24)s1=a1+b1+1-24;elses1=a1+b1+1;elses2=a2+b2;if(a1+b1=24)s1=a1+b1-24;elses1=a1+b1;sum=s1*100+s2;printf(%03dn,s
8、um);getchar();答案二:#include stdio.h#include conio.hvoid main()int a,b;scanf(%d,&a);scanf(%d,&b);int h=0;int c=a%100+b%100;int inc=0;if(c=60) c=c-60; inc=1; printf(%03d,(a/100+b/100+inc)%24)*100+c); getch();实验二 分支结构程序设计目的及要求: 1.掌握c程序设计的基本语句表达方式及基本语句结构的方法。2.掌握c语言中输入、输出函数的基本功能。3.掌握顺序和分支结构程序设计的方法。4.能独立编写
9、顺序及分支结构的c程序。1020 函数值计算第四题:description有一个函数 y = x ( x 1 )= 2x - 1 (1 = x = 10 )写一程序,输入x值,计算y值。input一个整数x。output输出函数值y。sample input20sample output49答案:#include stdio.hvoid main() int x,y;scanf(%d,&x);if(x1)y=x;else if(x=1)y=2*x-1;elsey=3*x-11;printf(%dn,y);getchar();1021 颠倒整数第五题description给定一个最多4位的正整数
10、,将其颠倒过来输出。例如:输入123,则输出321。input一个小于10000的正整数。output颠倒后整数。sample input1234sample output4321答案:#include stdio.hvoid main() int x;scanf(%d,&x);while(x0)printf(%d,x%10);x=x/10;getchar();答案二:#include stdio.h#include stdlib.hint main()int x,y;scanf(%d,&x);if(x10)y=x;else if(x100)y=(x%10)*10+x/10;else if(x
11、1000)y=(x%10)*100+(x/10)%10)*10+x/100;else if(x10000)y=(x%10)*1000+(x/10)%10)*100+(x/100)%10)*10+x/1000;printf(%d,y);return 0;1022 整数排序第六题description对给定的4个整数进行排序,将由小到大的顺序输出。input一行中有4个整数,整数之间用空格分隔。output按升序输出,各整数之间用一个空格分隔。sample input25 314 18 27sample output18 25 27 314答案:#include stdio.h#include s
12、tdlib.hint main()int i,j,a4,t;for(i=0;i4;i+)scanf(%d,&ai);t=a0;for(i=0;i3;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i0)m+=t%10;t=t/10;if(m!=0&n%m=0)printf(truen);elseprintf(falsen);getchar();答案二:#include stdio.h#include stdlib.hint main()int m=0,n,t;scanf(%d,&n);t=n;while(t0)m+=t%10;t=t/10;if(n%m
13、=0)printf(true);elseprintf(false);return 0;1024 选作题:fibonacci againproblem descriptionthere are another kind of fibonacci numbers: f(0) = 7, f(1) = 11, f(n) = f(n-1) + f(n-2) (n=2).inputinput an integer n. (n 1,000,000).outputprint the word yes if 3 divide evenly into f(n).print the word no if not.s
14、ample input5sample outputnosample input2sample outputyes答案:#include stdio.h#include stdlib.hint main()int n,a=7,b=11,c; scanf(%d,&n); if (n=0) b=7; else if (n=1) b=11; else for(int i=2;i=n;i+)c=b; b=(a+b)%3; a=c; if(b%3=0)printf(yes);elseprintf(no);return 0;答案二:#include stdio.hint fibonacci(int n);v
15、oid main()int fn,n;scanf(%d,&n);fn=fibonacci(n);if(fn%3=0)printf(yesn);elseprintf(non);getchar();int fibonacci(int n)if(n=0) return 7;else if(n=1) return 11;else return fibonacci(n-1)+fibonacci(n-2);答案三:#include stdio.h#include stdlib.hlong f(int n);int main()int n;long f=0;scanf(%d,&n);if(n=0) f=7;
16、else if(n=1) f=11;else f=f(n);if(f%3=0)printf(yes);elseprintf(no);return 0;long f(int n)int a=7,b=11; long tmp=0; for (int i=2;i =n;i+) tmp = a+b; a = b; b = tmp; return tmp;实验三 循环结构程序设计目的及要求:1.熟练掌握循环语句中for语句、while语句和do while语句使用方法。2.掌握编写循环结构程序的方法。1030 整数的立方和第二题description给定一个正整数k(1k10),求1到k的立方和m。即m
17、=1+2*2*2+k*k*k。input输入只有一行,该行包含一个正整数k。output输出只有一行,该行包含1到k的立方和。sample input5sample output225答案:#include stdio.hvoid main()int sum=0,n;scanf(%d,&n);for(int i=0;i=n;i+)sum+=i*i*i;printf(%dn,sum);getchar();1031 求累加和description有一分数序列:2 ,3 ,5 ,8 ,13 ,21 1 2 3 5 8 13求出该序列的前n项之和。input输入只有一行,该行包含一个正整数n ( n
18、200 )。output序列前n项之和(保留两位小数)。sample input2sample output3.50答案:#include stdio.hvoid main()int n;float sum=0,a=2,b=1,t;scanf(%d,&n);for(int i=0;in;i+)sum+=a/b;t=a;a=a+b;b=t;printf(%.2fn,sum);getchar();1032 与7无关的数description一个正整数,如果它能被7整除,或者它的十进制表示中某位数字为7,则称其为与7相关的数。现求所有小于等于n(n100)的与7无关的正整数的平方和.input输入为
19、一行,正整数n,(n100)。output输出小于等于n的与7无关的正整数的平方和sample input21sample output2336答案:#include void main()int n,sum=0;scanf(%d,&n);for(int i=0;i=n;i+)if(i%7!=0&!(i%10=7|(i/10)%10=7)sum+=i*i;printf(%dn,sum);getchar();1033 选作题:细菌繁殖description一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,。现在给出第一天的日期和细菌数
20、目,要你写程序求出到某一天的时候,细菌的数目。input一行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。output对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。sample input2 28 10 3 2sample output40答案:#include stdio.h#include math.h
21、int main()int m1,d1,m2,d2,num,days=0;long sum=0;int ms13=0,31,28,31,30,31,30,31,31,30,31,30,31;scanf(%d%d%d%d%d,&m1,&d1,&num,&m2,&d2);if(m2m1|(m2=m1&d2=d1)printf(第二个日期必须大于第一个日期n);elsefor(int i=m1;i=12|d1msm1|d2msm2)printf(日期不合法n); return 0; days+=msi;days=days+d2-d1;sum=num*pow(2,days);printf(%dn,su
22、m);getchar();return 1;实验四 数组应用目的及要求:1.理解并掌握一维数组、二维数组的定义及引用。2.熟练掌握利用数组处理数据的方法。3.掌握字符串数组和字符串的使用方法及常用字符串函数在程序中的使用。1040 杨辉三角形description打印出杨辉三角形的前n行。input输入一个正整数n ( n 20 )。output杨辉三角形。sample input5sample output 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1答案:#include stdio.hint main()int i,j,n,k;scanf(%d,&n);int a2020;
23、a00=a10=a11=1;for(i=2;in;i+)ai0=aii=1;for(j=1;ji;j+)aij=ai-1j-1+ai-1j;for(i=0;ii;k-)printf( );for(j=0;j=i;j+)printf(%d ,aij);printf(n);return 0;1041 矩阵乘法description已知矩阵a(mxn)和矩阵b(nxp),求c = a x b 。input第一行三个整数为m、n、p(m、n、p均小于10),从第二行开始为m行n列a矩阵,然后为n行p列的b矩阵。所有数据之间均由一个空格分隔。output输出m行p列的c矩阵,所有数据之间均由一个空格分隔
24、。sample input2 3 41 0 33 4 01 0 2 12 3 4 52 1 1 5sample output7 3 5 1611 12 22 23答案:#include stdio.hvoid main()int i,j,h,g,m,n,p,sum=0;scanf(%d%d%d,&m,&n,&p);printf(n);int a2020,b2020,c2020;/矩阵afor(i=0;im;i+)for(j=0;jn;j+)scanf(%d,&aij);printf(n);printf(n);/矩阵bfor(g=0;gn;g+)for(h=0;hp;h+)scanf(%d,&b
25、gh);printf(n);/两个矩阵相乘for(i=0;im;i+)for(j=0;jp;j+)sum=0;for(h=0;hn;h+)sum+=aih*bhj;cij=sum;/输出两个矩阵printf(%-4d,cij);printf(n);1042 学生成绩管理description学生信息包括:学号、姓名、数学成绩、英语成绩、计算机成绩。共有n个人(n=10,可在程序内部定义,如用#define n 10)的信息,要求计算每人的总成绩,并按总成绩由高到低的顺序输出所有人的信息。最后输出各门课程的平均成绩(保留2位小数)。input为调试方便,n和学生信息可以在程序内部以初值的方式赋值
26、给对应变量。output见下例。sample inputsample outputno name maths english computer total1001 zhang 90 80 88 2581003 wang 88 85 80 2531002 li 78 80 82 240average of maths:85.33average of english:81.67average of computer:83.33答案一:#include stdio.h#define n 10int main()int i,j,k,q,sum=0,scoren4=90,80,88,78,80,82,8
27、8,85,80,tscore;char title6n=no,name,maths,english,computer,total,nonn=1001,1002,1003,tno;char namenn=zhang,li,wang,tname;float avgmath=0,avgenglish=0,avgcomputer=0;for(i=0;i3;i+)sum=0;/计算总成绩for(j=0;j3;j+) sum+=scoreij;scorei3=sum;avgmath+=scorei0;avgenglish+=scorei1;avgcomputer+=scorei2;/排序for(i=0;i
28、2;i+)for(j=0;j2;j+)if(scorej3scorej+13)for(q=0;q4;q+)/交换所有成绩tscore=scorejq;scorejq=scorej+1q;scorej+1q=tscore;for(k=0;kn;k+)/交换学号tno=nojk;nojk=noj+1k;noj+1k=tno;/交换姓名tname=namejk;namejk=namej+1k;namej+1k=tname;/输出标题for(i=0;i6;i+)printf(%s ,titlei);printf(n);/输出学号+姓名+成绩for(i=0;i3;i+)printf(%s ,noi);p
29、rintf(%s ,namei);for(j=0;j4;j+)printf(%d ,scoreij);printf(n);printf(average of maths:%.2fn,avgmath/3);printf(average of english:%.2fn,avgenglish/3);printf(average of computer:%.2fn,avgcomputer/3);return 0;答案二:#include stdio.h#define n 10int main()int i,j,k,q,sum=0,scoren4,tscore;char title6n=no,name
30、,maths,english,computer,total,nonn,tno,namenn,tname;float avgmath=0,avgenglish=0,avgcomputer=0;for(i=0;i3;i+)/输入学号scanf(%s,&noi);/输入姓名scanf(%s,&namei);sum=0;/输入成绩for(j=0;j3;j+) scanf(%d,&scoreij);sum+=scoreij;scorei3=sum;avgmath+=scorei0;avgenglish+=scorei1;avgcomputer+=scorei2;/排序for(i=0;i2;i+)for(
31、j=0;j2;j+)if(scorej3scorej+13)for(q=0;q4;q+)/交换所有成绩tscore=scorejq;scorejq=scorej+1q;scorej+1q=tscore;for(k=0;kn;k+)/交换学号tno=nojk;nojk=noj+1k;noj+1k=tno;/交换姓名tname=namejk;namejk=namej+1k;namej+1k=tname;/输出标题for(i=0;i6;i+)printf(%s ,titlei);printf(n);/输出学号+姓名+成绩for(i=0;i3;i+)printf(%s ,noi);printf(%s
32、,namei);for(j=0;j4;j+)printf(%d ,scoreij);printf(n);printf(average of maths:%.2fn,avgmath/3);printf(average of english:%.2fn,avgenglish/3);printf(average of computer:%.2fn,avgcomputer/3);return 0;1043 选作题:大整数乘法description求两个不超过200位的非负整数的积。input有两行,每行是一个不超过200位的非负整数,没有多余的前导0。output一行,即相乘后的结果。结果里不能有多余
33、的前导0,即如果结果是342,那么就不能输出为0342。 sample input1234567890098765432100sample output1219326311126352690000答案:#include#includeint main()int i,j,cut=0,a200=0,b200=0,c400=0,temp;char ca200=0,cb200=0;/输入字符串类型的a,bscanf(%s%s,&ca,&cb);/转化成int类型的a,bfor(i=0;istrlen(ca);i+)ai=(int)(cai-0);for(i=0;istrlen(cb);i+)bi=(i
34、nt)(cbi-0);/a,b相乘for(i=0;istrlen(ca);i+)for(j=0;j0;i-)temp=ci;ci=ci%10;ci-1+=temp/10;/去除前导符0while(ccut=0)cut+;/输出结果for(i=cut;istrlen(ca)+strlen(cb);i+)/if(c0 != 0)printf(%d,ci);return 0;实验五 函数应用目的及要求:1.理解函数的定义及函数的调用过程(函数的调用格式、调用方式及被调用函数的使用说明)。2.掌握局部变量、全局变量的说明形式和引用方法。3.掌握函数的嵌套与递归调用的全过程。1050 各类型变量在函数调
35、用过程中的变化description采用单步运行方式运行下面程序,观察各变量(静态局部变量及自动变量)在函数调用过程中的变化。main()int a=3,i;for(i=0;ib)if(a%b=0)sum=b;elsefor(i=1;ib;i+)if(a%i=0&b%i=0)sum=i;elseif(b%a=0)sum=a;elsefor(i=1;ib)if(a%b=0)sum=a;elsefor(i=a;i=a*b;i+)if(i%a=0&i%b=0)sum=i;return i;elseif(b%a=0)sum=b;elsefor(i=b;i b)c = divisor(a,b); d=l
36、cm(a,b);else c = divisor(b,a); d=lcm(b,a);/printf(a = %d,b = %dn,a,b); printf(%d n,c); printf(%d,a*b/c);getch(); 1052 进制转换description对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3a1、80,由于3a1转换为十进制后为929,80转换为十进制后为128,所以和为1057。input输入包括两行,每行为一个十六进制数。output输出包括一行为两数之和的十进制表示。sample input3a18
37、0sample output1057答案:#include#include#includeint conversion(char six,int len)int i,sixint10,sum=0;/转化成int类型for(i=0;ilen;i+)switch(sixi)case a:case a:sixinti=10;break;case b:case b:sixinti=11;break;case c:case c:sixinti=12;break;case d:case d:sixinti=13;break;case e:case e:sixinti=14;break;case f:cas
38、e f:sixinti=15;break;default :sixinti=(int)(sixi-0);break;sum+=sixinti*pow(16,len-i-1);return sum; int main()int sum=0;char ca200=0,cb200=0;/输入字符串类型的a,bscanf(%s%s,&ca,&cb);sum=conversion(ca,strlen(ca)+conversion(cb,strlen(cb);printf(%d,sum);return 0;1053 字符串替换description将一段英文文章中字符串用给定的字符串替换。input输入包括多行,第一行为一段英文文章(长度不超过80)。以后每行包括2个字符串(长度不超过20),之间由空格分隔,第一个串为原串,第二个串为替换串。当遇到0 0两个串时表示输入结束,并且此行不需处理。output输出替换后的文章。sample inputhello how are yes.h hes ou0 0sample outputhello how are you.答案:#include#includevoid swap(char te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 把握学科知识的脉络:2024年育婴师试题及答案
- 发展社区传统手工艺的思路计划
- 高效生产团队的组建策略计划
- 幼儿园心理辅导工作计划
- 前台接待的流程与技巧总结计划
- 本地服务行业安全管理总结计划
- 人类基因组的基本结构试题及答案
- 2024年基金从业考试学习试题及答案
- 助你的2024人力资源管理师试题及答案
- 第二单元 课题3 制取氧气第2课时教学设计-2024-2025学年九年级化学人教版(2024)上册
- 医疗器械经营质量管理制度及工作程序-完整版
- (二模)温州市2025届高三第二次适应性考试英语试卷(含答案)+听力音频+听力原文
- 行政事业单位固定资产培训
- 6.1.2化学反应与电能 课件 2024-2025学年高一下学期化学人教版(2019)必修第二册
- 2025年云南省农业大学招聘工作人员历年自考难、易点模拟试卷(共500题附带答案详解)
- (二诊)成都市2022级2025届高中毕业班第二次诊断性检测语文试卷(含官方答案)
- 湖南省长沙市2024-2025学年九年级下学期入学考试英语试卷(含答案无听力原文及音频)
- 2025年国家会展中心上海有限责任公司招聘笔试参考题库含答案解析
- 2024国家电投集团中国电力招聘(22人)笔试参考题库附带答案详解
- 《餐厅案例》课件
- 2025年教育革新:利用AI技术打造个性化学习
评论
0/150
提交评论