计算机软件基础课后习题参考答案docWord格式.docx
《计算机软件基础课后习题参考答案docWord格式.docx》由会员分享,可在线阅读,更多相关《计算机软件基础课后习题参考答案docWord格式.docx(48页珍藏版)》请在冰点文库上搜索。
charstr[100];
gets(str);
intn1,n2,n3,n4,i;
n1=n2=n3=n4=0;
for(i=0;
str[i]!
='
\0'
;
++i){
if(str[i]>
A'
&
&
str[i]<
Z'
)
++n1;
elseif(str[i]>
a'
z'
++n2;
0'
9'
++n3;
else
++n4;
}
printf("
大写字母:
%d\n"
n1);
小写字母:
n2);
数字字符:
n3);
其他字符:
n4);
return0;
}
2.
stdlib.h>
intarray[4],min,max,i;
i<
4;
++i)
scanf("
%d"
&
array[i]);
min=max=array[0];
for(i=1;
if(array[i]<
min)
min=array[i];
elseif(array[i]>
max)
max=array[i];
min=%d,max=%d\n"
min,max);
3.
floatmoney,lixi;
intyear;
%f%d"
money,&
year);
switch(year){
case1:
lixi=money*0.63/100;
break;
case2:
lixi=money*0.66/100;
case3:
lixi=money*0.69/100;
case5:
lixi=money*0.75/100;
case8:
lixi=money*0.84/100;
default:
输入错误\n"
);
return-1;
%f\n"
money+lixi);
4.
intx,y;
x);
if(x>
100)
y=x+8;
elseif(x<
-10)
y=-x+8;
y=0;
y);
5.
inti,j,k,m=3;
for(k=5;
k<
12;
k+=2,--m){
m;
"
for(j=0;
j<
k;
++j)
*"
\n"
6.
*****\n"
**\n"
*************\n"
第三章
1.a:
数组名,a[0]:
数组第0号元素,&
a[1]数组第1号元素的地址
2.不同,”a”是字符串,末尾有一个’\0’
3.2*3*2=12个字节
1.0
2.按行存放
3.1014
4.str[14]
5.‘\0’
三、改错
1.是0
2.只能是常量
3.一定相同
4.不会给错误信息
5.没有提供字符串类型
6.不等价,”ok”末尾有一个’\0’
1-5DBCAC6-10CDDCB11-13CDC
五、程序分析题
1.AzyD
2.123
3.45
4.4somestring*test
5.统计输入字符串中空格的个数3,1
6.max<
a[row][col]min>
maxmin==max
7.aasum/nx[i]<
ave
8.a[i][j]!
=a[j][i]1
9.j+=2a[i]>
a[j]
10.1245600000
1234560000
六、编程题
intmain(intargc,char*argv[]){
inta[11],i,n;
请输入十个递增排列的数列:
"
10;
scanf("
a[i]);
请输入要插入的数:
n);
for(i=9;
i>
=0&
a[i]>
n;
--i){
a[i+1]=a[i];
a[i+1]=n;
插入后数列为:
for(i=0;
11;
printf("
%d"
a[i]);
return0;
string.h>
chara[100],b[100],min,i;
%s%s"
a,b);
min=0;
a[i]!
if(a[min]>
a[i])
min=i;
strcat(b,a+min+1);
a[min+1]='
strcat(a,b);
%s\n"
a);
chars1[100],chars2[100];
inti;
gets(s1);
gets(s2);
char*string1=s1,*string2=s2;
do{
i=(int)*string1-(int)*string2;
}while(*string1++&
*string2++&
(!
i));
s1[i]!
s2[i]!
s1[i]==s2[i];
++i);
i);
chars[100];
gets(s);
s[i]!
if(i==0||(s[i-1]=='
'
s[i]>
s[i]<
))
s[i]-=32;
puts(s);
chars1[100],s2[100];
intend,i;
for(end=0;
s1[end]!
++end);
s1[end++]=s2[i];
s1[end]='
puts(s1);
第四章
1.参考书上68页,69页,72页
2.函数的返回值,函数的形参
3.实参与形参之间是值传递的关系
1.库用户自定义
2.3
3.gets()
4.strlen()
5.strcpy()
6.全局局部
7.有返回值无返回值
8.return
9.void
10.前
11.调用
1.表示不同的变量
2.按照调用的先后顺序执行
3.各自有自己的存储单元
4.可以没有形参
5.分配在动态存储区
6.以该函数定义的返回值为准
7.嵌套调用指函数调用函数
1-5BDACC6-10DAACC11-13BCC
1.jstr[j-1]
2.本题程序是错的,第五行,for(I=m+1;
i++)这里少东西,所以跳过
3.i<
nx=fun(4)
4.1:
a=1,b=1
2:
a=2,b=2
3:
a=3,b=3
intfun(intyear){
if(year%400==0||(year%4==0&
year%100))
return1;
return0;
math.h>
voidfun1(inta,intb,intc){
floatt=sqrt(b*b-4*a*c);
x1=%f,x2=%f\n"
(-b+t)/2.0*a,(-b-t)/2.0*a);
voidfun2(inta,intb,intc){
x1=x2=%f\n"
-b/2.0*a);
voidfun3(inta,intb,intc){
该方程没有实根"
inta,b,c;
%d%d%d"
a,&
b,&
c);
if(b*b-4*a*c>
0)
fun1(a,b,c);
elseif(b*b-4*a*c==0)
fun2(a,b,c);
fun3(a,b,c);
intfun(inta[],intn){
inti,j=0;
if(i%3==0&
i%7==0)
a[j++]=i;
returnj;
inta[100],n,m,i;
m=fun(a,n);
%f"
sqrt(a[i]));
第五章
1.不一定,这要看指针的类型,比如int*p,则p+1就增加两个字节
2.定义指针时表示定义的变量是指针类型,引用指针时,表示指针指针指向的变量
3.p+n,p–n,其中n是int类型
1.地址
2.&
*
3.指针
4.*p
5.1006
6.malloc
7.a+i*(a+i)
8.3
9.‘b’‘\0’
1.只能存放同类型的变量的地址,比如int*只能存放int型变量的地址
2.这个说法是正确的,没有错误
3.不是,指的是指针所指向的变量的类型
4.只能是同类型的指针或者&
a这样的地址值
5.是可以改变的
1-5CDDAA6-10BCDDD
1.*xt
2.r+b[u]*x
3.10
4.CDG
5.80,-20
6.5
7.55
1711717
intfun(char*s,charc){
intcount=0;
for(;
*s!
++s)
if(*s==c)
++count;
returncount;
chars[100],c;
c=getchar();
%s%c\n"
s,c);
fun(s,c));
inti,n1,n2,n3,n4,n5;
n1=n2=n3=n4=n5=0;
if(s[i]>
++n1;
elseif(s[i]>
++n2;
elseif('
==s[i])
++n3;
++n4;
else
++n5;
空格:
n3);
数字:
n5);
第六章
1
比如定义
structStudent{
charname[100];
intage;
}stu;
则stu.name,stu.age即可引用结构体成员
2.不是必须为所有的成员赋初值,因为语法上没有强制要求。
1.21&
a[0]p->
xa[1]
2.13
3.“ab”“cd”
1.可以同名
2.可以含有
3.不可以
四、单选题
BACBDD
1.Zhao
2.10x
3.200y
4、->
.
5、364020
6、max=person[i].agemin=person[i].age
structScore{
floats1;
floats2;
};
intmain(){
structScorestu;
%f%f"
stu.s1,&
stu.s2);
(stu.s1+stu.s2)/2.0);
charstuNo[50];
//学号
//期中成绩
//期末成绩
structStudentstu[10];
%s%f%f"
stu[i].stuNo,&
stu[i].s1,&
stu[i].s2);
学号:
stu[i].stuNo);
期中成绩:
stu[i].s1);
期末成绩:
stu[i].s2);
平均成绩:
(stu[i].s1+stu[i].s2)/2.0);
第七章
1.D代表数据节点的集合,R是D上的关系
2.逻辑结构是数据之间的外在关系,物理结构是数据在计算机内的存储表示
3.参考第二页
4.不是,还于算法的设计有关,一个好的算法可以降低时间复杂度
5.O(n),O(lgn),O(nlgn),O(n的平方+1),O(n3–n2),O(n5),O(2的n次方)
1、逻辑物理逻辑
2、时间复杂度空间复杂度
3、线性表二叉树图
4、线性
5、树型
6、111多多多
7、O(n的平方)
8、O(n)O(n)
1、无关
2、有关
3、无关
4、不是,是外在的关系,与存储结构无关
CCBCC6题A选项改为n(n-1)
第八章
1、参考132页、135页、136页
2、参考139页
3、参考139页
4、选择顺序存储结构,因为顺序表是随机存取,访问任意一个元素的时间复杂度为O
(1);
5、选择链式存储,因为链表插入删除的开销小
6、循环单链表,循环双链表
7、单链表无法删除
循环单链表可以删除,时间复杂度为O(n)
循环双链表可以删除,时间复杂度为O
(1)
1、顺序存储链式存储
2、O(n)
3、O(n)O
(1)
4、q->
next=p->
nextp->
next=q
5、p->
nexts->
datat
6、p->
next=head->
nexthead->
next=p
7、p->
next->
next
8、head->
next=NULL
9、p->
priors->
next=ps
10、O
(1)
1、一定相邻
2、该说法是正确的
3、该说法是正确的
4、需要移动节点
5、不会发生溢出现象
6、链表
AABBABCAB10题为CDABCB
五、程序分析
1、删除单链表
2、p->
next!
=q->
priorp=p->
nextq=q->
prior
3、count=0p=p->
next
六、程序设计题
#defineMAX100
structLink{
intdata[