自考计算机软件基础版课后习题答案.docx
- 文档编号:29753179
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:51
- 大小:485.23KB
自考计算机软件基础版课后习题答案.docx
《自考计算机软件基础版课后习题答案.docx》由会员分享,可在线阅读,更多相关《自考计算机软件基础版课后习题答案.docx(51页珍藏版)》请在冰豆网上搜索。
自考计算机软件基础版课后习题答案
第一篇C语言程序设计基础2
第一章C语言基础2
第二章顺序结构、选择结构和循环结构的程序设计2
第三章数组6
第四章函数12
第五章指针14
第六章结构类型16
第二篇数据结构基础18
第七章数据结构概论18
第八章线性表18
第九章栈、队列和数组24
第十章树和二叉树29
十一章图31
第十二章常用的查找方法32
第十三章常用的排序方法34
第一篇C语言程序设计基础
第一章C语言基础
一、简答题
1.参考书P5图1-7。
2.因为C语言是强类型语言,语法规定必须先定义后使用,只有先定义,系统才能为其分配存储空间。
3.参考书P2。
二、填空题
1.算法
2..C,.obj,.exe
3.提出问题,构造模型,选择方法,编写程序,上机调试
4.1
5.sin(35.0)+x*cos(60.0)
6.6
7.0
三、改错题
1.参考书上第二页,算法与程序的区别
2.只能定义为一种类型
3.必须先定义,后使用
4.可以随时修改
5.只有char型变量才只存储一个字节
6.a还是实型变量
7.b中的值不丢失
8.i的类型不变
四、单选
1-5BDCDC6-10DCBBD11-15CBADC16-18AAA
第二章顺序结构、选择结构和循环结构的程序设计
一、简答
1.参考书上23页
2.while先判断,后执行,dowhile先执行,后判断,循环体至少执行一次
3.参考书上29页
4.continue,结束本次循环
break,结束循环
区别在于,continue只结束本次循环重新进行下次循环,而break结束整个循环
二、填空题
1.顺序结构,选择结构,循环结构
2.ifelse和switch
3.语句1,语句2
4.零
5.break,continue
6.7,0
7.>:
,双目
三、单选
1-5CBDBC6-10DBBDA11-15CBCDA16-20ACAAD21-25ADCCB26-29BCCA
四、程序分析题
1.end1end
2.num%10max=t
3.j%3
4.99
五、编程题
1.
#include
intmain(){
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'&&str[i]<='z')
++n2;
elseif(str[i]>='0'&&str[i]<='9')
++n3;
else
++n4;
}
printf("大写字母:
%d\n",n1);
printf("小写字母:
%d\n",n2);
printf("数字字符:
%d\n",n3);
printf("其他字符:
%d\n",n4);
return0;
}
2.
#include
#include
intmain(){
intarray[4],min,max,i;
for(i=0;i<4;++i)
scanf("%d",&array[i]);
min=max=array[0];
for(i=1;i<4;++i){
if(array[i] min=array[i]; elseif(array[i]>max) max=array[i]; } printf("min=%d,max=%d\n",min,max); return0; } 3. #include intmain(){ floatmoney,lixi; intyear; scanf("%f%d",&money,&year); switch(year){ case1: lixi=money*0.63/100; break; case2: lixi=money*0.66/100; break; case3: lixi=money*0.69/100; break; case5: lixi=money*0.75/100; break; case8: lixi=money*0.84/100; break; default: printf("输入错误\n"); return-1; } printf("%f\n",money+lixi); return0; } 4. #include intmain(){ intx,y; scanf("%d",&x); if(x>100) y=x+8; elseif(x<-10) y=-x+8; else y=0; printf("%d\n",y); return0; } 5. #include intmain(){ inti,j,k,m=3; for(k=5;k<12;k+=2,--m){ for(i=0;i printf(""); for(j=0;j printf("*"); printf("\n"); } return0; } 6. #include intmain(){ printf("*****\n"); printf("**\n"); printf("**\n"); printf("*************\n"); return0; } 第三章数组 一、简答 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.maxmaxmin==max 7.aasum/nx[i] 8.a[i][j]! =a[j][i]1 9.j+=2a[i]>a[j] 10.1245600000 1234560000 六、编程题 1. #include intmain(intargc,char*argv[]){ inta[11],i,n; printf("请输入十个递增排列的数列: "); for(i=0;i<10;++i) scanf("%d",&a[i]); printf("请输入要插入的数: "); scanf("%d",&n); for(i=9;i>=0&&a[i]>n;--i){ a[i+1]=a[i]; } a[i+1]=n; printf("插入后数列为: "); for(i=0;i<11;++i) printf("%d",a[i]); printf("\n"); return0; } 2. #include #include intmain(intargc,char*argv[]){ chara[100],b[100],min,i; scanf("%s%s",a,b); min=0; for(i=1;a[i]! ='\0';++i){ if(a[min]>a[i]) min=i; } strcat(b,a+min+1); a[min+1]='\0'; strcat(a,b); printf("%s\n",a); return0; } 3. #include intmain(intargc,char*argv[]){ chars1[100],chars2[100]; inti; gets(s1); gets(s2); char*string1=s1,*string2=s2; do{ i=(int)*string1-(int)*string2; }while(*string1++&&*string2++&&(! i)); for(i=0;s1[i]! ='\0'&&s2[i]! ='\0'&&s1[i]==s2[i];++i); printf("%d\n",i); return0; } 4. #include intmain(intargc,char*argv[]){ chars[100]; inti; gets(s); for(i=0;s[i]! ='\0';++i){ if(i==0||(s[i-1]==''&&s[i]>='a'&&s[i]<='z')) s[i]-=32; } puts(s); return0; } 5. #include intmain(intargc,char*argv[]){ chars1[100],s2[100]; intend,i; gets(s1); gets(s2); for(end=0;s1[end]! ='\0';++end); for(i=0;s2[i]! ='\0';++i) s1[end++]=s2[i]; s1[end]='\0'; puts(s1); return0; } 第四章函数 一、简答题 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 4.1: a=1,b=1 2: a=2,b=2 3: a=3,b=3 六、编程题 1. intfun(intyear){ if(year%400==0||(year%4==0&&year%100)) return1; else return0; } 2. #include #include voidfun1(inta,intb,intc){ floatt=sqrt(b*b-4*a*c); printf("x1=%f,x2=%f\n",(-b+t)/2.0*a,(-b-t)/2.0*a); } voidfun2(inta,intb,intc){ printf("x1=x2=%f\n",-b/2.0*a); } voidfun3(inta,intb,intc){ printf("该方程没有实根"); } intmain(intargc,char*argv[]){ inta,b,c; scanf("%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); else fun3(a,b,c); return0; } 3. #include #include intfun(inta[],intn){ inti,j=0; for(i=1;i if(i%3==0&&i%7==0) a[j++]=i; returnj; } intmain(intargc,char*argv[]){ inta[100],n,m,i; scanf("%d",&n); m=fun(a,n); for(i=0;i printf("%f",sqrt(a[i])); return0; } 第五章指针 一、简答 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 六、编程题 1. #include intmain(intargc,char*argv[]){ chars[100]; inti; gets(s); for(i=0;s[i]! ='\0';++i); printf("%d\n",i); return0; } 2. #include intfun(char*s,charc){ intcount=0; for(;*s! ='\0';++s) if(*s==c) ++count; returncount; } intmain(intargc,char*argv[]){ chars[100],c; gets(s); c=getchar(); printf("%s%c\n",s,c); printf("%d\n",fun(s,c)); return0; } 3. #include intmain(intargc,char*argv[]){ chars[100]; inti,n1,n2,n3,n4,n5; n1=n2=n3=n4=n5=0; gets(s); for(i=0;s[i]! ='\0';++i){ if(s[i]>='A'&&s[i]<='Z') ++n1; elseif(s[i]>='a'&&s[i]<='z') ++n2; elseif(''==s[i]) ++n3; elseif(s[i]>='0'&&s[i]<='9') ++n4; else ++n5; } printf("大写字母: %d\n",n1); printf("小写字母: %d\n",n2); printf("空格: %d\n",n3); printf("数字: %d\n",n4); printf("其他字符: %d\n",n5); return0; } 第六章结构类型 一、简答题 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 六、编程题 1. #include structScore{ floats1; floats2; }; intmain(){ structScorestu; scanf("%f%f",&stu.s1,&stu.s2); printf("%f\n",(stu.s1+stu.s2)/2.0); return0; } 2. #include structStudent{ charstuNo[50];//学号 floats1;//期中成绩 floats2;//期末成绩 }; intmain(){ structStudentstu[10]; inti; for(i=0;i<10;++i) scanf("%s%f%f",stu[i].stuNo,&stu[i].s1,&stu[i].s2); for(i=0;i<10;++i){ printf("学号: %s\n",stu[i].stuNo); printf("期中成绩: %f\n",stu[i].s1); printf("期末成绩: %f\n",stu[i].s2); printf("平均成绩: %f\n",(stu[i].s1+stu[i].s2)/2.0); } return0; } 第二篇数据结构基础 第七章数据结构概论 一、简答题 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、一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 计算机软件 基础 课后 习题 答案