1、计算机软件基础课后习题答案doc第一章一、简答题1.参考书上第五页图172.因为C语言是强类型语言,语法规定必须先定义后使用,只有先定义,系统才能为其分配存储空间。3.参考书上第二页二、填空题1. 算法2. .C , .obj , .exe3. 提出问题,构造模型,选择方法,编写程序,上机调试4. 15. sin(35.0) + x * cos(60.0)6. 67. 0三、改错题1. 参考书上第二页,算法与程序的区别2. 只能定义为一种类型3 必须先定义,后使用4. 可以随时修改5 只有char型变量才只存储一个字节6. a还是实型变量7. b中的值不丢失8. i的类型不变四、单选15 BD
2、CDC 6-10 DCBBD 11-15 CBADC 16-18 AAA第二章一、简答1. 参考书上23页2. while先判断,后执行,do while先执行,后判断,循环体至少执行一次3. 参考书上29页4. continue,结束本次循环 break,结束循环区别在于,continue只结束本次循环重新进行下次循环,而break结束整个循环二、填空题1. 顺序结构,选择结构,循环结构2. if else 和switch3. 语句1 , 语句24. 零5. break , continue6 7 , 07. : , 双目三、单选1-5 CBDBC 6-10 DBBDA 11-15 CBCD
3、A 16-20 ACAAD 21-25 ADCCB 26-29 BCCA四、程序分析题1. end 1end2. num%10 max = t3. j%34. 99五、编程题1.#include int main() char str100 ; gets(str) ; int n1 , n2 , n3 , n4 , i ; n1 = n2 = n3 = n4 = 0 ; for(i = 0 ; stri != 0 ; +i) if(stri = A & stri = a & stri = 0 & stri = 9) +n3 ; else +n4 ; printf(大写字母:%dn , n1)
4、; printf(小写字母:%dn , n2) ; printf(数字字符:%dn , n3 ) ; printf(其他字符:%dn , n4) ; return 0;2.#include #include int main() int array4 , min , max , i ; for(i = 0 ; i 4 ; +i) scanf(%d , &arrayi) ; min = max = array0 ; for(i = 1 ; i 4 ; +i) if(arrayi max) max = arrayi ; printf(min = %d , max = %dn , min , max
5、) ; return 0;3.#include int main() float money , lixi ; int year ; scanf(%f %d , &money , &year) ; switch(year) case 1 : lixi = money * 0.63 / 100 ; break ; case 2 : lixi = money * 0.66 / 100 ; break ; case 3 : lixi = money * 0.69 / 100 ; break ; case 5 : lixi = money * 0.75 / 100 ; break ; case 8 :
6、 lixi = money * 0.84 / 100 ; break ; default : printf(输入错误n) ; return -1 ; printf(%fn , money + lixi) ; return 0;4.#include int main() int x , y ; scanf(%d , &x) ; if(x 100) y = x + 8 ; else if(x -10) y = -x + 8 ; else y = 0 ; printf(%dn , y) ; return 0;5.#include int main() int i , j , k , m = 3 ;
7、for(k = 5 ; k 12 ; k += 2 , -m) for(i = 0 ; i m ; +i) printf( ) ; for(j = 0 ; j k ; +j) printf(*) ; printf(n) ; return 0;6.#include int main() printf( *n) ; printf( * *n) ; printf( * *n) ; printf(*n) ; return 0;第三章一、简答1. a:数组名,a0 :数组第0号元素, &a1数组第1号元素的地址2. 不同,”a”是字符串,末尾有一个03. 2 * 3 * 2 = 12个字节二、填空题1.
8、 02. 按行存放3. 10144str145. 0三、改错1. 是02. 只能是常量3. 一定相同4. 不会给错误信息5. 没有提供字符串类型6. 不等价,”ok”末尾有一个0四、单选1-5 DBCAC 6-10 CDDCB 11-13 CDC五、程序分析题1. AzyD2. 1233. 454. 4some string * test5. 统计输入字符串中空格的个数 3 , 16. max max min = max7. a a sum/n xi aj10. 1 2 4 5 6 0 0 0 0 0 1 2 3 4 5 6 0 0 0 0六、编程题1.#include int main(in
9、t argc , char *argv) int a11 , i , n ; printf(请输入十个递增排列的数列:) ; for(i = 0 ; i = 0 & ai n ; -i) ai+1 = ai ; ai+1 = n ; printf(插入后数列为:) ; for(i= 0 ; i 11 ; +i) printf(%d , ai) ; printf(n) ; return 0 ;2.#include #include int main(int argc , char *argv) char a100 , b100 , min , i ; scanf(%s %s , a , b) ;
10、 min = 0 ; for(i = 1 ; ai != 0 ; +i) if(amin ai) min = i ; strcat(b , a + min + 1) ; amin + 1 = 0 ; strcat(a , b) ; printf(%sn , a) ; return 0 ;3.#include int main(int argc , char *argv) char s1100 , char s2100 ; int i ; gets(s1) ; gets(s2) ; char *string1 = s1 , *string2 = s2 ; do i = (int)*string1
11、 -(int)*string2; while(*string1+ & *string2+ & (!i) ); for(i = 0 ; s1i != 0 & s2i != 0 & s1i = s2i ; +i) ; printf(%dn , i) ; return 0 ;4.#include int main(int argc , char *argv) char s100 ; int i ; gets(s) ; for(i = 0 ; si != 0 ; +i) if(i = 0 | (si-1 = & si = a & si = z) si -= 32 ; puts(s) ; return
12、0 ;5.#include int main(int argc , char *argv) char s1100 , s2100 ; int end , i ; gets(s1) ; gets(s2) ; for(end = 0 ; s1end != 0 ; +end) ; for(i = 0 ; s2i != 0 ; +i) s1end+ = s2i ; s1end = 0 ; puts(s1) ; return 0 ;第四章一、简答题1. 参考书上68页,69页,72页2. 函数的返回值,函数的形参3. 实参与形参之间是值传递的关系二、填空题1. 库 用户自定义2. 33. gets()4
13、. strlen()5. strcpy() 6. 全局 局部7. 有返回值 无返回值8. return 9. void10. 前11. 调用三、改错1. 表示不同的变量2. 按照调用的先后顺序执行3. 各自有自己的存储单元4. 可以没有形参5. 分配在动态存储区6. 以该函数定义的返回值为准7. 嵌套调用指函数调用函数四、单选1-5 BDACC 6-10 DAACC 11-13 BCC五、程序分析题1. j strj-12. 本题程序是错的,第五行,for(I = m + 1 ; i+)这里少东西,所以跳过3. i n x = fun(4)4. 1: a = 1 , b = 1 2: a =
14、2 , b = 2 3: a = 3 , b= 3六、编程题1.int fun(int year) if( year % 400 = 0| (year % 4 = 0 & year % 100) return 1 ; else return 0 ;2.#include #include void fun1(int a , int b , int c) float t = sqrt(b * b - 4 * a * c) ; printf(x1 = %f , x2 = %fn , (-b + t) / 2.0 * a , (-b -t) / 2.0 *a) ;void fun2(int a , i
15、nt b , int c) printf(x1 = x2 = %fn , -b/ 2.0 * a) ;void fun3(int a , int b , int c) printf(该方程没有实根) ;int main(int argc , char *argv) int a , b , c ; scanf(%d %d %d , &a , &b , &c) ; if(b * b - 4 * a *c 0) fun1(a , b , c) ; else if(b * b - 4 * a * c = 0) fun2(a , b , c) ; else fun3(a , b , c) ; retur
16、n 0 ;3.#include #include int fun(int a , int n) int i , j = 0 ; for(i = 1 ; i n ; +i) if(i % 3 = 0 & i % 7 = 0) aj+ = i ; return j ;int main(int argc , char *argv) int a100 , n , m , i ; scanf(%d , &n) ; m = fun(a , n) ; for(i = 0 ; i m ; +i) printf(%f , sqrt(ai) ; return 0 ;第五章一、简答1. 不一定,这要看指针的类型,比
17、如 int * p ,则p + 1 就增加两个字节2. 定义指针时表示定义的变量是指针类型,引用指针时,表示指针指针指向的变量3. p + n , p n ,其中n是int类型二、填空题1. 地址2. & *3. 指针4. *p5. 10066. malloc7. a+i *(a+i)8. 39. b 0三、改错题1. 只能存放同类型的变量的地址,比如int *只能存放int型变量的地址2. 这个说法是正确的,没有错误3. 不是,指的是指针所指向的变量的类型4. 只能是同类型的指针或者&a这样的地址值5. 是可以改变的四、单选1-5 CDDAA 6-10 BCDDD五、程序分析题1. *x t
18、2. r + bu *x3. 10 4. CDG5. 80,-206. 57. 55 1711717六、编程题1.#include int main(int argc , char *argv) char s100 ; int i ; gets(s) ; for(i = 0 ; si != 0 ; +i) ; printf(%dn , i) ; return 0 ;2.#include int fun(char *s , char c) int count = 0 ; for( ; *s != 0 ; +s) if(*s = c) +count ; return count ;int main
19、(int argc , char *argv) char s100 , c ; gets(s) ; c = getchar() ; printf(%s %cn , s , c ) ; printf(%dn , fun(s , c) ; return 0 ;3.#include int main(int argc , char *argv) char s100 ; int i , n1 , n2 , n3 , n4 , n5 ; n1 = n2 = n3 = n4 = n5 = 0 ; gets(s) ; for(i = 0 ; si != 0 ; +i) if(si = A & si = a
20、& si = 0 & si x a12. 1 33. “ab” “cd”三、改错题1. 可以同名2. 可以含有3. 不可以四、单选题BACBDD五、程序分析题1. Zhao2. 10 x3. 200 y4、- .5、 36 40 206、max = personi.age min = personi.age六、编程题1.#include struct Score float s1 ; float s2 ; ;int main() struct Score stu ; scanf(%f %f , &stu.s1 , &stu.s2) ; printf(%fn , (stu.s1 + stu.s2
21、)/2.0) ; return 0 ;2.#include struct Student char stuNo50 ; /学号 float s1 ; /期中成绩 float s2 ; /期末成绩 ;int main() struct Student stu10 ; int i ; for(i = 0 ; i 10 ; +i) scanf(%s %f %f , stui.stuNo , &stui.s1 , &stui.s2) ; for(i = 0 ; i next = p-next p-next = q5、 p-next s-data t6、p-next = head-next head-n
22、ext = p7、 p-next-next8、head-next = NULL9、 p-prior s-next = p s10、 O(1)三、改错题1、 一定相邻2、 该说法是正确的3、该说法是正确的4、需要移动节点5、不会发生溢出现象6、 链表四、单选AABBA BCAB 10题为CDAB CB五、程序分析1、 删除单链表2、 p-next != q-prior p = p-next q = q-prior3、 count = 0 p = p-next 六、程序设计题1.#include #define MAX 100struct Link int dataMAX ; int n ;int findMin(struct
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1