第34567章C语言设计 习题答案Word文件下载.docx
- 文档编号:21973501
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:24
- 大小:67.40KB
第34567章C语言设计 习题答案Word文件下载.docx
《第34567章C语言设计 习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《第34567章C语言设计 习题答案Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
十六进制int型字面值;
3e3:
十进制int型字面值;
‘d’:
字符型字面值;
“myuniversity”:
字符串型字面值;
99:
十进制int型字面值;
023:
八进制int型字面值;
1.3e-4:
double型浮点型字面值;
33U:
十进制unsignedint型字面值;
034L:
八进制longint型字面值;
0x34UL:
十六进制unsignedlongint型字面值;
30.23L:
十进制longdouble型字面值;
30.23F:
十进制float型字面值;
10.\?
:
?
\’:
’\”:
”\\:
\
\233:
表示八进制int型整数233
\x2f:
表示十六进制int型整数2f。
11.ASCII码其实就是编号,给每个常用字符(英文字母,各种符号)编号,ASCII规定了127个字符。
这几个字符的编码是a(97)、A(65)、0(48)
12.转换说明由以下成员组成:
a)0个或多个标识符,指定对齐方式、填充字符、正负数的标识及前缀;
b)最小宽度说明,指定数据显示的最小宽度。
c)精度说明,指定小数位数。
d)长度修正说明符,确定参数类型。
e)转换操作符,确定转换之后的数据类型。
13.%08d:
输出十进制整数,最小宽度为8位,不足8位则用0填充;
%8.4d:
输出十进制整数,最小宽度为8位,精度为4;
%-8.4d:
输出十进制整数,左对齐显示数据,最小宽度为8位,精度为4;
%9d:
输出十进制整数,最小宽度为9位。
第四章习题答案
1.有效表达式有:
(2)(3)(5)。
其值的类型均为浮点型。
f==0无效,两个进行比较的数的类型不相同。
f%2为无效表达式,%符号只能用于整数。
2.j++=++j非有效表达式。
j++为右值,右值不能放在“=”的左面;
j++&
++j是有效表达式,若j为0,则有效表达式的值为1。
3.(3)和(5)发生类型转换时会丢失精度
4.源码:
10000000000000000000000001101111
反码:
111111*********11111111110010000
补码:
111111*********11111111110010001
5.源码:
00000000000000000000111100100100
6.2.5
7.4.5
8.
(1)24
(2)10(3)60
(4)0(5)0(6)0
9.
(1)0
(2)1(3)1(题目中有个y未定义)
(4)1
11.-2147483647(题目中变量x多个F)
12.在VS2005中,原题目中表达式的值分别为:
4、4、4、8
第五章习题答案
1.写出与“if(!
e)”等价的表达式。
if(0==e)
2.程序补充,并画出流程图。
(1)j=k/11,0!
=k%11
(2)流程图如下:
图5-1 do-while循环结构示意图
3.使用for语句改写后的代码为:
#include
<
stdio.h>
#include<
stdlib.h>
int
main(void)
{
i=0,j,k;
/*for语句重写上例代码*/
for(k=316;
0!
=k%11;
)
{
++i;
k=316–13*i;
j=k/11;
}//for
printf("
316=13*%d+11*%d"
i,j);
system("
PAUSE"
);
return
0;
}
流程图如下:
图5-2 for循环结构示意图
4.使用while语句改写后的代码为:
i=0,j,k=316;
/*while语句重写上例代码*/
while(0!
=k%11)
}//while
5.11次
6.0
7.程序代码如下:
(见习题与实验手册)
intmain(void)
inti,j,k,tmp;
for(i=1;
i<
=9;
i++)
for(j=0;
j<
j++)
{
for(k=0;
k<
k++)
tmp=i*100+j*10+k;
if(tmp==i*i*i+j*j*j+k*k*k)
printf("
%d"
tmp);
}//for
printf("
\n"
system("
return0;
8.
(1)该程序的功能是:
计算级数
的前10项和(即n=10时的s的值)。
(2)流程图:
图5-4 习题8的流程图
9.程序代码如下所示:
intmain()
inti,j,k;
for(i=1;
i<
=9;
++i)
for(j=1;
j<
=i;
++j)
{
%d*%d=%d\t"
j,i,i*j);
}//for
return0;
10.
(1)for循环程序代码如下所示:
math.h>
doublepi=0;
intn=1,t=1;
//当新加的项>
1e-8时才加入
for(;
fabs(1.0*t/n)>
1e-8;
t*=-1,n+=2)
pi+=1.0*t/n;
PI=%.7f\n"
4.0*pi);
(2)while循环程序代码如下所示:
//当新加的项>
while(fabs(1.0*t/n)>
1e-8)
pi+=1.0*t/n;
t*=-1;
n+=2;
(3)do-while循环程序代码如下所示:
do
}while(fabs(1.0*t/n)>
1e-8);
第六章习题答案
1.
(1)*q的等价表达式是:
x
(2)x代表3在内存中的存储单元所存储的数据;
*q代表指针q指向的哪个单元(即x)的存储数据;
q代表指针变量q在内存中的存储单元所存储的数据(即变量x的地址);
x表示变量x在内存中的存储地址值;
q表示指针变量q在内存中的存储地址值。
2.
(1)*q的等价表达式:
y、**q2等
(2)*q2的等价表达式:
q、&
x等
(3)**q2的等价表达式:
*q、y等
(4)q2的等价表达式:
q等
3.
(1)对于p1:
const修饰p1,则p1的值不能改变,即p1不能指向其它元素,且必须在定义时初始化。
(2)对于p2:
const修饰*p2,则*p2的值不能改变。
(3)对于p3:
const既修饰p3,又修饰*p3,则p3和*p3的值都不能改变,且必须在定义时初始化p3。
4.*p的结果不可知。
由于p是double型指针变量,即与*p“捆绑”的是一块占8个字节的内存单元(在VS2005中);
而在初始化时,令p指向变量x的存储首地址,则实际上与*p“捆绑”在一起的是以变量x的存储空间首地址为首地址的连续的8个字节的存储空间(在VS2005中),则*p的值应该是这8个字节所存储的数据;
但是变量x只占据4个字节的内存存储空间,故其余4个字节存储空间的数据不明,即*p的结果不可知。
5.*p的结果是double型变量x的前4个字节存储空间所存储的数据。
由于p是int型指针变量,即与*p“捆绑”的是一块占4个字节的内存单元(在VS2005中);
而在初始化时,令p指向double型变量x的存储首地址,则实际上与*p“捆绑”在一起的是以变量x的存储空间首地址为首地址的连续的4个字节的存储空间(在VS2005中),则*p的值应该是这4个字节所存储的数据,即*p的结果为double型变量x在内存中前4个字节所存储的数据。
6.p+1的值是:
0x0000001E。
由于p是一个int型指针变量,即与*p“捆绑”在一起的是4个字节单元,则p+1指向变量x的内存地址的下4个字节的存储首地址。
7.p+1的值是:
0x00000022。
由于p是一个double型指针变量,即与*p“捆绑”在一起的是8个字节单元,则p+1指向变量x的内存地址的下8个字节的存储首地址。
(1)p1==p2的值为0。
由于p1指向变量x的存储空间首地址,p2指向变量y的存储空间首地址,即指针变量p1和p2的值分别是变量x和变量y的存储空间首地址,显然p1!
=p2。
(2)若要使p1==(p2+1),则在内存空间中,必须要求变量x的存储空间在物理位置上位于变量y的存储空间的下一单位字节处(此处8个字节为一个单位)。
9.
(1)p3的等价表达式:
p2等
(2)*p3的等价表达式:
p2、&
p1等
(3)**p3的等价表达式:
*p2、p1、&
(4)***p3的等价表达式:
**p2、*p1、x等
10.等价表达式有:
scanf(“%d”,p);
、scanf(“%d”,&
(*p));
、scanf(“%d”,*(&
p));
11.语句“int*p=0;
”只是定义了一个指针,且使该指针不指向任何空间,即p不指向任何内存空间,则输入的时候不能使用p指向的地址来接收数据。
12.语句“int*p=0;
”只是定义了一个指针,且使该指针不指向任何空间,即p不指向任何内存空间,则输出的时候不能使用p指向的地址空间来引用数据。
第七章习题答案
1.请声明一个10个元素的一维整型数组,并用{1,2,4,5,6,7,8,9,10}初始化。
答:
inta[10]={1,2,4,5,6,7,8,9,10};
2.请声明一个10行10列的浮点型二维数组,并用{1,2,4,5,6,7,8,9,10}初始化第一行的10个元素。
floata[10][10]={1,2,4,5,6,7,8,9,10}
3.请编程找出一维数组中的最大数。
limits.h>
#defineSIZE10
inta[SIZE];
inti;
intmax=INT_MIN;
for(i=0;
SIZE;
++i)
请输入%d个整数(输完一个回一次车):
"
i+1);
scanf("
%d"
&
a[i]);
}
if(max<
a[i])
max=a[i];
}
数组a中的最大数为:
%d\n"
max);
4.请编程找出二维数组中的最小数。
#defineROW3
#defineCOL4
inta[ROW][COL];
intmin=INT_MAX;
请输入%d个数!
ROW*COL);
ROW*COL;
请输入%d行第%d列个整数(输完一个回一次车):
i/COL+1,i%COL+1);
scanf("
a[i/COL][i%COL]);
if(min>
a[i/COL][i%COL])
min=a[i/COL][i%COL];
}
数组a中的最小数为:
min);
5.请编程求出二维整型数组中所有元素的平均值。
intsum=0;
floataverage=0;
sum+=a[i/COL][i%COL];
average=(sum*1.0)/(ROW*COL);
数组a中的整数的平均值为:
average);
6.请编程对一维整型数组中的元素进行排序(从小到大或从大到小)。
inta[SIZE],temp;
inti=0,j=0;
/*输入*/
/*排序*/
SIZE-1;
for(j=0;
SIZE-1-i;
++j)
if(a[j]>
a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
/*输出*/
排序后的结果为:
a[i]);
7.声明一个10个元素的字符型数组(设为s),并用分别用”abcd”、{‘a’,‘b’,‘c’,‘d’,‘\0’}初始化它。
编程将s中的值在屏幕上输出。
#defineLEN100
chars1[LEN]="
abcd"
;
chars2[LEN]={'
a'
'
b'
c'
d'
\0'
};
%s\n"
s1);
s2);
8.编程判断两个存储在字符型数组中的字符串字面值是否相等。
string.h>
abce"
ints1_Len=strlen(s1);
ints2_Len=strlen(s2);
inti=0,count=0;
if(s1_Len!
=s2_Len)
s1和s2不相等!
else/*s1_Len等于s2_Len*/
s1_Len;
if(s1[i]==s2[i])
count++;
/*count记录相等的字符个数*/
else
break;
if(count==s1_Len)/*如果相等的字符个数与字符串长度相同*/
s1和s2相等.\n"
s1和s2不相等.\n"
9.编程将存储在一个字符型数组中的字符串字面值复制到另一个字符型数组中。
注意:
’\0’也得复制过去。
chars2[LEN];
inti=0;
s2[i]=s1[i];
s2[s1_Len]='
10.编程找出二维整型数组中的鞍点元素(该元素是在所在行是最大的元素,在所在列是最小的的元素)。
inti=0,j=0,k=0,col=0;
intmax=0,min=0;
intcount=0;
/*鞍点的个数*/
ROW;
max=INT_MIN;
COL;
++j)/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第34567章C语言设计 习题答案 34567 语言 设计 习题 答案