习题一 C语言程序设计概述
一、名词解释
(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题
1. 设计程序时应遵循哪些基本原则?P4
答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点?
答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种?
答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S流程图,盒图)。
4. 有哪三种基本结构?
答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S流程图最大的区别是什么? 答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图、N-S图分别表示求解以下问题的算法。
1. 有3个数a,b,c,要求按由大到小的顺序把它们输出。 输入三个数给a,b,c 输入一个数给x 如果a将a与b的值互换 输入下一个数给x 如果a max = x 如果b n = n + 1 2. 依次将10个数输入,求出其中最大的数 输出max,min的值 和最小的数并输出。 3. 求1+2+3+…+100的值。 s=0; i=1 s=1; i=1 当i小于等于100时 当i小于等于10时 s=s+i; i = i+1; s=s*i; i = i+1; 输出s的值 输出s的值 4. 求1×2×3×…×10的值。 5. 求下列分段函数的值。 3X (X<1) 输入一个数给x 4X-1 (X=1) X<=1 Y= 5(X-1)+6 (1 6-3X (X≥5) X<1 x<5 Yes no yes no Y=3x y=4x-1 y=5x+1 y=6-3x 输出s的值 6. 求100~200之间的所有素数。 i =100 当i<=200时 n=2; flag=1; 当n< i时 i能否被n整除? yes no flag=0 n = n+1 flag=1? yes no 输出i的值 i = i+1 22 7. 求一元二次方程ax+bx+c=0的根。分别考虑d=b-4ac大于0、等于0和小于0三种情况。 四、注释下面C程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf(\"%d\\n\/*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 练习2 4-14 CB DDBCA ADDA 二、填空题 1.字母 L 或字母 l 2. 字符或%c 、 整数或%d 3.在程序运行过程中,其值可以在一定的范围内变化的量。 习题三 顺序程序设计 一、选择题 1~10:BCCBC CCDCC 二、填空题 1. printf( ) 、 scanf( ) 2. l (注:long的第1个字符) 3. 域宽,即在格式字符前加一个整数,如%5d 4. ‘\\0’ 5. e 、 g 6. 6 7. s 、 c 8. * 9. - 、 + 10. i 习题四 选择结构程序设计 一、填空题 1. 1 、 0 2. ! % + <= != && || = 3. x==0 4. 0,2 5. 20 、 0 、 0 二、选择题 1~7:DDCAD DC 三、程序阅读题 1. 595959 2. 0.500000 3. 1 4. 2 5. 6 6. a=2,b=1 7. pass warn 8. 1 习题五 循环结构程序设计 一、阅读题 二、填空题 1. 8 2. 4321 3. X 4. -1 5. 23 6. 52 7. 5 8. 3 三、 1. 18 2. 2 3. b=i+1 4. 17 5. i<=9 、 j%3!=0 6. d=1.0 、 k=k+1 、 k<=10 四、选择题 1~8:ADDAB DDA 习题六 数组 一、选择题 1~8: BDBCD CDB 12~16 CDCC D 二、填空题 1. 9 、 0 2. 先行后列 3. 连续的存储空间中 4. QuickC 5. (c=getchar( )) 、 ‘A’+i或65+i 6. ‘\\0’ 、 str1[i]-str2[i] 7. CDABC 8. 10 14 9. 6 10. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 11. 600 12. AzyD 13 4 some string *test 习题七 函数 一、选择题 1~10:BDCDD BDBAC 二、 11~18:AABBB ABA 三、填空题 1. 函数声明 2. 自动将其转换为函数定义时的类型 3. 10 4. 1100 5. 9.000000 6. i<=n 、 s 、 0 、 f(k) 7. 0.5*(x0+a/x0) 、 a,x1 8. Itis 9. 2721 10. 0246 } 习题八 用户标识符的作用域和存储类 一.选择题 1—10:ADBBC CABDB 11-12: DB 19A 二.填空题 1. 静态局部变量的作用域是 从定义点到函数体(或复合语句)结束 。 2. 凡在函数中未指定存储类别的变量,其隐含的存储类别为 auto 。 3. 变量的作用域是指变量的有效范围,在作用域内可以引用该变量。按作用域来说,变量可分为 ①局部 变量和 ②全局 变量。 4. 根据函数能否被其它源文件调用,函数可分为 ① 外部函数和 ②静态(或内部)函数。 6. 下列程序的输出结果是 2,5,1,2,3,-2 。 main() { int a=3,b=2,c=1;c-=++b; b*=a+c; { int b=5,c=12; c/=b*2; a-=c; printf(“%d,%d,%d,”,a,b,c); a+=--c; } printf(“%d,% d,%d\\n”,a,b,c); } 7. 下列程序的输出结果是 。 #include { printf(“a*a=%d\\n”,a*a); a=2;} p2() { printf(“a*a*a=%d\\n”,a*a*a);} 8. 下列程序的输出结果是 20,10 。 #include { int x=10; { int x=20; printf(“%d,”,x); } printf(“%d\\n”,x); } 9. 下列程序由两个文件组成,其运行结果是 x=2 。 /* 文件1 */ int x; sub() {x=4; } /* 文件2 */ static int x=2; main() {sub();printf(“x=%d\\n”,x); } 习题九 编译预处理 一. 选择题 1—10: DDCBC CABBB 二. 填空题 1. 下列程序的输出结果是 1000 10 。 #define N 10 #define s(x) x*x #define f(x) (x*x) main() { int i1,i2;i1=1000/s(N);i2=1000/f(N);printf(“%d %d\\n”,i1,i2);} 2. 设有如下宏定义: #define MYSWAP(z,x,y) {z=x;x=y;y=z;} 以下程序段通过宏调用实现变量a、b内容交换,请填空。 float a=5,b=16,c;MYSWAP( c ,a,b); 3. 下列程序的输出结果是 11 。 #define NX 2+3 #define NY NX*NX main() { int i=0,m=0; for(;i { int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(“%d\\n”,t);} 5. 下列程序的输出结果是 MIN 。 #define MAX(a,b) a>b #define EQU(a,b) a==b #define MIN(a,b) a{ int a=5,b=6; if(MAX(a,b)) printf(“MAX\\n”); if(EQU(a,b)) printf(“EQU\\n”); if(MIN(a,b)) printf(“MIN\\n”);} 6. 下列程序的输出结果是 0 1 1 。 #define TEST main() { int x=0,y=1,z; z=2*x+y; #ifdef TEST printf(“%d %d ”,x,y); #endif printf(“%d\\n”,z); } 习题十 指针 一.填空题 1. 指针变量是把内存中另一个数据的 首地址 作为其值的变量。 2. 能够直接赋值给指针变量的整数是 0 。 3. 如果程序中已有定义:int k; 1) 定义一个指向变量k的指针变量p的语句是 int *p=&k; 。 2) 通过指针变量,将数值6赋值给k的语句是 *p=6; 。 3) 定义一个可以指向指针变量p的变量pp的语句是 int **pp; 。 4) 通过赋值语句将pp指向指针变量p的语句是 pp=&p; 。 5) 通过指向指针的变量pp,将k的值增加一倍的语句是 (**pp)*=2; 。 4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以 是 整型数组名 、 指向整型数据的指针值 等。 5. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。 #include { char *p,s[6]; int n; p=s; gets(p); n=*p-'0'; while( *(p++) != '\\0') n=n*8+*p-'0'; printf(\"%d \\n\ } 二.选择题 1—10: BCADC AAABB 因篇幅问题不能全部显示,请点此查看更多更全内容