常大C程序设计上机指导10.docx
- 文档编号:3251039
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:116
- 大小:179.79KB
常大C程序设计上机指导10.docx
《常大C程序设计上机指导10.docx》由会员分享,可在线阅读,更多相关《常大C程序设计上机指导10.docx(116页珍藏版)》请在冰豆网上搜索。
常大C程序设计上机指导10
2012_C程序设计上机指导
(第五版)
周天彤向艳编写
常州大学信息科学与工程学院
1、第1章C程序设计入门
1.1P1_1项目
阅读下列程序,先写出手算运行结果,然后录入程序,项目名保存为P1_1。
在实验报告纸上记录运行情况。
代码:
#include
intmain()
{
charc1,c2;
c1=97,c2=98;
printf("按字符型输出时c1、c2的值是%c和%c",c1,c2);
return0;
}
结果:
按字符型输出时c1、c2的值是a和bPressanykeytocontinue
在此基础上,
1)加一个printf语句,并运行之
printf(“%d,%d”,c1,c2);
代码:
#include
intmain()
{
charc1,c2;
c1=97,c2=98;
printf("按字符型输出时c1、c2的值是%c和%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return0;
}
结果:
按字符型输出时c1、c2的值是a和b
97,98
Pressanykeytocontinue
2)再将c1,c2定义修改再运行
intc1,c2;
代码:
#include
intmain()
{
intc1,c2;
c1=97,c2=98;
printf("按字符型输出时c1、c2的值是%c和%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return0;
}
结果:
按字符型输出时c1、c2的值是a和b
97,98
Pressanykeytocontinue
3)再将第三行修改如下,再运行
c1=300,c2=400;
代码:
#include
intmain()
{
intc1,c2;
c1=300,c2=400;
printf("按字符型输出时c1、c2的值是%c和%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return0;
}
结果:
按字符型输出时c1、c2的值是,和?
300,400
Pressanykeytocontinue
4)再将c1,c2的定义改回,观察结果
代码:
#include
intmain()
{
charc1,c2;
c1=300,c2=400;
printf("按字符型输出时c1、c2的值是%c和%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return0;
}
结果:
按字符型输出时c1、c2的值是,和?
44,-112
Pressanykeytocontinue
1.2P1_2项目
下面的程序是演示C语言中转义字符的语法现象的程序。
阅读下列程序,先写手算运行结果,然后录入程序,项目名保存为P1_2。
在实验报告纸上记录运行情况。
代码:
#include
intmain()
{
charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%cc\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
结果:
aabbcccabc
ANPressanykeytocontinue
1.3P1_3项目
下面程序是验证“自加和自减运算规则”的语法现象的程序。
阅读程序,先写出手算运行结果,然后录入程序。
项目名保存为P1_3。
在实验报告纸上记录运行情况。
分析结果:
代码:
#include
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
1)运行程序,观察并记录i,j,m,n的值。
结果:
9,11,9,10
Pressanykeytocontinue
2)将程序分别作以改动后运行,观察并分析运行结果,结论写在报告上。
a)将第5、6行改为m=i++;n=++j;
代码:
#include
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=i++;
n=++j;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
结果:
9,11,8,11
Pressanykeytocontinue
b)将程序改为
代码:
#include
voidmain()
{
inti,j;
i=8;
j=9;
printf("%d,%d\n",i++,j++);
}
结果:
8,9
Pressanykeytocontinue
c)在上题基础上,将最后一句改为:
printf(“%d,%d\n”,++i,++j);
代码:
#include
voidmain()
{
inti,j;
i=8;
j=9;
printf("%d,%d\n",++i,++j);
}
结果:
9,10
Pressanykeytocontinue
d)最后一句另改为:
printf(“%d,%d,%d,%d\n”,i,j,i++,j++);
代码:
#include
voidmain()
{
inti,j;
i=8;
j=9;
printf("%d,%d,%d,%d\n",i,j,i++,j++);
}
结果:
8,9,8,9
Pressanykeytocontinue
1.4P1_4项目
设计程序,验证“逻辑运算符的短路现象”的语法现象。
项目为保存为P1_4。
在实验报告纸上记录运行情况。
分析结果:
代码:
#include
voidmain()
{
inta,b,c,d,m=-5,n=-6,result;
a=1,b=2,c=3,d=4;
result=(m=a>b)&&(n=c>d);
printf("result=%dm=%dn=%d\n",result,m,n);
}
结果:
result=0m=0n=-6
Pressanykeytocontinue
说明:
由于“a>b”的值为0,因此m=0,此时已能判定整个表达式不可能为真,不必再进行“n=c>d”的运算,因此n的值不是0而是仍保持原值-6,这就是“逻辑运算符的短路现象”的语法现象。
1.5P1_5项目
设计程序,验证“赋值运算的运算次序是从右向左进行”的语法现象。
项目名积存为P1_5。
在实验报告纸上记录运行情况。
分析结果:
代码:
#include
voidmain()
{
inta=1,b=2;
a=b=3*4;
printf("a=%db=%d\n",a,b);
}
结果:
a=12b=12
Pressanykeytocontinue
1.6P1_6项目
模仿例1.1,创建项目P1_6,在屏幕上输出自己的名字的拼音。
代码:
#include
处理命令
intmain()//定义主函数
{//函数开始的标志
printf("WangXiaogang\n");//输出所指定的一行信息
return0;//函数执行完毕时返回函数值0
}
结果:
WangXiaogang
Pressanykeytocontinue
2、第2章顺序结构程序设计
1、语法错误
#definePI314
#include
voidmain()
{
floatr,s;
s=PI*s*s;
printf("s=%f",s);
}
结果:
s=3620173092907198500.000000Pressanykeytocontinue
2、逻辑错误
#include
voidmain()
{
intr,s;
s=3.14*r*r;
scanf("%f",&r);
printf("%f",s);
}
结果:
2
0.000000Pressanykeytocontinue
3、算法错误
2.1P2_1项目
按照下面步骤
1)创建P2_1项目,录入以上程序。
#include
#definePI3.14
voidmain()
{
floatr,s,l,v;
scanf("%f",&r);
l=PI*r*2;
printf("l=%f\n",l);
s=PI*r*r;
printf("s=%f\n",s);
v=4/3*PI*r*r*r;
printf("v=%f\n",v);
}
结果:
2
l=12.560000
s=12.560000
v=25.120000
Pressanykeytocontinue
2)人工检查录入错误,记录检出错误数目。
3)使用菜单项Build下拉菜单中的BuildP2_1.exe或者工具栏中的Build(F7)进行编译,记录每个错误提示,然后重新编译。
4)不运行程序,判断程序的作用。
如果给程序输入1.0,记录笔算的运行结果。
使用Build下拉列表中的ExecuteP2_1.exe或者工具栏中的!
ExecuteProgram(Ctrl+F5)运行这个程序,记录程序执行结果。
根据异常结果所给出的信息,判断在给出的程序中的逻辑错误(BUG)所在的行并修改这个错误。
1.0
l=6.280000
s=3.140000
v=3.140000
Pressanykeytocontinue
2.2P2_2项目
观察下面的程序并在实验报告纸上人工写出运行结果;输入并运行该程序,记录运行结果,记录并总结手算与机算的差异之处。
代码:
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=317.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
结果:
a=61,b=62
c1=a,c2=b
d=3.56,e=-6.87
f=317.890121,g=0.123456789000
m=50000,n=-60000
p=32768,q=40000
Pressanykeytocontinue
在此基础上,改变程序,运行程序并分析结果。
1)将程序第8-13行改为
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
代码:
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
结果:
a=50000,b=-60000
c1==,c2=>
d=3157.89,e=0.12
f=3157.890121,g=0.123456789000
m=50000,n=-60000
p=50000,q=4294907296
Pressanykeytocontinue
2)在1)的基础上将printf语句改为:
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n",f,g,m,n,p,q);
代码:
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
a=61;b=62;
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n",f,g,m,n,p,q);
}
运行结果:
a=50000,b=-60000
c1==,c2=>
d=3157.89,e=0.12
f=3157.890121,g=0.123457
m=50000,n=-60000
p=50000,q=-60000
3)将p,q改用%O格式符输出。
printf("f=%f,g=%f\nm=%d,n=%d\np=%o,q=%o\n",f,g,m,n,p,q);
a=50000,b=-60000
c1==,c2=>
d=3157.89,e=0.12
f=3157.890121,g=0.123457
m=50000,n=-60000
p=141520,q=37777612640
4)改用scanf函数输入数据,而不用赋值语句。
代码:
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
scanf("%ld,%ld",&a,&b);
//a=61;b=62;
c1=a;c2=b;
scanf("%lf,%lf",&f,&g);
//f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%o,q=%o\n",f,g,m,n,p,q);
}
结果:
61,62
3157.890121,0.123456789
a=50000,b=-60000
c1==,c2=>
d=3157.89,e=0.12
f=3157.890121,g=0.123457
m=50000,n=-60000
p=141520,q=37777612640
5)改用scanf输入浮点数时,使用%lf和%f有什么不同;比较scanf输入整型数时,使用%ld和%d有什么不同?
代码:
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
scanf("%d,%d",&a,&b);
//a=61;b=62;
c1=a;c2=b;
scanf("%f,%f",&f,&g);
//f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%o,q=%o\n",f,g,m,n,p,q);
}
结果:
61,62
3157.890121,0.123456789
a=50000,b=-60000
c1==,c2=>
d=-1.#J,e=-1.#J
f=-92559605387113434000000000000000000000000000000000000000000000.000000,g=-9255
9603991907475000000000000000000000000000000000000000000000.000000
m=50000,n=-60000
p=141520,q=37777612640
说明:
对于double变量,scanf时必须选择%lf,而printf时仍可用%lf或%f
61,62
3.2,6.5
a=50000,b=-60000
c1==,c2=>
d=3.20,e=6.50
f=3.200000,g=6.500000
m=50000,n=-60000
p=141520,q=37777612640
#include
#definePI3.14
voidmain()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedp,q;
scanf("%d,%d",&a,&b);
//a=61;b=62;
c1=a;c2=b;
scanf("%lf,%lf",&f,&g);
//f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%lf,g=%lf\nm=%d,n=%d\np=%o,q=%o\n",f,g,m,n,p,q);
}
61,62
5.6,8.6
a=50000,b=-60000
c1==,c2=>
d=5.60,e=8.60
f=5.600000,g=8.600000
m=50000,n=-60000
p=141520,q=37777612640
2.3P2_3项目
编辑调试上机准备1的程序,记录编译过程中出现的错误,运行时分别输入10,2.3,1.2E10,测试程序的运行并记录结果;
代码:
#include
#definePI3.14
voidmain()
{
floatr,s,l,v;
scanf("%f",&r);
l=PI*r*2;
printf("l=%f\n",l);
s=PI*r*r;
printf("s=%f\n",s);
v=4/3*PI*r*r*r;
printf("v=%f\n",v);
}
结果1:
10
l=62.800000
s=314.000000
v=3140.000000
Pressanykeytocontinue
结果2:
2.3
l=14.444000
s=16.610599
v=38.204378
Pressanykeytocontinue
结果3:
1.2E10
l=75360000000.000000
s=452160000000000000000.000000
v=5425920000000000600000000000000.000000
Pressanykeytocontinue
printf("v=%e\n",v);或者:
printf("v=%e\n",v);
结果:
1.2e10
l=75360000000.000000
s=452160000000000000000.000000
v=5.425920e+030
Pressanykeytocontinue
2.4P2_4项目
编辑调试上机准备2的程序,记录编译过程中出现的错误,运行时分别输入课前准备的5组数据,记录5个运行结果,比较手算与计算的差异。
代码:
P37:
例3.1题
#include
intmain()
{
floatf,c;//定义f和c为单精度浮点型变量
scanf("%f",&f);//f=64.;//指定f的值
c=(5.0/9)*(f-32);//利用公式计算c的值
printf("f=%f\nc=%f\n",f,c);//输出c的值
return0;
}
结果1:
56
f=56.000000
c=13.333333
Pressanykeytocontinue
2.5P2_5项目
编辑调试上机准备3的程序,记录编译过程中出现的错误,运行时分别输入课前准备的3组数据,记录3个运行结果,比较手算与计算的差异。
代码:
P37:
例3.2题
#include
intmain()
{
floatp0,r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 上机 指导 10