《浙大城市学院C语言上机试题.doc》由会员分享,可在线阅读,更多相关《浙大城市学院C语言上机试题.doc(163页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:2010 -2011学年第 2 学期实 验 报 告实验课程名称 C语言程序设计基础实验 专 业 班 级 土木1003 学 生 姓 号 学 生 姓 名 王定定 实验指导老师 张泳 实验项目目录实验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 指针程序设计7.4 指针与数组7.5 指针与字符串实验9 结
2、构程序设计实验10 程序结构与递归函数实验11 指针数组、指针与函数实验12 文件程序设计浙江大学城市学院实验报告实验项目名称 实验1 熟悉C语言编程环境 实验成绩 指导老师(签名) 日期 一. 实验目的和要求1熟悉C语言编程环境Visual C+6.0,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。2了解C程序的基本框架,能够编写简单的C程序。3了解程序调试的思想,能找出并改正C程序中的语法错误。二. 实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1. 建立自己的文件夹,略2. 编程示例,参考实验手册。3. 编程题1(10003)在屏幕上显示一个短句“W
3、hat is a computer?”。【源程序】#include int main(void)/*-*/printf(What is a computer?n);return 0;【实验结果与分析】 【思考】如何在屏幕上显示你自己的学号、姓名和班级?【源程序】#include int main(void)/*-*/printf(n);printf(王定定n);printf(土木1003n);return 0;【实验结果与分析】4. 编程题2(10004)在屏幕上显示如下图案。* * * * * * *【源程序】#include int main(void)/*-*/printf(*n);pr
4、intf(*n); printf(*n);printf(*n);return 0;【实验结果与分析】5. 调试示例(10005)改正下列程序中的错误,在屏幕上显示短句“Welcome to You!”。(源程序error01_1.cpp)【正确程序】#include int main(void)/*-*/printf(Welcome to You!n);return 0;【实验结果与分析】6. 改错题(10007)在屏幕上显示如下图案。 * * * * * * * * *【正确程序】#include int main(void)/*-*/printf(*n);printf( *n); prin
5、tf( *n);printf( *n);return 0;【实验结果与分析】 讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。多联系 ,可掌握,题目简单浙江大学城市学院实验报告实验项目名称 实验2 用C语言编写简单程序 实验成绩 指导老师(签名) 日期 2.1 基本数据处理一. 实验目的和要求1掌握算术表达式和赋值表达式的使用。2掌握基本输出函数的使用。3能够编程实现简单的数据处理。4掌握简单C程序的查错方法。二. 实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1. 调试示例,参考实验手册。2. 编程题1(20012)求华氏温度
6、150F 对应的摄氏温度。计算公式如下:,其中:c表示摄氏温度,f表示华氏温度。【源程序】#include int main(void) int celsius, fahr; fahr=150; celsius=5*fahr/9-5*32/9; printf(fahr = %d, celsius = %dn, fahr, celsius); return 0;【实验结果与分析】 如果使用公式 计算华氏温度150F所对应的摄氏温度,这两个公式的计算结果是否?为什么?一样3. 编程2(20013)求摄氏温度26C 对应的华氏温度。计算公式如下:,其中:c表示摄氏温度,f表示华氏温度。【源程序】#i
7、nclude 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; math = 87; eng = 72; comp = 93; aver
8、age=(math+eng+comp)/3; printf(math = %d, eng = %d, comp = %d, average = %dn, math, eng, comp, average); return 0;【实验结果与分析】5. 编程题4(20015)当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。【源程序】#include int main(void) int n, digit1, digit2, digit3; n=152; digit1=n%10; digit2=n/10%10; digit3=n/100;
9、 printf(整数%d的个位数字是%d, 十位数字是%d, 百位数字是%dn, n, digit1, 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(%d = %d * %dn,y,x,x); printf(%d * %d = %dn,x,x,y);【实验结
10、果与分析】三. 讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。浙江大学城市学院实验报告实验项目名称 实验2 用C语言编写简单程序 实验成绩 指导老师(签名) 日期 2.2计算分段函数一. 实验目的和要求1使用if语句计算分段函数。2正确书写关系表达式。3掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。4掌握简单的单步调试方法。二. 实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1. 调试示例,参考实验手册。2. 编程题1(20022)输入华氏温度,输出对应的摄氏温度。计算公式:c = 5*(f-32)/9,式中:c表
11、示摄氏温度,f表示华氏温度。输入输出示例:括号内为说明输入150 (fahr=150)输出celsius = 65 【源程序】#include int main(void) int celsius, fahr; fahr=150; celsius=5*(fahr-32)/9; printf(fahr = %d, celsius = %dn, fahr, celsius); return 0;【实验结果与分析】如果华氏温度和摄氏温度都是双精度浮点型数据,如何修改程序?#include int main(void) int celsius, fahr;/*-*/ scanf(%d,&fahr);
12、celsius=5*(fahr-32)/9; printf(celsius = %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【源程序】#include #include int main(void) int m
13、oney, year; double interest, rate;/*-*/ scanf(%d,&money); scanf(%d,&year); scanf(%lf,&rate); interest = money*pow(1+rate),year )- money; printf(interest = %.2fn, interest);【实验结果与分析】4. 编程题3(20024)输入一个正整数repeat (0repeat= 0时,f(x) = x0.5,当x小于0时,f(x) = (x+1)2 + 2x + 1/x。输入输出示例:括号内是说明输入3(repeat=3)10-0.50输
14、出f(10.00) = 3.16f(-0.50) = -2.75f(0.00) = 0.00【源程序】#include #include int main(void) int repeat, ri; double x, y; scanf(%d, &repeat); for(ri = 1; ri =0) y=pow(x,0.5); else y=pow(x+1),2) + 2*x + 1/x; printf(f(%.2f) = %.2fn, x, y); 【实验结果与分析】5.改错题 计算分段函数的值(改错题error02_4)(20025)输入一个正整数repeat (0repeat10),做
15、repeat次下列运算:输入实数 x,计算并输出下列分段函数 f(x) 的值,输出时保留1位小数。当 x 不等于10时,y = f(x) = x,当 x 等于10时,y = f(x) = 1/x。输入输出示例:括号内是说明输入2(repeat=2)10234输出f(10.0) = 0.1f(234.0) = 234.0【正确程序】#include int main(void) int repeat, ri; double x, y; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+)/*-*/ scanf(%lf,&x); if(x!=10) y
16、=x; else y=1/x; printf(f(%.1f) = %.1fn, x, y); 【实验结果与分析】5.编程题4 计算两个整数的和、差、积、商与余数(20026)输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。输出两个整数的余数可以用 printf(%d % %d = %dn, num1, num2, num1%num2);输入输出示例:括号内是说明输入5 3 (num1=5,num2=3)输出5 + 3 = 85 - 3 = 25 * 3 = 155 / 3 = 15 % 3 = 2【源程序】#include int main(void) int nu
17、m1, num2;/*-*/ scanf(%d,&num1); scanf(%d,&num2); printf(%d + %d = %dn, num1, num2, num1+num2); printf(%d - %d = %dn, num1, num2, num1-num2); printf(%d * %d = %dn, num1, num2, num1*num2); printf(%d / %d = %dn, num1, num2, num1/num2); printf(%d % %d = %dn, num1, num2, num1%num2);【实验结果与分析】 如果num1和num2是
18、双精度浮点型数据,如何修改程序?题目的要求都能达到吗?三. 讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。浙江大学城市学院实验报告实验项目名称 实验2 用C语言编写简单程序 实验成绩 指导老师(签名) 日期 2.3指定次数的循环一. 实验目的和要求1熟练掌握for语句的使用2熟练掌握指定次数的循环程序设计3掌握运行到光标的调试方法二. 实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1. 调试示例,参考实验手册。2. 编程题1求m+(m+1)+(m+2)+.+100。(20032)输入一个正整数repeat (0repeat10
19、),做repeat次下列运算:输入一个正整数m(0=m=100),计算表达式 m + (m+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, m, sum; int repeat, ri; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%
20、d, &m);/*-*/ sum=0; for(i=m;i=100;i+) sum=sum+i; printf(sum = %dn, sum); 【实验结果与分析】 输入2个正整数m和n (mn),求【源程序】【实验结果与分析】3. 编程2 求1/m1/(m+1)1/(m+2).1/n。(20033)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数 m 和 n(m=n),计算表达式 1/m + 1/(m+1) + 1/(m+2) + . + 1/n的值,输出时保留3位小数。输入输出示例:括号内为说明输入3 (repeat=3)5 15 (计算1/5+
21、1/6+1/7+.+1/15)10 20 (计算1/10+1/11+1/12+.+1/20)1 3 (计算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=0; for(i=m;i=n;i+) sum=sum+1.0/i; printf(sum = %.3fn
22、, sum); 【实验结果与分析】 输入2个正整数m和n (mn),求【源程序】【实验结果与分析】4. 编程题3 求1 + 1/3 + 1/5 + .的前n项和。(20034)输入一个正整数repeat (0repeat10),做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.sum = 2.【源程序】#include int main(void) int
23、 i, n; int repeat, ri; double sum; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n);/*-*/ sum=0; for(i=1;i=n;i+) sum=sum+1.0/(2*i-1); printf(sum = %.6fn, sum); 【实验结果与分析】5. 编程题4求11/41/71/10的前n项之和。(20035)输入一个正整数repeat (0repeat10),做repeat次下列运算:读入一个正整数 n,计算11/41/71/10的前 n 项之和,输出时保留3位小数。输入
24、输出示例:括号内是说明输入2 (repeat=2)310输出sum = 0.893sum = 0.819【源程序】#include int main(void) int flag, i, n, t; int repeat, ri; double item, sum; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d, &n);/*-*/ flag=1; sum=0; for(i=1;i=n;i+) item=flag*1.0/(3*i-2); sum=sum+item; flag=-flag; printf(sum = %.3
25、fn, sum); 【实验结果与分析】 输入一个正整数n,计算 的前 n 项之和。【源程序】【实验结果与分析】6. 改错题 输出华氏-摄氏温度转换表(改错题error02_6)。(20036)输入一个正整数repeat (0repeat10),做repeat次下列运算:读入2个整数 lower 和 upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是lower, upper,每次增加2F。计算公式:c = 5 * (f - 32) / 9,其中:c表示摄氏温度,f表示华氏温度。输出请使用语句 printf(%3.0f %6.1fn, fahr, celsius);输入输出示例:括号内是
26、说明输入2 (repeat=2)32 35 (lower=32,upper=35)40 30 (lower=40,upper=30)输出fahr celsius 32 0.0 34 1.1fahr celsius【正确程序】#include int main(void) int lower, upper; int repeat, ri; double celsius, fahr; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d%d, &lower, &upper); printf(fahr celsiusn);/*-*/ f
27、or(fahr=lower;fahr=upper;fahr=fahr+2) celsius=5*(fahr-32)/9; printf(%3.0f%6.1fn,fahr,celsius); 【实验结果与分析】7. 编程题5 m!+n!。(20037)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2 个正整数 m 和 n,计算 m!n!。输入输出示例:括号内是说明输入:2 (repeat=2)1 4 (m=1,n=4)3 8 (m=3,n=8)输出:1! + 4! = 253! + 8! = 40326【源程序】#include stdio.hint main
28、(void) int i, m, n; int repeat, ri; double fm, fn; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d%d, &m, &n);/*-*/ fm=1; for(i=1;i=m;i+) fm=fm*i; fn=1; for(i=1;i=n;i+) fn=fn*i; printf(%d! + %d! = %.0fn, m, n, fm+fn); 【实验结果与分析】8. 编程题6 求x的n次幂。(20038)输入一个正整数repeat (0repeat10),做repeat次下列运算:读
29、入1 个实数x和正整数 n(n=50),计算并输出 x 的 n 次幂(保留2位小数),不允许调用pow函数求幂。输入输出示例:括号内是说明输入2 (repeat=2)1.5 2 (x=1.5,n=2)2 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(%lf%d, &x, &n);/*-*/ mypow=x; for(i=2;i=n;i+) m
30、ypow=mypow*x; printf(%.2fn,mypow); 【实验结果与分析】三. 讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。浙江大学城市学院实验报告实验项目名称 实验2 用C语言编写简单程序 实验成绩 指导老师(签名) 日期 2.4使用函数一. 实验目的和要求1熟练掌握库函数的调用2了解函数的定义和调用二. 实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。1. 编程题1生成 3 的乘方表。(20041)输入一个正整数n,生成一张3的乘方表,输出30 3n的值,可调用幂函数计算3的乘方。输出使用语句 printf(
31、pow(3,%d) = %.0fn, i, mypow);输入输出示例:括号内是说明输入3(n=3)输出pow(3,0) = 1pow(3,1) = 3pow(3,2) = 9pow(3,3) = 27【源程序】#include #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) = %.0fn, i, mypow); 【实验结果与分析】2. 编程题2生成阶乘表(20042)输入一个正整数n,生成一张阶乘表,输出
32、1! n! 的值,要求定义和调用函数fact(n)计算 n!,函数类型为double。输出使用语句 printf(%d! = %.0fn, i, myfact);输入输出示例:括号内是说明输入3(n=3)输出1! = 12! = 23! = 6【源程序】#include int main(void) int i, n; double myfact; double fact(int n); scanf(%d, &n);/*-*/ for(i=1;i=n;i+) myfact=fact(i); printf(%d! = %.0fn, i, myfact); return 0;/*-*/ doubl
33、e fact(int n) int i; double product; product=1; for(i=1;i=n;i+) product=product*i; return product;【实验结果与分析】3. 编程3 使用函数求 n! /(m!* (n-m)!)(20043)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入2个正整数 m 和 n(m=n),计算 n! /(m!* (n-m)!) 。要求定义并调用函数fact(n)计算n的阶乘, 其中 n 的类型是 int,函数类型是 double。例:括号内是说明输入:2 (repeat=2)2 7
34、(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; double s; scanf(%d, &repeat); for(ri = 1; ri = repeat; ri+) scanf(%d%d, &m, &n);/*-*/ s=fact(n)/(fact(m)*fact(n-m); printf(result = %.0fn, s); /*-*/double fact (int n)
35、int i;double f=1;for(i=1;i=n;i+)f=f*i;return f;【实验结果与分析】4. 编程题4 计算的值。(20044)计算 1000.51010.510000.5的值(保留2位小数),可调用sqrt函数计算平方根。输入输出示例:括号内是说明输出sum = 20435.99【源程序】#include #include int main(void) int i; double sum;/*-*/ sum=0; for(i=100;i=1000;i+) sum=sum+pow(i,0.5); printf(sum = %.2fn, sum);【实验结果与分析】三. 讨论、心得将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。浙江大学城市学院实验报告实验项目名称 实验3 分支结构程序设计 实验成绩 指导老师(签名)