《浙大城市学院C语言上机试题.docx》由会员分享,可在线阅读,更多相关《浙大城市学院C语言上机试题.docx(160页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:2010 -2011学年第2学期酒乎城市学院ZHEJIANG UNIVERSITY CITY COLLEGE实验报告实验课程名称C语言程序设计基础实验专业班级 土木1003学 号 31003290学生姓名王定定实验指导老师张泳实验项目目录实验1熟悉C语言编程环境实验2 用C语言编写简单程序2. 1基本数据处理2. 2计算分段函数2. 3 指定次数的循环2.4 使用函数实验3 分支结构程序设计实验4循环结构程序设计4.1基本循环语句的使用4. 2 嵌套循环实验5函数程序设计实验6控制结构综合程序设计实验7 数组7. 1排序问题7. 2找出矩阵中最大值所在的位置7. 3进制转换实验8 指针程
2、序设计7. 4指针与数组7.5指针与字符串实验9 结构程序设计实验10程序结构与递归函数实验11指针数组、指针与函数实验12文件程序设计实验项目名称 实验1熟悉C语言编程环境实验成绩 指导老师(签名)日期实验目的和要求1. 熟悉C语言编程环境Visual C+6. 0,掌握运行一个C程序的基本步骤,包 括编辑、编译、连接和运行。2. 了解C程序的基本框架,能够编写简单的C程序。3. 了解程序调试的思想,能找出并改正C程序中的语法错误。二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1 .建立自己的文件夹,略2 .编程示例,参考实验手册。3 .编程题1(10003)在
3、屏幕上显示个短句What is a computer?”。【源程序】#include int main(void)/*/printfl What is a computer?n); return 0;【实验结果与分析】【思考】如何在屏幕上显示你自己的学号、姓名和班级?【源程序】 #include int main(void)printf (,z31003290nz,);printf (王定定、n);printf (土木 1003n);return 0;【实验结果与分析】4 .编程题2(10004)在屏幕上显示如下图案。* * * * * * *【源程序】Sinclude int main(vo
4、id)printf(*n); printf(*n);printf(*n); printf (*n); return 0;【实验结果与分析】5 .调试示例(10005)改正下列程序中的错误,在屏幕上显示短句aWelcome to You! wo (源 程序 error01_l. cpp)【正确程序】#include int main(void)/*printf (Welcome to You! n);return 0;)【实验结果与分析】6 .改错题(10007)在屏幕上显示如下图案。* * * * * * *【正确程序】#include int main(void)(/*/printf (*n
5、 printf( *n);printf( *n);printf(*n);return 0;)【实验结果与分析】讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在 实验报告上。多联系,可掌握,题目简单实验项目名称 实验2 用C语言编写简单程序实验成绩 指导老师(签名) 日期 2.1 基本数据处理一.实验目的和要求1 .掌握算术表达式和赋值表达式的使用。2 .掌握基本输出函数的使用。3 .能够编程实现简单的数据处理。4 .掌握简单C程序的查错方法。二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1 .调试示例,参考实验手册。2 .编程题1(20
6、012)求华氏温度150 F对应的摄氏温度。计算公式如下:c_5,_5x32 99其中:C表示摄氏温度,f表示华氏温度。【源程序】ttinclude int main(void)(int Celsius, fahr;fahr=150;celsius=5*fahr/9-5*32/9;printf (z,fahr = %d, Celsius = %dn”, fahr, Celsius);return 0;【实验结果与分析】 如果使用公式c_5x(/-32)计算华氏温度150 F所对应的摄氏温度, 这两个公式的计算结果是否?为什么?一样3 .编程2(20013)求摄氏温度26 C对应的华氏温度。计算
7、公式如下:f =+32,其中:C表示摄氏温度,f表示华氏温度。【源程序】#include int main(void)int Celsius, fahr;Celsius = 26;fahr=9*celsius/5+32;printf Celsius = %d, fahr = %dn , Celsius, fahr);return 0;)【实验结果与分析】4 .编程题3(20014)已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分 和93分,求该生3门课程的平均分。【源程序】#include int main(void)(int math, eng, comp, average;m
8、ath = 87;eng = 72;comp = 93;average=(math+eng+comp)/3;printf(z,math = %d, eng = %d, comp = %d, average = %dn,math, eng, comp, average);return 0;)【实验结果与分析】5 .编程题4(20015)当n为!52时,分别求出n的个位数字(digiti)、十位数字(digit2) 和百位数字(digit3)的值。【源程序】#include int main(void)(int n, digiti, digit2, digit3;n=152;digitl=n%10
9、;digit2=n/10%10;digit3=n/100;printf (整数%d的个位数字是%d,十位数字是%d,百位数字是%dn”, n, digiti, digit2, digit3);return 0;)【实验结果与分析】6 .改错题(20016)改正下列程序中的错误,计算某个数x的平方y,并以“y=x*x”和 “x*x=y”的形式输出x和y的值。请不要删除源程序中的任何注释。(源程序 error02_2. cpp)【正确程序】#include int main(void) int x, y;/*/x=3;y=x*x;printf C%d =%d * %dn”, y, x, x);pr
10、intf (,z%d * %d = %dn”, x, x, y);)【实验结果与分析】三.讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在 实验报告上。实验项目名称 实验2 用C语言编写简单程序实验成绩 指导老师(签名) 日期 2. 2计算分段函数一.实验目的和要求1 .使用if语句计算分段函数。2 .正确书写关系表达式。3 .掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。4 .掌握简单的单步调试方法。.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1 .调试示例,参考实验手册。2 .编程题1(20022)输入华氏温度,输出对应
11、的摄氏温度。计算公式:c = 5*(f-32)/9, 式中:c表示摄氏温度,f表示华氏温度。输入输出示例:括号内为说明输入150(fahr=150)输出Celsius = 65【源程序】#include int main(void)(int Celsius, fahr;fahr=150;celsius=5*(fahr-32)/9;printf (,zfahr = %d, Celsius = %dn”, fahr, Celsius);return 0;)【实验结果与分析】如果华氏温度和摄氏温度都是双精度浮点型数据,如何修改程序?Sinclude int main(void)int Celsius
12、, fahr;/*/scanf (%d”, &fahr);celsius=5*(fahr-32)/9;printf (/zCelsius = %dn , Celsius);3 .编程2(20023)输入存款金额money存期year和年利率rate,根据下列公式计算 存款到期时的利息interest(税前),输出时保留2位小数。interest = money(1+rate) year - money输入输出示例:括号内为说明输入1000 3 0. 025 (money = 1000, year = 3, rate = 0. 025)输出interest = 76. 89【源程序】#inclu
13、de #include int main(void)(int money, year;double interest, rate;scanf(%d”, &year);scanf (%1f ”, &rate);interest = money*pow(1+rate), year )- money;printf interest = %. 2fn”, interest);【实验结果与分析】4 .编程题3(20024)输入个正整数repeat (0repeat= 时,f (x) = x0. 5,当 x 小于 时,f(x) = (x+1) *2 + 2x + l/xo 输入输出示例:括号内是说明输入3
14、 (repeat=3)10-0.50输出f (10. 00) = 3. 16f(-0. 50) = -2. 75f(0. 00) = 0. 00【源程序】Sinclude #include int main(void)int repeat, ri;double x, y;scanf(%d”, &repeat);for(ri = 1; ri =0)y=pow(x, 0. 5);elsey=pow(x+l), 2) + 2*x + 1/x;printf(f(%. 2f) = %. 2fn”, x, y);【实验结果与分析】5.改错题计算分段函数的值(改错题error02_4)(20025)输入个正
15、整数repeat (0repeat10)做repeat次下列运算: 输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。 当 x 不等于 10 时,y = f(x) = x,当 x 等于 10 时,y = f(x) = l/xo 输入输出示例:括号内是说明 输入(repeat=2)=0. 1210234 输出 f(10. 0) f(234. 0) = 234.0【正确程序】#include int main(void)int repeat, ri;double x, y;scanf1 %a, &repeat);for(ri = 1; ri = repeat; ri+)/*/sc
16、anf (z,%lfz,, &x);if(x!=10)y=x;elsey=l/x;printf (z/f (%. If) = %. x, y);【实验结果与分析】5.编程题4计算两个整数的和、差、积、商与余数(20026)输入2个整数num!和num2,计算并输出它们的和、差、积、商与余 数。输出两个整数的余数可以用printf(紀% %d = %dn”, numl, num2,numl%num2);输入输出示例:括号内是说明输入5 3 (numl=5, num2=3)输出5 + 3 = 85-3 = 25 * 3 = 155/3 = 15 % 3 = 2【源程序】#include int m
17、ain(void)int numl, num2;printf (zz%dscanf(%d,&num2);+ %d=%dn”,numl,num2,numl+num2)-%d=%dn”,numl,num2,numl-num2)* %d=%dn,numl,num2,numl*num2)/ %d=%dn”,numl,num2,numl/num2)printf(%dprintf(dprintf(%dprintf (,z%d% %d = %dn/, numl, num2, numl%num2);【实验结果与分析】 如果numl和num2是双精度浮点型数据,如何修改程序?题冃的要求都能达到吗?三,讨论、心得
18、将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在 实验报告上。实验项目名称 实验2用C语言编写简单程序实验成绩指导老师(签名)日期2. 3指定次数的循环一.实验目的和要求1 .熟练掌握for语句的使用2 .熟练掌握指定次数的循环程序设计3 .掌握运行到光标的调试方法二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1 .调试示例,参考实验手册。2 .编程题 1 求 m+(m+l) + (m+2)+100(20032)输入个正整数repeat (0repeat 10),做repeat次下列运算:输入个正整数m(0=m=100),计算表达式m + (m+
19、1) + (m+2) + +100的值。输入输出示例:括号内为说明输入3 (repeat=3)0(计算 0+1+2+. .+100)10(计算 10+11+12+. .+100)50(计算 50+51+52+. .+100)输出sum = 5050sum = 5005sum = 3825【源程序】#include int main(void)int i,叫 sum;int repeat, ri;scanf ferepeat);for (ri = 1; ri = repeat; ri+) scanf &m);/ */sum=0;for(i=m;i=100;i+) sum=sum+i;printf
20、(*sum = %dn”, sum);)【实验结果与分析】 输入2个正整数m和n (mWn),求7 i-m【源程序】【实验结果与分析】3.编程 2 求 l/m+1/(m+1) +1/(m+2) +l/no(20033)输入个正整数repeat (0repeat10),做repeat次下列运算: 输入2个正整数m和n (m=n)计算表达式1/m + 1/(m+1) + l/(m+2) + 1/n的值,输出时保留3位小数。输入输出示例:括号内为说明输入3(repeat=3)5 15(计算 1/5+1/6+1/7+.+1/15)10 20(计算 1/10+1/11+1/12+.+1/20)1 3(计
21、算 1+1/2+1/3)输出sum = 1. 235sum = 0. 769sum = 1. 833【源程序】include int main(void)int i, m, n;int repeat, ri;double sum;scanf(%d”, &repeat);for(ri = 1; ri = repeat; ri+)scanf (%d%d”, &m, &n);/*/sum=O;for (i=m;i=n;i+)sum=sum+l. 0/i;printf (sum = %. 3fn, sum);【实验结果与分析】令 输入2个正整数m和n (mWn),求(/+ i-m *【源程序】4.编程
22、题3求1 + 1/3 + 1/5 +的前n项和。(20034)输入个正整数repeat (0repeat 10),做repeat次列运算: 输入个正整数n,计算表达式1 + 1/3 + 1/5 + 的前n项之和,输出时保留6位小数。输入输出示例:括号内为说明输入2(repeat=2)5(计算 1+1/3+1/5+1/7+1/9)23(计算 1+1/3+1/5+. +1/45)输出sum = 1. 787302sum = 2. 549541【源程序】#include int main(void)int i, n;int repeat, ri;double sum;scanf(%d,&repeat
23、);for(ri = 1; ri = repeat; ri+) scanf (z,%d,z, &n);/*/sum=0;for(i=l;i=n;i+) sum=sum+l. 0/(2*iT);printf (z,sum = %. 6fn”, sum);【实验结果与分析】5.编程题4求11/4+1/7 1/10 +的前n项之和。(20035)输入个正整数repeat (0repeat10),做repeat次下列运算:读入个正整数n,计算1 1/4+1/7 1/10+的前n项之和,输出时保 留3位小数。输入输出示例:括号内是说明输入2 (repeat=2)310输出sum = 0. 893sum
24、= 0. 819【源程序】#include int main(void)int flag, i, n, t;int repeat, ri;double item, sum;scanf(d, ferepeat);for(ri = 1; ri = repeat; ri+)flag=l;sum=O;for(i=l;i=n;i+)item=flag*l. 0/(3*i-2);sum=sum+item;flag=flag;)printf (sum = %.3fn”, sum);)【实验结果与分析】0输入个正整数n,计算找/与的前n项之和。【源程序】【实验结果与分析】6.改错题 输出华氏摄氏温度转换表(改
25、错题error02_6)。(20036)输入个正整数repeat (0repeat10),做repeat次下列运算: 读入2个整数lower和upper,输出张华氏摄氏温度转换表,华氏温度的 取值范围是lower, upper,每次增加2F。计算公式:c = 5 * (f - 32) / 9,其中:c表示摄氏温度,f表示华氏温度。输出请使用语句 printfC%3. Of %6. lfnzz, fahr, Celsius);输入输出示例:括号内是说明输入2(repeat=2)32 35(lower=32, upper=35)40 30(lower=40, upper=30)输出fahr Cel
26、sius320.0341. 1fahr Celsius【正确程序】#include int main(void)int lower, upper;int repeat, ri;double Celsius, fahr;scanf (z,%dz,, ferepeat);for(ri = 1; ri = repeat; ri+) scanf (z/%d%dz,, & lower, &upper); printf (z,fahr celsiusn,);/*/for(fahr=lower;fahr=upper;fahr=fahr+2) celsius=5*(fahr-32)/9;printf (%3.
27、 0f%6. lfn”, fahr, Celsius);【实验结果与分析】7.编程题5 m! +n! (20037)输入个正整数repeat (0repeat10),做repeat次下列运算: 输入2个正整数m和n,计算m!+n!o输入输出示例:括号内是说明输入:2(repeat=2)1 4(m=l, n=4)3 8(m=3, n=8)输出:1! + 4! = 253! + 8! = 40326【源程序】#include stdio.hint main(void)int i, m, n;int repeat, ri;double fm, fn;scanfC/d, &repeat);for(ri
28、 = 1; ri = repeat; ri+) scanf (%d%d”, &m, &n);fm=l;for(i=l;i=m;i+)fn=l;for(i=l;i=n;i+)fn=fn*i;printf d! + %d! = %. Ofn, m, n, fm+fn);【实验结果与分析】8.编程题6求x的n次事。(20038)输入个正整数repeat (0repeat10)做repeat次下列运算: 读入1个实数x和正整数n(n =50),计算并输出x的n次嘉(保留2位小数), 不允许调用pow函数求箱。输入输出示例:括号内是说明输入2(repeat=2)1. 5 2(x=l. 5, n=2)2
29、7(x=2,n=7)输出2. 25128.00【源程序】#include int main(void)int i, n;int repeat, ri;double mypow, x;scanf(d, &repeat);for(ri = 1; ri = repeat; ri+) scanf (z,%lf%dzz, &x, &n);mypow=x;for(i=2;i=n;i+) mypow=mypow*x;printf (%. 2fn,z, mypow);【实验结果与分析】三.讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在 实验报告上。实验项目名称 实验2 用C语言编
30、写简单程序实验成绩 指导老师(签名) 日期 2. 4使用函数一.实验目的和要求1 .熟练掌握库函数的调用2 , 了解函数的定义和调用二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1.编程题1生成3的乘方表。(20041)输入个正整数n生成一张3的乘方表,输出3、3*n的值,可 调用事函数计算3的乘方。输出使用语句 printf (z,pow(3, %d) = %. Ofnz,, i, mypow);输入输出示例:括号内是说明输入3(n=3)输出pow(3,0) = 1pow(3, 1) = 3pow(3, 2) = 9pow(3, 3) = 27【源程序】incl
31、ude include int main(void)(int i, n;double mypow;scanf(%d, &n);/ */for(i=0;i=n;i+) mypow=pow (3, i);printf (*pow(3, %d) = %. Ofn*, i, mypow);【实验结果与分析】2 .编程题2生成阶乘表(20042)输入个正整数n,生成一张阶乘表,输出1!、n!的值,要求定义 和调用函数fact (n)计算n!,函数类型为double。输出使用语句 printf 用d! = %. 0fn,z, i, myfact);输入输出示例:括号内是说明输入3 (n=3)输出1! =
32、12! = 23! = 6【源程序】include int main(void)int i, n;double myfact;double fact(int n);scanf(%d, &n);/ */for(i=l;i=n;i+) myfact=fact(i);printf (*%d!=.Ofn”, i, my fact);)return 0;I * Idouble fact (int n)(int i;double product;product=l;for(i=l;i=n;i+)product=product*i;)return product;)【实验结果与分析】3 .编程3使用函数求n
33、! /(m!* (n-m) !)(20043)输入个正整数repeat (0repeat 10),做repeat次列运算:输入2个正整数m和n(m=n)计算n! /(m!* (n-m) !) 要求定义并调用函数fact(n)计算n的阶乘,其中n的类型是int,函数类型是 doubleo例:括号内是说明输入:2 (repeat=2)2 7(m=2, n=7)5 12(m=5, n=12)输出:result = 21result = 792【源程序】#include stdio. hdouble fact(int n);int main(void)int m, n;int repeat, ri;d
34、ouble s;scanfi %a , &repeat);for (ri = 1; ri = repeat; ri+) scanf (%d%d”, &m, &n);I */s=fact(n)/(fact(m)*fact(n-m); printf(result = %. Ofn, s);/*/double fact (int n)double f=l;for(i=l;i=n;i+)f=f*i;return f;)【实验结果与分析】4 .编程题4计算y = Vi而+V1M+V!爾的值。(20044)计算 100P. 5+101 0.5+10009.5 的值(保留 2 位小数),可调用sqrt函数计
35、算平方根。输入输出示例:括号内是说明输出sum = 20435. 99【源程序】ttinclude #include int main (void)Iint i;double sum;/*/sum;for(i=100;i=1000;i+)sum=sum+pow(i, 0. 5);)printf(sum = %. 2fn,sum);)【实验结果与分析】三.讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在 实验报告上。浙江大学城市学院实验报告实验项目名称 实验3分支结构程序设计实验成绩 指导老师(签名) 日期 一.实验目的和要求1 .熟练掌握关系表达式和逻辑表达式的使用
36、2 .熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计3 .熟练掌握switch语句中break语句的作用4 .掌握使用断点调试程序的方法二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1 .调试示例,参考实验手册。2 .编程题1求分段函数的值。(30002)输入个正整数repeat (0repeat!.),做repeat次下列运算: 输入个整数x,计算并输出下列分段函数sign(x)的值。C -1 x 0输入输出示例:括号内是说明输入3(repeat=3)10(x=10)0(x=0)-98(x=-98)输出sign(10) = 1 (x = 10
37、时 y = 1)sign(O) = 0 (x = 0 时 y = 0)sign(-98) = -1 (x = -98 时y = -1)【源程序】#include int main(void)int repeat, ri;int x, y;scanf (刎,&repeat);for(ri = 1; ri = repeat; ri+) scanf (渝),&x);if(x0)y=-l;else if(x=0) y=0;)else y=l;printf (z,sign(%d) = %dn,x, y);【实验结果与分析】3 .编程题2分类统计字符(30003)输入10个字符,统计其中英文字母、空格或回
38、车、数字字符和其他字 符的个数。输入输出示例:括号内是说明输入Reold 123?输出letter = 5, blank = 1, digit = 3, other = 1【源程序】ttinclude int main(void)ichar c;int blank, digit, i, letter, other;blank = digit = letter = other = 0;for(i = 1; i = &c=,a &c=,A &cZ)letter+;elseother+;printf(/zletter = %d, blank = %d, digit = %d, other = %dn
39、z,, letter, blank, digit, other);【实验结果与分析】4 .编程题3显示五级记分制成绩所对应的百分制成绩区间(使用switch) (30004)输入个正整数repeat (0repeat10)做repeat次下列运算:输入五级制成绩(A-E),输出相应的百分制成绩(0 100)区间,要求使用switch 语句。五级制成绩对应的百分制成绩区间为:A (90-100)、B (80-89)、C (70-79)、D (60-69)和E(0-59),如果输入不正确的成绩,显示Invalid input输出使用以下语句:printf (zz90-100nzz);printf(
40、80-89n);printf(70-79n);printf(60-69n);printf (zz0-59nzz);printf (zzInvalid inputnzz);输入输出示例:括号内是说明输入6ABCDEj (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)输出90-10080-8970-7960-690-59【源程序】#include int main(void)char ch:int repeat, ri;scanf(%d”, &repeat);for(ri = 1; ri = repeat; ri+)ch = getchar ();/*/switch(ch
41、) case A: printf (90T00n) ; break;case B: printf (“80-89n);break;case C ; printf C70-79n) ;break;case D : printf(“60-69n);break;case E : printf(“0一59n); break;default; printf (,zInvalid inputn) ; break;)return 0;【实验结果与分析】5 .编程题4显示水果的价格(使用switch)。(30005)查询水果的单价。有4种水果,苹果(apples)、梨(pears)、哥(oranges) 和葡萄(grapes),单价分别是3.