C语言程序设计报告Word格式文档下载.docx
- 文档编号:20965775
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:21
- 大小:28.02KB
C语言程序设计报告Word格式文档下载.docx
《C语言程序设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
main()
{
thisisaerroneousprogram."
}
运行结果
thisisaerroneousprogram.
(2)下面程序的目的是计算两个整数的积。
请输入下面的程序,进行编译,记录编译时出现的信息,分析出现这些信息的原因。
按照自己的分析改正错误后,再进行编译。
链接和运行。
/*****test2.c*****/
a=3,b=5;
c=a*b;
Theproductis:
"
c)
}
--------------------Configuration:
test1-Win32Debug--------------------
hong.cpp
\杨洪棋c++练习\test1\hong.cpp(5):
a'
b'
\杨洪棋c++练习\test1\hong.cpp(6):
c'
\杨洪棋c++练习\test1\hong.cpp(8):
}'
warningC4508:
functionshouldreturnavalue;
void'
returntypeassumed
hong.obj-1error(s),0warning(s)
出现这些错误信息的原因:
该程序没有对啊,不a,b,c定义,还有程序执行部分缺少输出格式,printf结束时缺少一个“;
”
改正后
inta,b,c;
a=3;
b=5;
%d\n"
c);
编译时出现的信息
Linking...
test1.exe-0error(s),0warning(s)
15
实验三
(1)分析下面字符的功能
分析它们是否可以用在变量名中,并编译程序上机测试之。
!
#%……&
*(
)—+=;
“`
\|?
>
<
.
/[]{}:
~
测试程序如下
intmain(void)
Inta?
b,c/d;
同理得出:
所有的都不能用在变量名中。
因为C语言规定只有合法的标识符才可以作为变量名。
(2)分析下面的程序
找出其中的错误,分析错误原因,将其与实验过程中出现的信息进行对比。
intmain()
inta=3,b=5,c=7,x=1,y,z;
a=b=c;
x+2=5;
z=y+3;
return0;
--------------------Configuration:
test-Win32Debug--------------------
D:
\杨洪棋c++练习\test\test\yang.cpp(6):
errorC2106:
='
leftoperandmustbel-value
x+2不能出现在等式的左边,还有y一个没有赋值的变量。
inta,b,c,x,y,z;
c=7;
x=1;
x=5-2;
y=b;
test.exe-0error(s),0warning(s)
实验四
(1)整除的危险性
inta=5,b=7,c=100,d,e,f;
d=a/b*c;
e=a*c/d;
f=c/a*b;
d=%d,e=%d,f=%d\n"
d,e,f);
整除的危险性:
使程序无法输出正确的结果,因为d=a/b*c的输出结果为0,而0不可以作为分母,所以程序不能输出正确的结果。
(2)分析下面的程序:
试比较x++与++x之间的区别。
inta=5,b=8;
a++=%d\n"
a++);
a=%d\n"
a);
++b=%d\n"
++b);
b=%d\n"
b);
得出结果:
x++是先进行计算后在加,++x是先加后计算。
(3)分析下列表达式的值
编写测试程序对这些表达式的值进行比较,并使各表达式在相同的初始条件下执行。
b+a+++a=18
b+(a++)+a=18
b+a+(++a)=19
b+a+++a++=18
程序为:
intadd1(inta,intb)
intf;
f=b+a+++a;
returnf;
intadd2(inta,intb)
inth;
h=b+(a++)+a;
returnh;
intadd3(inta,intb)
intg;
g=b+a+(++a);
returng;
intadd4(inta,intb)
intm;
m=b+a+++a++;
returnm;
inta=5,b=8,i,j,k,l;
i=add1(a,b);
j=add2(a,b);
k=add3(a,b);
l=add4(a,b);
i=%d,j=%d,k=%d,l=%d\n"
i,j,k,l);
表达式的值:
(4)分析下列表达式哪些是错误的,为了验证自己的判断,编写一个测试程序。
i,ji+1,j+1i++,j++++i,++ji+++++j
只有i+++++j是错误的。
inti,j;
i=5;
j=6;
%d,%d\n"
i,j);
i+1,j+1);
i++,j++);
++i,++j);
i+++++j);
sdsds-Win32Debug--------------------
dsds.cpp
\杨洪棋c++练习\test\sdsds\dsds.cpp(11):
errorC2105:
++'
needsl-value
\杨洪棋c++练习\test\sdsds\dsds.cpp(12):
dsds.obj-1error(s),0warning(s)
实验5
(1),编写一个用于测试所使用系统中的基本数据类型所占内存宽度的程序。
&
d=%d\n"
sizeof(int));
Int所占内存的宽度为4
(2).编写程序来测试基本数据类型的取值范围。
charc0,c1,c2,c4,c5,c6;
inta,b,c,d,e,f;
c0=%d,c1=%d,c4=%d,c5=%d,c6=%d\n"
a,b,c,d,e,f);
(3).编写一个程序来测试数据类型的有效数字长度和精度。
floatd1,d2;
d1=0.123456789;
d2=12345678901234567890.123456789;
%lf,%lf\n"
d1,d2);
(4)编写程序来测试不同类型数据之间转换所出现的截去高位、丢失精度和变得不可知等问题
doublef1,f2;
f1=2.1234567;
f2=12345678901234567.123456789;
inti1,i2;
i1=(int)f1;
i2=(int)f2;
i1,i2);
(5)编写程序来测试字符型数据的算术特征
charc1=35,c2='
A'
c3;
c3=c1+c2;
%d,%c\n"
c3,c3);
(6)编写程序来测试转义字符的用法
\t,\t,\t"
实验6
(1).设计一个程序测试printf()函数中数据参数被引用的顺序。
inta=1;
%d,%d,%d\n"
++a,++a,++a);
可以看出数据参数是从后面被引用的。
输出结果:
4,3,2
(2).设计一个程序来测试printf()函数中格式符的意义
doubled=123456789.234567;
%e\n"
d);
1.234568e+008
(3)设计一个程序来测试printf()函数定义域宽与精度的方法所设计的程序要能证明以下内容。
A,域宽小于实际宽度时的情况。
B,默认的域宽与精度各是多少。
C,精度说明大于或小于实际精度时的处理。
D,float与double的最大精度。
E,符号位的处理方式。
F,多余的小数位被截断还是舍入。
(4).设计一个程序来测试scanf()函数中格式符的意义
doublex,y;
scanf("
&
x,&
y);
%f,%lf\n"
x);
y,&
3.03.0
0.0000000.000000
0.0000000.000000
(5)设计一个程序来测试用scanf()输入含有字符型数据的多个项时,数据项之间的分隔问题。
charc1,c2,c3;
inta1,a2,a3;
%d%d%d"
a1,&
a2,&
a3);
%d%d%d\t"
a1,a2,a3);
%c%c%c"
c1,&
c2,&
c3);
%c%c%c\t"
c1,c2,c3);
%c%c%c"
%c%c%c\n"
输入结果:
333adcadc
333adcadc
(6)编写一个程序来测试getchar()和putchar()的用法
charc;
while((c=getchar())!
\n'
)
{
if(c>
c<
z'
c=c-'
+'
putchar(c);
}
putchar('
实验7
(1).编写一个用于测试关系表达式意义和取值的程序
分析结果:
0,0,1,10,0,1,1,1,1
inta=3,b=5,c=5;
%d,%d,%d,%d\t"
a==b,a==c,a!
=b,a!
=c);
%d,%d,%d,%d,%d,%d\t"
a>
=b,a>
=c,a<
=b,a<
b,a<
c);
(2)阅读下面的程序并分析其运行结果
讲运行结果与上机结果进行比较
1.23OK!
floatx;
%lf"
/*从键盘上输入数据1.23*/
if(x=1.23)
printf("
OK!
\n"
1.23
OK!
(3)编写一个用于测试逻辑表达式的意义和取值的程序
程序的执行结果:
0,1,0,11,1,1,0
a==b&
a==c,a!
=b&
a!
=c,a>
a>
a<
%d,%d,%d,%d\n"
!
(a==b),!
(a>
=b),!
=c),!
(a<
=b));
0,1,0,11,1,1,0
(4)编写程序来测试下例逻辑表达式的值
0&
a==01||a==10||a==a1&
a==a1&
a==aa||!
a==1a||a==a
a&
a==a!
(a||b)==!
!
b!
(a&
b)==!
a||!
b!
(!
a)==a
0,1,1,1,1,1,1,0
inta,b,c,d,e,f,g,h,i,j;
c=0&
a==0;
d=1||a==1;
e=0||a==a;
f=1&
a==a;
g=a||!
a==1;
h=a||a==a;
i=a&
j=!
b;
%d,%d,%d,%d,%d,%d,%d,%d\n"
c,d,e,f,g,h,i,j);
(5)分析下面程序段的执行结果并编写验证自己所做推断的程序
程序执行的结果:
10
%d\t"
a<
5||(a==b&
b<
c,printf("
)));
5&
(a==b||b<
实验9
doublee=1.0,x=1.0,y,detax;
inti=1;
\npleaseenteraerror:
detax);
y=1/x;
while(y>
=detax)
x=x*i;
y=1/x;
e=e+y;
++i;
%12.10lf\n"
e);
(1)设计一组detax,使程序能分别按照下面的要求运行。
不进入循环:
y>
detax;
只循环一次:
y=detax;
只循环两次:
y<
=detax;
进入死循环:
如果把原程序while语句之前的y=1/x语句去掉,观察程序的运行结果将发生什么变化
答:
去掉之后将不执行while语句,直接输出结果。
输入的detax<
=y就可以测试出缺少了上述语句。
若把原程序的++i换成i++,观察程序的运行结果发生这样的变化
没有发生什么变化。
把原程序中的while结构改成do-while结构,
inti=1,n=0;
do
n++;
%12.10lf,%d\n"
e,n);
讲y=1/x去掉,讲没有输出结果。
其他的没有什么变化。
实验10
阅读下面程序,画出程序流程图或N-S图,指出程序的功能。
inti,j,k;
longsum=0;
for(i=19;
i<
=20;
i++)
for(j=2;
j<
=3;
j++)
sum+=(i+1)*(i+1)*(j+2);
sumis:
sum);
(1)按照上面所设计的测试用例,分别使程序运行所规定的次数,记录运行结果并与实验准备时估计的结果进行比较。
A.不循环。
i=20;
j=3.输出结果为2205
B.外循环1次,不进行内循环。
I=19,j>
3,输出结果为0
C.外循环,内循环各1次,i=19,j=2;
7569
D..外循环1次,内循环2次;
i=19,j=1;
10092
E.外循环2次,内循环1次;
i=18,j=2;
10018
F.外循环19次,内循环3次,i=2,j=0;
46284
G.外循环20次,内循环2次;
i=1,j=1;
39720
H.外循环21次,内循环3次;
i=0,j=0输出结果:
46354
(2)为了了解每循环一次时循环体中变量的变化。
for(i=0;
for(j=0;
(3)将内/外循环的控制表达式对换,观察程序的执行结果是否有变化,并计算内/外循环共执行多少次。
与对换之前相比,有何变化。
#include<
inti,j,k=0,m=0;
for(j=1;
k++;
for(i=1;
m++;
k,m);
程序执行的结果没有发生变化。
外循环循环了3次,内循环循环了20次。
(4)将程序修改如下
for(j=2;
k=j+2;
for(i=19;
sum+=(i+1)*(i+1)*k;
观察程序的执行结果没有发生变化。
(5)将程序修改如下
inti,j,m,n;
m=j+2;
{
n=i+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告