《C语言程序设计》实验指导文档格式.docx

上传人:b****6 文档编号:16188041 上传时间:2022-11-21 格式:DOCX 页数:71 大小:453.58KB
下载 相关 举报
《C语言程序设计》实验指导文档格式.docx_第1页
第1页 / 共71页
《C语言程序设计》实验指导文档格式.docx_第2页
第2页 / 共71页
《C语言程序设计》实验指导文档格式.docx_第3页
第3页 / 共71页
《C语言程序设计》实验指导文档格式.docx_第4页
第4页 / 共71页
《C语言程序设计》实验指导文档格式.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》实验指导文档格式.docx

《《C语言程序设计》实验指导文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》实验指导文档格式.docx(71页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》实验指导文档格式.docx

char型占%d个字节;

sizeof(char));

//1

int型占%d个字节;

sizeof(int));

//2

longint型占%d个字节;

sizeof(long));

//3

printf("

float型占%d个字节;

sizeof(float));

//4

double型占%d个字节;

sizeof(double));

//5

-----------------------------\n"

);

printf("

变量a的值的类型占%d个字节;

\n"

sizeof(a));

//6

表达式(float)a的值的类型占%d个字节;

sizeof((float)a));

//7

表达式2.0*a的值的类型占%d个字节;

sizeof(2.0*a));

//8

表达式a+'

a'

-2.0的值的类型占%d个字节;

sizeof(a+'

-2.0));

//9

字符串Hello!

占%d个字节;

sizeof("

Hello!

"

));

//10

}

2、程序改错并调试:

下列程序的功能为:

输入一个华氏温度,要求输出摄氏温度。

公式为:

C=

,输出取2位小数。

程序中有5处错误,请修改并调试程序,使其实现所要求的功能。

(编译连接无误后单步执行)

{

floatc,f;

请输入一个华氏温度:

scanf("

%f"

,f);

//3

c==(5/9)*(f-32);

摄氏温度为:

%5.2f\n"

c);

//5

3、编程:

⑴由键盘输入一个圆柱体的底面半径r和高度h的值,编程计算并输出该圆柱体的体积。

(注意:

体积=底面积*高,要求将圆周率定义为符号常量PI)

⑵由键盘输入两个整型变量a和b的值。

编程计算并输出a与b的和、差、积、商、a除以b的余数、ab的值。

输入输出参考示例如下:

(提示:

用到C语言的运算符+、-、*、/、%、函数pow()(参见附录CP385))

请输入a,b的值:

a=3,b=2

a+b=5

a-b=1

a*b=6

a/b=1

a%b=1

a^b=9

⑶求一元二次方程ax2+bx+c=0的实根x1,x2,。

a,b,c的值由键盘输入,设b2-4ac>

0。

输入输出示例如下:

请输入三个系数a,b,c的值:

(提示:

用到C语言的库函数sqrt()(参见附录CP385))

a=1,b=3,c=2

x1=-1.00

x2=-2.00

⑷编写一个程序,从键盘输入一个大写字母,输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。

⑸(选做)编写程序,从键盘输入两个数字字符并分别存放在字符型变量a和b中,要求通过程序将与这两个字符对应的数字相加后输出,例如,输入字符型数字7和5,输出的则是整型数12。

通过“数字字符-‘0’得到对应数字”)。

⑹(选做)编写程序,要求从键盘输入一个3位整数,然后将它们逆序输出。

(比如:

输入123,输出321。

提示:

关键是想办法分别提取百位、十位和个位上的数字!

三、实验小结

在上机过程中主要遇到哪些问题?

分别是如何解决的?

实验3、选择结构程序设计

1、熟悉关系表达式、逻辑表达式的书写和求值;

2、掌握if语句的三种基本形式、switch语句的结构及其应用;

3、能综合运用if语句与switch语句实现多分支选择;

4、熟悉并掌握程序的“单步执行”、“断点设置及跟踪”等调试方法。

上机的结果及出错原因说明:

分析的结果:

1、逻辑表达式验算:

设已有定义inta=3,b=4,c=5;

先自行计算下面各逻辑表达式的值,然后编写程序上机验证你分析的结果是否正确。

⑴a+b>

c&

&

b==c

⑵!

(a>

b)&

!

c||1

⑶!

(x=a)&

(y=b)&

⑷!

(a+b)+c-1&

b+c/2

⑸(a=b+c,b>

c-1)&

(b+=c)||(b*2==a+c)

⑹('

c'

-'

a'

)/2+b>

c!

=b-a;

2、程序填空:

以下程序的功能为:

从键盘输入依次输入操作数、运算符、操作数,如果运算符是+、-、*、/之一,则进行相应的四则运算,否则输出运算符有误。

在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能。

{inta,b,c;

【1】

【2】

【3】

charop;

Pleaseinputaexpression:

scanf("

%d%c%d"

【1】);

switch(op)

{case'

+'

:

c=a+b;

printf("

%d+%d=%d\n"

a,b,c);

break;

case'

c=a-b;

%d-%d=%d\n"

*'

c=a*b;

%d*%d=%d\n"

/'

if(【2】)

printf("

Divisoriszero\n"

else

%d/%d=%f\n"

a,b,(【3】)a/b);

/*强制类型转换*/

default:

输入的运算符有误!

3、程序改错调试(请纠正程序中存在错误,使程序实现其功能)

⑴下列程序的功能为:

输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:

输入d,则输出cde;

输入a,则输出zab;

输入P,则输出OPQ;

输入Z,则输出YZA。

{charch,c1,c2;

Enteracharacter:

ch=getchar();

if((ch>

='

)||(ch<

z'

))

ch-=32;

c1=ch-1;

c2=ch+1;

if(ch='

A'

)c1=ch+25;

elseif(ch='

Z'

)c2=ch-25;

putchar(c1);

putchar(ch);

putchar(c2);

putchar('

\n'

⑵下列程序的功能为:

输入1-4月份号,输出该月份对应的英语表示法。

例如,输入“3”,则输出“March”。

#include"

stdio.h"

{charm;

printf(“inputthemonthnumber:

\n”);

scanf(“%c”,&

m);

switch(m)

{

case1:

printf("

Jan"

case2:

Feb"

case3:

Mar"

case4:

Apr"

4、编程:

⑴根据上网时间t计算并输出上网费用cost,计算公式:

同时为了鼓励多上网,每月收费最多不超过300元。

⑵判断用户从键盘输入的任意一个字符是数字字符、字母字符还是其他字符,要求有必要的输入提示和输出信息;

如果输入的是英文字母,再利用switch语句判断该字母是否是元音字母,并以“yes”或“no”字样输出判断结果。

⑶编程实现:

任意输入一个百分制成绩,输出成绩等级A、B、C、D。

当输入的分数小于0分或大于100分时,显示出错信息;

在85~100分时为A,70~84分为B,55~69分为C,55分以下为D。

(要求:

综合应用if和switch结构实现,参考教材P102例题4.6)

⑷(选做)编程实现:

对任意输入的一个日期(年year、月month、日day),计算并输出该年该月该日是这一年的第几天。

本题要综合应用到if、switch结构)

对选择结构掌握的情况如何?

主要存在什么问题?

实验4、循环结构程序设计⑴

1、熟悉for、while、do…while三种循环语句的结构和执行流程,体会三种循环语句的异同,能够根据实际问题选用适合的循环语句。

2、掌握用循环的方法实现常见实际问题。

3、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。

1、程序调试改错:

(请纠正程序中存在的错误,使程序实现其功能)

⑴下面程序的功能是:

输入10名学生某门课程的成绩,计算平均分,并求出其中的最高分和最低分。

出错行号及正确代码:

#include<

main()//1

{inti;

floatscore,max,min,sum,ave;

Pleaseenterscoreofstudent:

scanf("

&

score);

max=min=sum=0;

for(i=1;

i<

=10;

i++)//7

{scanf("

//8

sum+=score;

//9

if(max>

score)//10

max=score;

//11

elseif(min<

score)//12

min=score;

//13

ave=sum/10;

//14

Average=%6.2f\nMax=%6.2f\nMin=%6.2f\n"

ave,max,min);

//15

⑵下面程序的功能为:

逆序输出26个大写英文字母。

{charx;

x='

;

while(x='

)//4

{printf("

%3d"

x);

x++;

}

2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)

用辗转相除法求两个正整数的最大公约数。

“辗转相除法”求两个正整数的最大公约数的算法提示如下:

①将两数中大的那个数放在m中,小的放在n中。

②求出m被n除后的余数r。

③若余数为0则执行步骤⑦;

否则执行步骤④。

④把除数作为新的被除数;

把余数作为新的除数。

⑤求出新的余数r。

⑥重复步骤③到⑤。

⑦输出n,n即为最大公约数。

#include<

main()

{

intr,m,n,【1】;

scanf("

%d%d"

m,&

n);

if(m<

n)

【2】

r=m%n;

while(r)

{m=n;

n=r;

r=【3】;

printf("

%d\n"

n);

计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个)。

{intday,x1,x2;

day=0;

x1=1020;

while(【4】)

{x2=【5】;

x1=x2;

day++;

day=%d\n"

day);

⑴输入一个实数x和一个正整数n,输出xn。

要求分别用for、while、do…while语句来实现。

⑵编程求1到n中能被3或7整除的数之和,n的值由键盘输入。

请分别用for循环语句和while循环语句完成

用for循环用while循环

⑶任意输入一串字符(敲回车键结束输入)。

分别统计出其中英文字母、数字字符、其它字符的个数。

⑷(选做)编写程序:

从键盘输入x,利用幂级数展开计算sinx的近似值,要求误差小于10-6。

⑸(选做)编写程序:

任意输入一串字符(敲回车键结束输入),将其中所有的大写字母均转换为小写,然后将所有字母均用其前面的第3个字母替换,其他字符不变,输出转换后的字符串。

例如:

如果输入AsiaGame2010,输出xpfxdxjb2010.

本次实验完成的情况如何。

对三种循环语句掌握的情况如何,目前主要存在哪些问题?

实验5、循环结构程序设计⑵

1、掌握break、continue语句的作用、区别及使用方法;

2、掌握循环结构的嵌套(至少两层);

3、掌握用循环的方法实现一些常用算法;

4、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。

1、程序改错调试:

以下程序的功能是用人机对话的形式进行加、减、乘、除运算。

用户每输入一次运算数和运算符,系统输出相应的计算结果,例如,当用户输入3+5后,系统输出3+5=8.00,进行除法运算时要判断分母是否为0;

只有当输入的运算符为“#”时才结束整个程序的运行。

程序中两行存在错误,调试以实现要求的功能。

conio.h>

{inti=1,flag=0;

//2//i代表题号,flag作为标志变量进行分类

floata,b,result;

//3//a、b分别为参加运算的两个数,result为运算结果

charsym;

//4//sym为运算符

请输入操作数1运算符操作数2:

while(sym!

#'

)//6

{flag=0;

//7

第(%d)题:

i);

%f%c%f"

a,&

sym,&

b);

switch(sym)//10

{case'

result=a+b;

break;

case'

result=a-b;

//12

result=a*b;

if(b==0)//15

flag=1;

//16

else//17

result=a/b;

//18

continue;

//19

flag=3;

//20

flag=2;

//21

}

if(flag==0)//22

{printf("

%0.1f%c%0.1f=%0.2f\n\n"

a,sym,b,result);

//23

i++;

//24

}

if(flag==1)printf("

除数为零!

请重新输入!

\n\n"

//25

if(flag==2)printf("

运算符错误!

//26

if(flag==3)printf("

结束!

//27

对任意输入的一个整数,输出它的位数以及各位数字之和,例如,若输入123,则输出“123的位数为3,各位数字之和为6”。

{inta,n,len=0,sum=0,num;

/*n代表整数a的每一位数字,len代表a的位数*/

请输入一个整数a="

%d"

a);

【1】;

while(a>

0)

{n=【2】;

/*求整数的个位、百位、...位的数字*/

sum+=n;

【3】;

len++;

整数%d共有%d位,"

num,len);

其各位数字之和为%d\n\n"

sum);

⑵以下程序的功能是:

给出年、月、日,计算出该日是该年的第几天。

请填空完善程序。

{intyear,month,day,days,i,d;

请输入年,月,日:

%d,%d,%d"

year,&

month,&

day);

days=0;

for(i=1;

month;

i++)

{switch(【4】)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

d=31;

【5】;

case4:

case6:

case9:

case11:

d=30;

【6】;

case2:

if(year%4==0&

year%100!

=0||year%400==0)d=29;

elsed=28;

days+=d;

%d年%d月%d日是该年的第%d天。

year,month,day,【7】);

⑴编程输出如下图所示的下三角形乘法九九表。

⑵中国古代数学家张丘建提出的“百鸡问题”:

一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。

现在有100个钱,要买100只鸡,是否可以?

若可以,给出一个解,要求三种鸡都有。

请写出求解该问题的程序。

⑶编程输出如下图形(要求以第30列为对称轴)。

⑷统计100之内素数的个数(2是最小的素数),并将这些素数按每行10个输出。

4、选做题

⑴程序改错调试:

找出1000以内的所有完数(一个数等于它的所有因子之和,这个数就称为“完数”,例如28的因子1+2+4+7+14=28,则28即为一个“完数”)。

程序中有2行存在错误,请调试修改,以实现程序所要求的功能。

main()//2

{inta,k,s=0;

for(k=2;

k<

1000;

k++)//4

{s=s;

for(a=1;

a<

=k/2;

a++)//6

if(k/a==0)//7

s+=a;

if(s==k)//9

printf("

%disOK!

k);

}

}

⑵编程验证哥德巴赫猜想:

任何一个大于6的偶数均可表示为2个素数之和。

如,6=3+3,8=3+5,10=3+7,10=5+5,……..20=3+17,20=13+7等。

编程将6~100之间的偶数都表示为2个素数之和。

谈谈本次实验完成的情况。

到目前为止你掌握的情况如何,主要问题是什么?

实验6、数组⑴

1、掌握一维数组的定义、初始化及其使用方法;

2、熟悉二维数组的定义、初始化及其使用方法;

3、熟练掌握利用数组实现常用算法;

⑴程序的功能是:

输入10个数,求出这些数中的最大值、最小值以及平均值,并按照每行5个数的格式输出。

#d

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1