C语言 复习题.doc
山东理工大学成人高等教育 C语言复习题一、判断正误( )1main函数必须位于整个C语言程序的开头。( )2在C语言程序中不能使用二进制整数。( )3101和'n'都代表单个字符。( )4C语言程序中的变量必须先定义后使用。( ) 5a=3是一个赋值表达式。( ) 6一个函数可以有多个返回值。( ) 7一个数组名实际上是代表一个地址。 ( )8C语言中不区分字母的大小写。( )9'a'和'n'都是字符型常量。( )105%3的结果是2。( )11在C语言中表示逻辑运算结果时,以1表示真,以0表示假。( )12计算字符串长度时,0不包括在内。( )13在一条if-else语句中,若if和else之间有多条语句,则必须用花括号括起来。( )14一个数组的所有元素具有相同的数据类型。二、填空1C语言的标识符只能由字母、和组成。2用于从循环体中跳出的语句是语句。3一个函数是由和两部分组成的。4用双引号括起来的若干个字符称为常量。5有符号整数在内存中是以二进制码形式存储的。6若有int n=3.96;则n的结果为。7若有int a=5;则printf(“%d”,+a);的结果为。 8若有char s10="abcd1234"则strlen(s)的结果为。9C语言程序的基本组成单位是 ,C程序的执行总是从 函数开始。10表达式10!=9的值是 ;若a=3,b=5,则表达式a&&!b的值是 11若x=10,y=5,则x>y?2:3的结果为 。12已知字母A的ASCII码为十进制数65,且c为字符型,则执行语句c'A'+3;后,c中的值为_;若有说明语句:char c'172';则变量c包含 个字符。13若有说明:int i,j=7,*p=&i;,执行i=j;语句后*p的值为 。三、写出下列程序的运行结果1main() 运行结果为:int f6=1,2,3,4,5,6,i;for(i=5;i>=0;i-)printf("%dn",fi); 2main() 运行结果为:int f5,i; for(i=0;i<=4;i+)fi=i*i;printf("%dn",fi);3下面程序的输出结果是 #include <stdio.h> main() char c1,c2; c1='B' c2=c1+2; putchar(c1); putchar('n'); putchar(c2); 4下面程序的输出结果是 void swap(int x,int y) int c=0;c=x;x=y;y=c;printf(“%d,%dn”,x,y); main() int a=10,b=20;swap(a,b);printf(“%d,%dn”,a,b);四、补足程序1程序功能:用辗转相除法求最大公约数。main( )int m,n,r;scanf("%d%d",&m,&n);while( )r= ; m= ; n= ;printf("gcd=%dn", );2程序功能:从键盘输入10个整数,然后按照相反的顺序输出。 main() int i,a10;for(i=0; ;i+)scanf (%d,);for ( ; ; )printf ("%d ",ai);3下面程序功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 #include <stdio.h> main() int i, j; for(i=0; i<10; i+) j=i*10+6; if(3) ) continue; printf("%d",j); 五、编程序 1用循环编程序求10的阶乘(15分)2已知。从键盘输入x的值,求y的值并输出。(15分)3用循环编程序求20+21+22+231。(15分) 4从键盘输入若干个学生某门课程的成绩,求出其平均分并输出。(15分)5不调用strcpy函数,编程序实现字符串的复制。(15分)6 先写出求k!的被调函数,再写出调用该函数求6!+9!的主调函数。(15分)7.从键盘输入一个字符,若是大写字母则转换成小写字母,若是其它字符则保持不变,然后输出。8.编写计算s=1+2+3+100的程序。9.若k为正整数,编程序求K!(阶乘)。10.从键盘输入10个数存入一维数组中,输出其中的最大数和最小数及其下标。参考答案一、判断正误1、错2、对3、对4、对5、对6、错7、对8、错9、对10、对11、对12、对13、对14、对。二、填空1.数字 下划线 2. break 3.函数头 函数体 4.字符串 5. 补 6. 3 7. 6 8. 8 9. 函数 main 10. 1 0 11. 2 12. D 1 13. 7三、写出下列程序的运行结果1(每个数1分) 6 5 4 3 2 12. 014916(每个数1分)3B (2分) D (2分)420,10 (3分)10,20 (3分)四、补足程序1.n!=0 m%n n r m2. 1. i<=9 &ai i=9 i>=0 i3. (2)str1 (3分)五、编程序1.main()long p; int i; p=1; for(i=1;i<=10;i+) p=p*i; printf("p=%ldn",p);2.main()float x,y; (2分) scanf("%f",&x); (2分) if(x>0) (1分) y=2*x+1; (2分) if(x=0) (1分) y=1; (2分) if(x<0) (1分) y=2*x-1; (2分) printf("y=%fn",y); (2分)3.#include <math.h>main()float s; int i; s=0; for(i=0;i<=63;i+) s=s+pow(2,i); printf("s=%fn",s);4. #include "stdio.h"main()float g,sum=0,ave;int n=0;while(1)scanf("%f",&g);if(g=-1)break;sum=sum+g;n+;ave=sum/n;printf("平均成绩=%fn",ave);5.#include <stdio.h>#include <string.h>main( ) char t100,s100="Hello" int i; i=0; while(i<=strlen(s) ti=si; i+; puts(t); 6.#include <stdio.h>float fact(int k) float f;int i;f=1;for(i=1;i<=k;i+) f=f*i; return f;main()float s; s= fact(6)+fact(9);printf("s=%fn",s);7.输入三角形边长,求面积#include <math.h>(2分)#include <stdio.h>void main() float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); (2分) s=1.0/2*(a+b+c); (2分) area=sqrt(s*(s-a)*(s-b)*(s-c); (2分) printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn",a,b,c,s); (2分) printf("area=%7.2fn",area); (2分)8从键盘输入一个字符,若是大写字母则转换成小写字母,若是其它字符则保持不变,然后输出。#include <stdio.h> (2分)main() char c; (2分) c=getchar(); (2分) if(c>=A&&c<=Z) (2分) c=c+32; (2分) putchar(c); (2分)9编写计算s=1+2+3+100的程序。main() int s,i; (2分) s=0; (2分) for (i=1;i<=100;i+) (3分) s=s+i; (3分) printf(“%d”,s); (2分)10若k为正整数,编程序求K!(阶乘)。main() int k,f,i; (2分) f=1; (2分) scanf(“%d”,&k); (2分) for( i=1;i<=k;i+) (2分) f=f*i; (2分) printf(“%d”,f); (2分)