资源描述
C语言程序设计
实验报告手册
5. 调试示例
(10005)改正下列程序中的错误,在屏幕上显示短句“Welcome to You!”。(源程序error01_1.cpp)
【正确程序】
#include <stdio.h>
int main(void)
{
printf("Welcome to You!\n");
return 0;
【实验结果与分析】
6. 改错题
(10007) 在屏幕上显示如下图案。
* * * *
* * *
* *
*
【正确程序】
# include <stdio.h>
int main(void)
{
printf("****\n***\n**\n*\n");
return 0;
}
【实验结果与分析】
三. 讨论、心得
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
学会如何截屏,输入编程时要认真仔细。
浙江大学城市学院实验报告
实验项目名称 实验2 用C语言编写简单程序
实验成绩 指导老师(签名) 日期
2.1 基本数据处理
一. 实验目的和要求
1.掌握算术表达式和赋值表达式的使用。
2.掌握基本输出函数的使用。
3.能够编程实现简单的数据处理。
4.掌握简单C程序的查错方法。
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 调试示例,参考实验手册。
2. 编程题1
(20012)求华氏温度150°F 对应的摄氏温度。计算公式如下:,其中:c表示摄氏温度,f表示华氏温度。
【源程序】
#include <stdio.h>
int main(void)
{
int celsius, fahr;
fahr = 150;
celsius = 5* fahr/9-5*32/9;
printf("fahr = %d, celsius = %d\n", fahr, celsius);
return 0;
}
【实验结果与分析】
´ 如果使用公式 计算华氏温度150°F所对应的摄氏温度,这两个公式的计算结果是否一样?为什么?
不一样,存在误差。
3. 编程2
(20013)求摄氏温度26°C 对应的华氏温度。计算公式如下:,其中:c表示摄氏温度,f表示华氏温度。
【源程序】
#include <stdio.h>
int main(void)
{
int celsius, fahr;
celsius = 26;
fahr = 9*celsius/5+32;
printf("celsius = %d, fahr = %d\n", celsius, fahr);
return 0;
}
【实验结果与分析】
4. 编程题3
(20014)已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
【源程序】
#include <stdio.h>
int main(void)
{
int math, eng, comp, average;
math = 87;
eng = 72;
comp = 93;
average=(math+eng+comp)/3;
printf("math = %d, eng = %d, comp = %d, average = %d\n", math, eng, comp, average);
return 0;
}
【实验结果与分析】
5. 编程题4
(20015)当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
【源程序】
#include <stdio.h>
int main(void)
{
int n, digit1, digit2, digit3;
n=152;
digit1=n%10;
digit2=(n/10)%10;
digit3=n/100;
printf("整数%d的个位数字是%d, 十位数字是%d, 百位数字是%d\n", n, digit1, digit2, digit3);
return 0;
}
【实验结果与分析】
6. 改错题
(20016)改正下列程序中的错误,计算某个数x的平方y,并以“y=x*x”和“x*x=y”的形式输出x和y的值。请不要删除源程序中的任何注释。(源程序error02_2.cpp)
【正确程序】
#include <stdio.h>
int main(void)
{
int x,y;
x=3;
y=x*x;
printf("%d = %d * %d\n",y,x,x);
printf("%d * %d = %d\n",x,x,y);
return 0;
}
【实验结果与分析】
三. 讨论、心得
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
浙江大学城市学院实验报告
实验项目名称 实验2 用C语言编写简单程序
实验成绩 指导老师(签名) 日期
2.2计算分段函数
一. 实验目的和要求
1.使用if语句计算分段函数。
2.正确书写关系表达式。
3.掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。
4.掌握简单的单步调试方法。
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 调试示例,参考实验手册。
2. 编程题1
(20022)输入华氏温度,输出对应的摄氏温度。计算公式:c = 5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。
输入输出示例:括号内为说明
输入
150 (fahr=150)
输出
celsius = 65
【源程序】
#include <stdio.h>
int main(void)
{
int celsius, fahr;
scanf("%d",&fahr);
celsius=5.0*(fahr-32)/9;
printf("celsius = %d\n", 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 <stdio.h>
#include <math.h>
int main(void)
{
int money, year;
double interest, rate;
printf("Enter money:");
scanf("%d",&money);
printf("Enter year:");
scanf("%d",&year);
printf("Enter rate:");
scanf("%If",&rate);
interest=money*pow((1+rate),year);
printf("interest=%.2f\n",interest);
return 0;
}
【实验结果与分析】
4. 编程题3
(20024)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入 x,计算并输出下列分段函数 f(x) 的值(保留2位小数),请调用 sqrt 函数求平方根,调用 pow 函数求幂。
当x >= 0时,f(x) = x^0.5,当x小于0时,f(x) = (x+1)^2 + 2x + 1/x。
输入输出示例:括号内是说明
输入
3 (repeat=3)
10
-0.5
0
输出
f(10.00) = 3.16
f(-0.50) = -2.75
f(0.00) = 0.00
【源程序】
#include <stdio.h>
#include <math.h>
int main(void)
{
int repeat, ri;
double x, y;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%lf", &x);
if(x>=0) y=sqrt(x);
else y=pow((x+1),2)+2*x+1/x;
printf("f(%.2f) = %.2f\n", x, y);
}
}
【实验结果与分析】
5. 改错题 计算分段函数的值(改错题error02_4)
(20025)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入实数 x,计算并输出下列分段函数 f(x) 的值,输出时保留1位小数。
当 x 不等于10时,y = f(x) = x,当 x 等于10时,y = f(x) = 1/x。
输入输出示例:括号内是说明
输入
2 (repeat=2)
10
234
输出
f(10.0) = 0.1
f(234.0) = 234.0
【正确程序】
#include <stdio.h>
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=x;
else y=1/x;
printf("f(%.1f) = %.1f\n", x, y);
}
}
【实验结果与分析】
6. 编程题4 计算两个整数的和、差、积、商与余数
(20026)输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。
输出两个整数的余数可以用 printf("%d %% %d = %d\n", num1, num2, num1%num2);
输入输出示例:括号内是说明
输入
5 3 (num1=5,num2=3)
输出
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
5 % 3 = 2
【源程序】
#include <stdio.h>
int main(void)
{
int num1, num2;
scanf("%d%d", &num1,&num2);
printf("%d + %d = %d\n", num1, num2, num1+num2);
printf("%d - %d = %d\n", num1, num2, num1-num2);
printf("%d * %d = %d\n", num1, num2, num1*num2);
printf("%d / %d = %d\n", num1, num2, num1/num2);
printf("%d %% %d = %d\n", num1, num2, num1%num2);
return 0;
}
【实验结果与分析】
´ 如果num1和num2是双精度浮点型数据,如何修改程序?题目的要求都能达到吗?
三. 讨论、心得
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
浙江大学城市学院实验报告
实验项目名称 实验2 用C语言编写简单程序
实验成绩 指导老师(签名) 日期
2.3指定次数的循环
一. 实验目的和要求
1.熟练掌握for语句的使用
2.熟练掌握指定次数的循环程序设计
3.掌握运行到光标的调试方法
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 调试示例,参考实验手册。
2. 编程题1求m+(m+1)+(m+2)+......+100。
(20032)输入一个正整数repeat (0<repeat<10),做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 = 5050
sum = 5005
sum = 3825
【源程序】
#include <stdio.h>
int main(void)
{
int i, m, sum;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &m);
sum=0;
for(i=m;i<=100;i++)
sum=sum+i;
printf("sum = %d\n", sum);
}
}
【实验结果与分析】
´ 输入2个正整数m和n (m≤n),求
【源程序】
【实验结果与分析】
3. 编程2 求1/m+1/(m+1)+1/(m+2)+......+1/n。
(20033)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2个正整数 m 和 n(m<=n),计算表达式 1/m + 1/(m+1) + 1/(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 (计算1+1/2+1/3)
输出
sum = 1.235
sum = 0.769
sum = 1.833
【源程序】
#include <stdio.h>
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 = %.3f\n", sum);
}
}
【实验结果与分析】
´ 输入2个正整数m和n (m≤n),求
【源程序】
【实验结果与分析】
4. 编程题3 求1 + 1/3 + 1/5 + ......的前n项和。
(20034)输入一个正整数repeat (0<repeat<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.787302
sum = 2.549541
【源程序】
#include <stdio.h>
int main(void)
{
int i, n;
int denominator;
int repeat, ri;
double sum;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
sum=0;
denominator=1;
for(i=1;i<=n;i++)
{
sum=sum+1.0/denominator;
denominator=denominator+2;
}
printf("sum = %.6f\n", sum);
}
}
【实验结果与分析】
5. 编程题4求1-1/4+1/7-1/10+……的前n项之和。
(20035)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入一个正整数 n,计算1-1/4+1/7-1/10+……的前 n 项之和,输出时保留3位小数。
输入输出示例:括号内是说明
输入
2 (repeat=2)
3
10
输出
sum = 0.893
sum = 0.819
【源程序】
#include <stdio.h>
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);
sum=0;
flag=1;
t=1;
for(i=1;i<=n;i++){
item=flag*1.0/t;
sum=sum+item;
flag=-flag;
t=t+3;
}
printf("sum = %.3f\n", sum);
}
}
【实验结果与分析】
´ 输入一个正整数n,计算 的前 n 项之和。
【源程序】
【实验结果与分析】
6. 改错题 输出华氏-摄氏温度转换表(改错题error02_6)。
(20036)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入2个整数 lower 和 upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2F。
计算公式:c = 5 * (f - 32) / 9,其中:c表示摄氏温度,f表示华氏温度。
输出请使用语句 printf("%3.0f %6.1f\n", fahr, celsius);
输入输出示例:括号内是说明
输入
2 (repeat=2)
32 35 (lower=32,upper=35)
40 30 (lower=40,upper=30)
输出
fahr celsius
32 0.0
34 1.1
fahr celsius
【正确程序】
#include <stdio.h>
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 celsius\n");
for(fahr=lower;fahr<=upper; fahr++, fahr++)
{
celsius=5*(fahr-32)/9;
printf("%3.0f%6.1f\n",fahr,celsius);
}
}
}
【实验结果与分析】
7. 编程题5 m!+n!。
(20037)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数 m 和 n,计算 m!+n!。
输入输出示例:括号内是说明
输入:
2 (repeat=2)
1 4 (m=1,n=4)
3 8 (m=3,n=8)
输出:
1! + 4! = 25
3! + 8! = 40326
【源程序】
#include "stdio.h"
int main(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=fn=1;
for(i=1;i<=m;i++)
fm=fm*i;
for(i=1;i<=n;i++)
fn=fn*i;
printf("%d! + %d! = %.0f\n", m, n, fm+fn);
}
}
【实验结果与分析】
8. 编程题6 求x的n次幂。
(20038)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入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.25
128.00
【源程序】
#include <stdio.h>
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=1;
for(i=1;i<=n;i++)
mypow=mypow*x;
printf("%.2f\n", mypow);
}
}
【实验结果与分析】
三. 讨论、心得
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
浙江大学城市学院实验报告
实验项目名称 实验2 用C语言编写简单程序
实验成绩 指导老师(签名) 日期
2.4使用函数
一. 实验目的和要求
1.熟练掌握库函数的调用
2.了解函数的定义和调用
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 编程题1生成 3 的乘方表。
(20041)输入一个正整数n,生成一张3的乘方表,输出3^0 ~ 3^n的值,可调用幂函数计算3的乘方。
输出使用语句 printf("pow(3,%d) = %.0f\n", i, mypow);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
【源程序】
【实验结果与分析】
2. 编程题2生成阶乘表
(20042)输入一个正整数n,生成一张阶乘表,输出 1! ~ n! 的值,要求定义和调用函数fact(n)计算 n!,函数类型为double。
输出使用语句 printf("%d! = %.0f\n", i, myfact);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
1! = 1
2! = 2
3! = 6
【源程序】
【实验结果与分析】
3. 编程3 使用函数求 n! /(m!* (n-m)!)
(20043)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2个正整数 m 和 n(m<=n),计算 n! /(m!* (n-m)!) 。
要求定义并调用函数fact(n)计算n的阶乘, 其中 n 的类型是 int,函数类型是 double。
例:括号内是说明
输入:
2 (repeat=2)
2 7 (m=2, n=7)
5 12 (m=5, n=12)
输出:
result = 21
result = 792
【源程序】
【实验结果与分析】
4. 编程题4 计算的值。
(20044)计算 100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt函数计算平方根。
输入输出示例:括号内是说明
输出
sum = 20435.99
【源程序】
【实验结果与分析】
三. 讨论、心得
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
浙江大学城市学院实验报告
实验项目名称 实验3 分支结构程序设计
实验成绩 指导老师(签名) 日期
一. 实验目的和要求
1.熟练掌握关系表达式和逻辑表达式的使用
2.熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计
3.熟练掌握switch语句中break语句的作用
4.掌握使用断点调试程序的方法
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 调试示例,参考实验手册。
2. 编程题1求分段函数的值。
(30002)输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个整数 x,计算并输出下列分段函数 sign(x) 的值。
-1 x < 0
y = sign(x) = 0 x = 0
1 x > 0
输入输出示例:括号内是说明
输入
3 (repeat=3)
10 (x=10)
0 (x=0)
-98 (x=-98)
输出
sign(10) = 1 (x = 10时 y = 1)
sign(0) = 0 (x = 0时 y = 0)
sign(-98) = -1 (x = -98时y = -1)
【源程序】
#include <stdio.h>
int main(void)
{
int repeat, ri;
int x, y;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &x);
if(x==0) y=0;
else if(x>0) y=1;
else y=-1;
printf("sign(%d) = %d\n", x, y);
}
}
【实验结果与分析】
3. 编程题2 分类统计字符
(30003)输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入输出示例:括号内是说明
输入
Reold 123?
输出
letter = 5, blank = 1, digit = 3, other = 1
【源程序】
#include <stdio.h>
int main(void)
{
char c;
int blank, digit, i, letter, other;
blank = digit = letter = other = 0;
for(i = 1; i <= 10; i++){
c = getchar();
if(c==' ') blank ++;
else
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letter ++;
else
if(c>='0'&&c<='9')
digit ++;
else
other ++;
}
printf("letter = %d, blank = %d, digit = %d, other = %d\n", letter, blank, digit, other);
}
【实验结果与分析】
4. 编程题3 显示五级记分制成绩所对应的百分制成绩区间(使用switch)
(30004)输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。
五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalid input"。
输出使用以下语句:
printf("90-100\n");
printf("80-89\n");
printf("70-79\n");
printf("60-69\n");
printf("0-59\n");
printf("Invalid input\n");
输入输出示例:括号内是说明
输入
6ABCDEj (repeat=6,输入的五
展开阅读全文