c语言上机实验.docx
- 文档编号:10192984
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:13
- 大小:89.66KB
c语言上机实验.docx
《c语言上机实验.docx》由会员分享,可在线阅读,更多相关《c语言上机实验.docx(13页珍藏版)》请在冰豆网上搜索。
c语言上机实验
实验3
(1)程序
#include
intmain()
{
inta=3,b=5,c=7,x=1,y,z;
a=b=c;
x+2=5;
z=y+3;
return0;
}
程序错误;提示语言
--------------------Configuration:
fd-Win32Debug--------------------
Compiling...
fd.cpp
C:
\DocumentsandSettings\Administrator\桌面\fd.cpp
(2):
errorC2447:
missingfunctionheader(old-styleformallist?
)
执行cl.exe时出错.
fd.exe-1error(s),0warning(s)
修改为:
#include
intmain()
{
inta=3,b=5,c=7,x=1,y,z;
a=b=c;
x=5+3;
z=y+3;
return0;
}
分析结果:
在赋值和运算中是从右到左。
分析:
A变量名可以是数字,英文字母(大小写均可)。
下划线。
B大小写可以区分是成不同文件。
C赋值运算的特点是自右向左的。
实验4
(1)整数除的危险性
#include
intmain()
{
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)
#include
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++
编程:
#include
main()
{
inta=1,b=1;
printf(“b+a+++a=%d”,b+a+++a);
}
结果:
#include
main()
{
inta=1,b=1;
printf(“b+(a++)+a=%d”,b+(a++)+a);
}
结果:
#include
main()
{
inta=1,b=1;
printf(“b+a+(++a)=%d”,b+a+(++a));
}
结果:
#include
main()
{
inta=1,b=1;
printf(“b+a+++a++=%d”,b+a+++a++);
}
结果:
#include
main()
{
inta=1,b=;
printf(“b+a+++a=%d”,b+a+++a);
}
(4)对这些表达式进行测试分析。
i,j
i+1,j+1
i++,j++
++i,++j
i+++++j
编程:
#include
main()
{
inti=1,j=1;
printf(“i=%d”,i);
printf(“j=%d”,j);
}
结果:
#include
main()
{
inti=1,j=1;
printf(“i+1=%d”,i+1);
printf(“j+1=%d”,j+1);
}
结果:
#include
main()
{
inti=1,j=1;
printf(“i++=%d”,i++);
printf(“j++=%d”,j++);
}
结果:
#include
main()
{
inti=1,j=1;
printf(“++i=%d”,++i);
printf(“++j=%d”,++j);
}
结果:
#include
main()
{
inti=1,j=1;
printf(“i+++++j=%d”,i+++++j);
}
结果:
--------------------Configuration:
Cpp1-Win32Debug--------------------
Compiling...
Cpp1.cpp
C:
\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(5):
errorC2105:
'++'needsl-value
C:
\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(6):
warningC4508:
'main':
functionshouldreturnavalue;'void'returntypeassumed
执行cl.exe时出错.
Cpp1.exe-1error(s),0warning(s)
结论:
程序是错误的。
1.分析结果:
整除有危险性。
A.因为小数不能除大的数字,会显示0。
还有结果一定是整数。
B.算数运算的方向是自左向右。
2.分析结果:
A.i++“先引用,后增值”:
++i“先增值,后引用”
所以a++是5,因为先引用,a是6,因为是增值的结果,
B.++b是9,是因为先增值,b是9,是因为后引用的结果。
3.分析结果:
A.可靠性低
B.不容易读懂
实验5
printf(“long”,sizeof(long));
编程:
#include
intmain()
{
inti=0;
printf("long:
%dbytes\n",sizeof(long));
return0;
}
结果:
(2)编写程序来测试基本数据类型的取值范围下。
编程:
#include
intmain()
{
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)编写程序来测试基本数据类型的有效长度和精度
编程:
#include
intmain()
{
floatd1=0.123456789,d2=12345678901234567890.123456789;
printf("%lf,%lf\n",d1,d2);
}
结果:
(2)编写程序来测试不同类型之间的转换所在出现的截取高位,丢失精度和变得不可知等问题。
编程:
#include
intmain()
{
floatf1=2.1234567,f2=12345678901234567.123456789;
inti1,i2;
i1=f1;
i2=f2;
printf("%d,%d\n",i1,i2);
}
结果:
(3)编写程序来测试字符型数据的算术特征
编程:
#include
intmain()
{
charc1=35,c2='A',c3;
c3=c1+c2;
printf("%d,%c\n",c3,c3);
}
结果:
;
(4)编写程序来测试转移字符的用法
如printf("\7,\7,\7”);
编程:
#include
intmain()
{
printf("\7,\7,\7");
}
在程序中只是会输出两个《,》。
因为\7显示的是所在高度,所以只会显示《,》。
实验6
(1)设计一个程序来测试printf()函数中数据参数被引用的顺序
Inta=1;
Printf(“%d,%d%d,a++,a++,a+”);
编程:
#include
intmain()
{
inta=1;
printf("%d,%d,%d",++a,++a,++a);
}
结果:
分析结果:
因为程序输出是从右向左进行的。
(2)设计一个程序来测试printf()函数中格式的意义。
举例:
Doubled=123456789.23456789;
Printf(“%e”,d);
编程:
#include
intmain()
{
doubled=123456789.23456789;
printf("%e",d);
}
结果:
。
(3)设计一个程序来测试printf()函数定义域与精度的方法。
编程:
#include
intmain()
{
printf("%12.5f\n",123.1234567);
printf("%12f\n",123.1234567);
printf("%12.5g\n",123.1234567);
printf("%5.10s%s\n",”abcdefghijkm”,”a”);
printf("%12.8d\n",12345);
return0;
}
结果:
(4)设计一个程序来测试scanf()函数中格式的意义。
举例:
doublex,y;
scanf("%f,%lf",&x,&y);
printf("%f,%lf",&x,&x);
printf("%f,%lf",&y,&y);
编程:
#include
intmain()
{
doublex,y;
scanf("%f,%lf",&x,&y);
printf("%f,%lf",&x,&x);
printf("%f,%lf",&y,&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,&c1,&c2,&c3”);printf(“%c%c%c,c1,c2,c3”);
编程:
#include
intmain()
{
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,&c1,&c2,&c3");printf("%c%c%c,c1,c2,c3");
return0
}
结果:
(2)编写一个程序来测试getchar()和putchar的用法。
程序:
#include
intmain()
{
charch1,ch2,ch3;
ch1=getchar();
ch2=getchar();
ch3=getchar();
putchar(ch1);
putchar(ch2);
putchar(ch3);
putchar('\n');
return0;
}
程序结果:
(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 实验