c语言上机实验Word文档下载推荐.doc
《c语言上机实验Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《c语言上机实验Word文档下载推荐.doc(11页珍藏版)》请在冰豆网上搜索。
\DocumentsandSettings\Administrator\桌面\fd.cpp
(2):
errorC2447:
missingfunctionheader(old-styleformallist?
)
执行cl.exe时出错.
fd.exe-1error(s),0warning(s)
修改为:
x=5+3;
分析结果:
在赋值和运算中是从右到左。
分析:
A变量名可以是数字,英文字母(大小写均可)。
下划线。
B大小写可以区分是成不同文件。
C赋值运算的特点是自右向左的。
实验4
(1)整数除的危险性
inta=5,b=7,c=100,d,e,f;
d=a/b*c;
e=a*c/d;
f=c/b*a;
程序在运行结果为:
000;
分析原因:
A5/7*100,结果是5/7等于0,再0乘上100等于0。
B5*100/7,结果是5*100等于500,再500/7等于0。
C100/7*5结果是100/7等于0,再0*5等于0。
结论:
原因在于,当整除不成立时,结果为0,所以结论会影响下一次的运行。
(2)
main()
inta=5,b=8;
printf(“a++=%d”,a++);
printf(“a=%d”,a);
printf(“++b=%d”,++b);
printf(“b=%d”,b);
得到结论为
i++“先引用,后增值”:
++i“先增值,后引用”
所以a++是5,因为先引用,a是6,因为是增值的结果,++b是9,是因为先增值,b是9,是因为后引用的结果。
(3)对这些表达式进行测试分析。
b+a+++a
b+(a++)+a
b+a+(++a)
b+a+++a++
编程:
inta=1,b=1;
printf(“b+a+++a=%d”,b+a+++a);
结果:
printf(“b+(a++)+a=%d”,b+(a++)+a);
printf(“b+a+(++a)=%d”,b+a+(++a));
printf(“b+a+++a++=%d”,b+a+++a++);
inta=1,b=;
(4)对这些表达式进行测试分析。
i,j
i+1,j+1
i++,j++
++i,++j
i+++++j
inti=1,j=1;
printf(“i=%d”,i);
printf(“j=%d”,j);
printf(“i+1=%d”,i+1);
printf(“j+1=%d”,j+1);
printf(“i++=%d”,i++);
printf(“j++=%d”,j++);
printf(“++i=%d”,++i);
printf(“++j=%d”,++j);
printf(“i+++++j=%d”,i+++++j);
Cpp1-Win32Debug--------------------
Cpp1.cpp
\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(5):
errorC2105:
'
++'
needsl-value
\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(6):
warningC4508:
main'
:
functionshouldreturnavalue;
void'
returntypeassumed
Cpp1.exe-1error(s),0warning(s)
程序是错误的。
1.分析结果:
整除有危险性。
A.因为小数不能除大的数字,会显示0。
还有结果一定是整数。
B.算数运算的方向是自左向右。
2.分析结果:
A.i++“先引用,后增值”:
所以a++是5,因为先引用,a是6,因为是增值的结果,
B.++b是9,是因为先增值,b是9,是因为后引用的结果。
3.分析结果:
A.可靠性低
B.不容易读懂
实验5
printf(“long”,sizeof(long));
inti=0;
printf("
long:
%dbytes\n"
sizeof(long));
(2)编写程序来测试基本数据类型的取值范围下。
charc0,c1,c2,c4,c5,c6;
c0=-129,c1=-128,c2=-127,c4=128,c5=127,c6=126;
printf("
%d\n%d\n%d\n%d\n%d\n%d\n"
sizeof(c0),sizeof(c1),sizeof(c2),sizeof(c4),sizeof(c5),sizeof(c6));
结果为;
gjhjhgjh
。
(1)编写程序来测试基本数据类型的有效长度和精度
floatd1=0.123456789,d2=12345678901234567890.123456789;
%lf,%lf\n"
d1,d2);
(2)编写程序来测试不同类型之间的转换所在出现的截取高位,丢失精度和变得不可知等问题。
floatf1=2.1234567,f2=12345678901234567.123456789;
inti1,i2;
i1=f1;
i2=f2;
%d,%d\n"
i1,i2);
(3)编写程序来测试字符型数据的算术特征
charc1=35,c2='
A'
c3;
c3=c1+c2;
%d,%c\n"
c3,c3);
;
(4)编写程序来测试转移字符的用法
如printf("
\7,\7,\7”);
\7,\7,\7"
);
在程序中只是会输出两个《,》。
因为\7显示的是所在高度,所以只会显示《,》。
实验6
(1)设计一个程序来测试printf()函数中数据参数被引用的顺序
Inta=1;
Printf(“%d,%d%d,a++,a++,a+”);
#include<
inta=1;
%d,%d,%d"
++a,++a,++a);
因为程序输出是从右向左进行的。
(2)设计一个程序来测试printf()函数中格式的意义。
举例:
Doubled=123456789.23456789;
Printf(“%e”,d);
doubled=123456789.23456789;
%e"
d);
(3)设计一个程序来测试printf()函数定义域与精度的方法。
%12.5f\n"
123.1234567);
%12f\n"
%12.5g\n"
%5.10s%s\n"
”abcdefghijkm”,”a”);
%12.8d\n"
12345);
(4)设计一个程序来测试scanf()函数中格式的意义。
doublex,y;
scanf("
%f,%lf"
&
x,&
y);
x);
y,&
(1)设计一个程序来测试用scanf()输入含有字符型数据的多项时,数据项之间的分割问题。
举例如下:
Charc1,c2,c3;
Inta1,a2,a3;
Scanf(“%d%d%d,&
a1,&
a2,&
a3”);
printf(“%d%d%d,a1,a2,a3”);
Scanf(“%c%c%c,&
c1,&
c2,&
c3”);
printf(“%c%c%c,c1,c2,c3”);
Scanf(“%c%c%c,&
#include