C程序设计复习资料含复习资料
C程序设计复习要点
第一章概述
1.C程序的构成与结构特点
2.C程序上机调试过程与流程
第二章数据类型、运算量与表达式
1.数据类型的种类(基本数据类型和构造数据类型)
2.常量的数据类型及其表示(表示方法、存储字节数与表数范围)——整、实、字符、字符串和转义字
符
3.变量的命名、定义方法与赋初值
4.各种表达式及其运算规则——优先级、结合性、类型自动转换与强制转换
●算术运算符、表达式及其构造(注意“/”和“%”特殊性)
●自增、自减运算符及其简单表达式运算
●赋值运算符及其表达式(注意复合赋值运算符的运算方法)
●逗号运算符及其表达式
第三章流程控制
1.赋值语句的一般形式、赋值过程及赋值规则(注意左右数据类型的一致或兼容)
2.输入和输出函数的格式、功能及用法(只要求常用的格式控制符d, f, c, s),提醒注意:
●格式输出中域宽和小数位数的控制
●格式输入与输出中普通字符的原样输入和输出问题
●熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()
3.关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合
性)
4.关系表达式与逻辑表达式的构造(根据已知条件写表达式)
5.if语句的三种形式:if …语句、if …else …语句、if 语句的嵌套
●if 语句的格式与用法:简单if、嵌套if、并列if
●逻辑关系与执行过程
●嵌套规则(重点掌握if …else …if …else …if …else)
6.switch语句的格式与用法
7.*熟练使用if和switch语句阅读和编写较为简单的选择结构程序
8.三种循环语句:while() …、do …while()、for()的格式、执行过程及其用法
●循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改
注意循环期间与结束时循环控制变量的取值问题
9.结合例题理解和区别break与continue语句的作用及其用法
10.本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等
11.*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序
第四章复杂数据类型
1.一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)
2.字符数组的定义、初始化及其引用(字符串输入、输出、存储与处理)
3.常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()
4.数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等
5.*熟练使用数组并结合以上算法阅读和编写较为简单的程序
6.指针的概念:指针、指针变量、指针运算(*、&、++、--、+、-)
7.变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)
8.了解指针数组与二级指针的概念和定义
9.*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求
长度等)
10.结构体与共用体的概念、定义与引用(仅限概念)
第五章结构化程序设计与应用
1.熟悉程序的三种基本结构:顺序、选择和循环
2.*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法
第六章函数与编译预处理
1.掌握函数的定义、声明和调用方法及参数传递方式
2.*结合相关例题掌握一般函数和递归函数的定义与使用
3.熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期
4.了解内部函数与外部函数的定义及调用规则
5.掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)
6.了解文件包含的作用及其使用场合
第七章文件
1.了解文件的概念
2.熟悉文件打开、关闭及各种与文件读写有关函数的格式与用法特别提醒:以上带*部分主要涉
及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现
3ae bc C语言程序设计参考题型
说明:★本题仅反映考试的题型,作为考前复习参考。
★要通过这些典型题目,掌握复习要点中所列内容。所给题目不可死记硬背,而是通过题目掌握其涉及要点和重要算法。
一、单项选择题
1.C程序的基本构成单位是【C 】
A)文件B)命令C)函数D)语句
2.下列叙述中错误的是【C 】
A)C程序中main( )函数的位置可以任意
B)C程序可以由多个程序文件组成, 而一个程序文件又可以由一个或多个函数组成
C)每个程序文件都有一个main( )函数
D)C程序总是从main( )开始执行,也是由它结束
3.将C源程序转换为目标程序的过程称为【B 】
A)编辑B)编译C)连接D)运行
4.C语言中最基本的数据类型包括【B 】
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、逻辑型、字符型D)整型、实型、字符串型
5.以下不合法的用户标识符是【C 】
A)j2_KEY B)Double C)4d D)_8_
6.C源程序中不能表示的数制是【A 】
A)二进制B)八进制C)十进制D)十六进制
7.以下合法的字符常量的是【A 】
A)'\x13' B)'\081' C)'65' D)"\n "
8.以下选项中,能用作数据常量的是【D 】
A)o115 B)0118 C)1.5e1.5 D)115L
9.C语言中,要求运算对象必须是整型数据的运算符是【A 】
A)% B)/ C)\ D)&&
10.表示数学关系“x≥y≥z”的C语言表达式是【C 】
A)x>=y>=z B)x>=y || y>=z C)x>=y&&y>=z D)x≥y≥z
11.若变量均已正确定义并赋值,以下合法的C语言赋值语句是【A 】
A)x=y==5; B)x=n%2.5; C)x+n=j; D)x=5=4+1;
12.设有定义:int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是【A 】
A)k++ B)k+=1 C)++k D)k+1
13.若有代数式:
以下错误的C语言表达式是【 C 】
A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3
14.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为【C 】
A)int B)float C)double D)不确定
15.若p和x已经正确定义,x已赋值,并且p=&x,则下列关系表达式之值为1的是【B】
A)p==x B)*p==x C)&p==x D)*x==p
16.当用户要求输入的字符串中含有空格时,应使用的输入函数是【C 】
A)scanf() B)getchar() C)gets() D)getc()
17.下列能输出字符数组str中字符串的语句是【B 】
A)printf("%c",str[0]); B)printf("%s",str);
C)printf("%s",str[]); D)putchar(str);
18.有输入语句:
scanf("B%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为【 B 】A)5 3<回车> B)5,3<回车> C)a=5 b=3<回车> D)a=5,b=3<回车> 19.定义如下变量和数组:
int j;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是【 C 】for(j=2; j>=0; j--)
printf("%2d",x[j][2-j]);
A)1 5 9 B)1 4 7 C)7 5 3 D)3 6 9
20.执行下面程序后,a的值是【B 】
#define SQR(x) x*x
void main( )
{ int a=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
}
A)10 B)5 C)2 D)1
21.简单if语句的基本形式:if(表达式)语句【D 】
其中“表达式”
A)必须是逻辑表达式B)必须是关系表达式
C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式
22.在嵌套使用if语句时,C语言规定else总是【C 】
A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对
23.下列叙述中正确的是【D 】
A)break语句只能用于switch语句
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
24.有以下程序段:
x=-1;
do
x=x*x;
while(!x);
执行时,循环体执行的次数为【B 】A)0 B)1 C)2 D)不确定
25.以下不正确的if语句形式是【C 】
A)if(x>y&&x!=y); B)if(x==y) x+=y;
C)if(x!=y) scanf("%d",&x) else scanf("%d",&y); D)if(x 26.以下程序的输出结果是【C 】 void main( ) { int x=2,y=-1,z=2; if(x if(y<0) z=0; else z+=1; printf("%d\n",z); } A)0 B)1 C)2 D)3 27.以下能正确计算1×2×3×…×10的程序段是【A 】 A)i=1,s=1; B) s=1;i=1; do while(i<=10) {s=s*i;i++;} s=s*(++i); while(i<11); C)for(i=1,s=0;i<=10;i++) D) for(i=1,s=1;;i++) s=s*i; s=s*i; 28.若j为整型变量,则以下循环执行次数是【C 】 for(j=0;j==0;) printf("%d",j--); A)无限次B)0次C)1次D)2次 29.若有说明:int a[10];则对a数组元素的正确引用是【C 】 A)a[3.5] B)a(8) C)a[6-5] D)a[10] 30.若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x 数组元素的是【B 】 A)*p B)x[5] C)*(p+1) D)*x 31.C中,一个char类型的数据在内存中占用的字节数是【A 】 A)1 B)2 C)4 D)8 32.设有程序段: int k=5; while (k<=0) k--; 则下列描述中正确的是【 C 】A)while循环执行5次B)循环是无限循环 C)循环语句一次也不执行D)循环体语句执行一次 33.下面程序段的运行结果是【B 】 char c[5]={ 'a', 'b', '\0', 'c', '\0' }; printf(“%s”, c); A)'a''b' B)ab C)Abc D)"abc" 34.以下不正确的字符串赋值语句是【C 】 A)char *s; s="abcde"; B)char s[ ]="abcde"; C)char s[10]; s="abcde"; D)char *s="abcde"; 35.设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是【B 】 A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=p2-p1; 36.下面程序的输出结果是【A 】 void main( ) { char s[]= "ABCD"; char *p; for (p=s;p printf(“%s\n”, p); } A)ABCD B) A C)D D) ABCD BCD B C ABC CD C B AB D D A A 37.以下关于C函数的定义和调用描述正确的是【B 】 A)函数的定义可以嵌套,但函数的调用不可嵌套 B)函数的调用可以嵌套,但函数的定义不可嵌套 C)函数的定义和调用均可以嵌套 D)函数的定义和调用均不可嵌套 38.以下关于变量的存储类型和作用域说法错误的是【C 】 A)函数内定义的变量默认存储类型为auto,函数调用结束时释放其值 B)静态局部变量的生存期虽然被延长,但作用范围依然只限于所在函数内有效 C)寄存器变量主要用于使用频度较高的变量,其资源依然使用计算机内存 D)外部变量可以跨文件使用,但静态外部变量不允许跨文件使用 39.以下关于变量的作用域叙述不正确的是【D 】 A)在函数内部定义的变量是局部变量 B)函数中的形式参数是局部变量 C)局部变量的作用范围仅限于其所在函数或复合语句 D)全局变量的作用范围仅限于其所在的文件 40.以下关于C函数参数说法不正确的是【B 】 A)实参可以是常量、变量和表达式B)形参可以是常量、变量和表达式 C)实参和形参可以为任意数据类型D)实参与对应的形参类型一致 41.以下关于C函数返回值的叙述正确的是【D 】 A)被调函数中只有使用return语句才能返回主调函数 B)使用一个return语句可以返回多个函数值 C)函数返回值类型取决于return语句中的表达式类型 D)函数返回值类型取决于定义该函数时所指定的类型 42.以下数组定义中错误的是【B 】 A)int x[][3]={0}; B)int x[2][3]={{1,2},{3,4},{5,6}}; C)int x[][3]={{1,2,3},{4,5,6}};D)int x[2][3]={1,2,3,4,5,6}; 43.若有定义语句:char s[10]="1234567\0\0";则strlen(s)的值是【A】 A)7 B)8 C)9 D)10 44.给定以下程序段: int n=10; while (n>6) { n--; printf(“%3d”,n); } 以上程序段输出结果是【D】 A)10 9 8 B)9 8 7 C)10 9 8 7 D)9 8 7 6 45.若i,j已定义为int型,则以下程序段中内循环总的执行次数是【C 】 for (i=5; i>0; i--) for (j=1; j<6; j++) {……} A)30 B)24 C)25 D)20 46.若已定义:float *p, m=3.14159; 则使p指向m正确的赋值语句是【B 】 A)p=m; B)p=&m; C)*p=m; D)*p=&m; 47.若已定义:char s[10]; 则下面表达式中不能作为s[1]地址的是【A 】 A)s++ B)s+1 C)&s[0]+1 D)&s[1] 48.已知:int a=3, b=5, t; 要将a和b中的数值进行交换,错误 ..的程序段是【C 】A)a=a+b; b=a-b; a=a-b; B)t=a; a=b; b=t; C)t=a; b=a; a=t; D)t=b; b=a; a=t; 49.关于C程序中的#include ..的描述是【 D 】A)它是C语言的预编译命令B)在程序中该行尾部不需要分号 C)用于将math.h包含进来D)math.h是一个函数 50.下列C程序段的输出结果是【C 】 int a=0; switch(a) { case 0: printf(“a=0”); case 1: printf(“a=1”); default: printf(“default”); } A)a=0 B)a=0default C)a=0a=1default D)default 51.已知:int a, x, y; 有语法错误 ..的C语句是【 B 】A)while(x) y++; B)while(x+y=0) a++; C)while(x 52.对于do … while( )语句,错误 ..的说法是【C 】A)用条件控制循环体的重复执行B)循环体至少要执行一次 C)循环体有可能一次也不执行D)循环体中可以包含若干条语句 53.已知:int a, x, y; 有语法错误 ..的C语句是【 B 】A)while(x) y++; B)while(x+y=0) a++; C)while(x 54.已知:int a[5], *p=a; 利用p为数组元素a[4]赋值的正确C语句是【B】 A)scanf(“%d”, p+3); B)scanf(“%d”, p+4); C)scanf(“%d”, *(p+3)); D)scanf(“%d”, *(p+4)); 55.对于C语句:char *a[2]={“abcd”, “ABCD”}; 叙述正确的是【B 】 A)a是指针变量B)a是指针数组C)a是数组指针 D)a是字符串 56.设有如下说明语句: struct ex { int x; float y; char z; } example; 则下面叙述中不正确的是【 B 】 A)struct是结构体类型的关键字B)example是结构体类型名 C)x, y, z都是结构体成员名D)struct ex是结构体类型名 57.有以下程序 #include struct ord { int x,y;} dt[2]={1,2,3,4}; void main() { struct ord *p=dt; printf(“%d,”,++p->x); printf(“%d\n”,++p->y); } 程序的运行结果是【B 】 A)1,2 B)2,3 C)3,4 D)4,1 58.设有以下定义【D 】 union data { short int d1; char d2; }demo; 则下面叙述中错误的是____。 A)变量demo与成员d1所占的内存字节数相同 B)变量demo中各成员的地址相同 C)变量demo和各成员的地址相同 D)若给demo.d1赋256后, demo.d2中的值是256 59.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为【B 】 A)EOF B)非0值C)0 D)NULL 60.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); 其中buffer代表的是【C 】 A)一个文件指针,指向待读取的文件 B)一个整型变量,代表待读取的数据的字节数 C)一个内存块的首地址,即读入数据存放的地址 D)一个内存块的字节数 二、填空题 1.赋值表达式x*=y+5的另一种书写形式为___ x=x*(y+5)_______。 2.已知a=10,b=20,c=3,则表达式!a>b || c的值为____1_____。 3.表达式(int)((double)(5/2)+2.5)的值是____4______。 4.若j=3,则表达式(++j)+(j++)的值为_____8_____。 5.若a的原值为4,则表达式“a*=a-=3”运算后,a的值是____1______。 6.若a=5、b=3、c=1,则表达式“a>b>c”的值为___0_______。 7.若有定义: int a=7; float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值为___2.5_______。 8.整数m既能被3整除又能被4整除的逻辑表达式为____(m%3= =0)&&(m%4= =0) ______。 9.写出代数式0 10.写出判断字符变量c所存字符是否为字母的逻辑表达式为c>=’a’&&c<=’z’||c>=’A’&&c<’Z’。 11.实现变量a和b交换的语句或语句序列是a=a+b; b=a-b; a=a-b; 。 12.若整型变量a 和b 中的值分别为7 和9,要求按以下格式输出a和b的值: a=7 b=9 请完成输出语句:printf("a=%d\nb=%d", a, b); 13.若有定义:double a[10][5]; 则数组a中行下标最大值为__9__,列下标最大值为__4__。 14.若有定义:int a[ ]={1,4,6,5,8,9}; 则*(a+5) 的值为____9______。 15.设有如下定义int a[5][6],*p; 使p指向数组元素a[4][2]的语句为__ p=&a[4][2]; _______。 16.若有定义:int a[10],*p=a; 则元素a[5]的值用p表示的形式是___ *(p+5)_______。 17.若有定义:int *p[4]; 则标识符p表示_长度为4的一维指针数组________。 18.凡是函数中未指定存储类型的局部变量,其默认的存储类型为____ auto ______。 19.函数有内部函数和外部函数,函数定义时用来说明该函数仅限本文件调用的关键字是__static______。 20.未加特别说明(说明为静态)的全局变量是外部变量,能被其它文件使用,而在引用它的文件中,需 要用关键字____extern_____说明。 三、程序填空 1.下面程序的功能是:从键盘输入一个字符,若是大写字母,则转换为小写字母并输出,若为小写字母 则直接输出,请在_____处填上合适内容,使程序完整。 include void main( ) { char ch; ch=getchar( ); if (ch>='A'&&ch<='Z ) ch+=32; printf(“%c”, ch); } 2.下面程序的功能是:求1~100间的偶数和,请在_____处填上合适内容,使程序完整。 #include void main( ) { int num, sum=0; for (num=2; num<=100; num=num+2) _ sum=sum+num ; printf("1-100间的偶数和是:%d\n", sum); } 3.下面程序段是求n!的递归函数,请将函数补充完整。 double fac(int n) { double result; i f (n= =1) result=1; e lse result= n*fac(n-1); r eturn(result); } 4.以下程序的功能是:输入一整数n,判断是否为素数。 #include void main( ) { int i, n; scanf(“%d”,&n); for (i=2; _i if (n%i==0) break; if (i>=n) printf(“%d is a prime number.\n”, n); else printf(“%d is not a prime number.\n”, n); } 5.如下程序实现字符串逆序,请在_____处填上合适内容,使程序完整。 #include #include void main() { char *p1, *p2, c, s[50]; s canf(“%s”, s); p1=s; p2=s+strlen(s)-1; f or(; p1 { c=*p1;*p1=*p2;*p2=c ; } p rintf(“The new string is %s\n”, s); } 6.如下程序判断字符串是否回文,请在_____处填上合适内容,使程序完整。 #include #include void main() { char *p1, *p2, c, s[50]; g ets(s); p1=s; p2= s+strlen(s)-1; f or(; p1 if( *p1!=*p2 ) break; i f( p1 e lse printf(“该字串回文\n”); } 7.下列程序用来求任意两整数的最大公约数,请在_____处填上合适内容,使程序完整。 #include void main( ) { int temp, m, n, x; printf("Enter two numbers:\n"); scanf("%d,%d", &m, &n); if (m for(x=n; ; x--) if (m%x==0&&n%x==0) __break__; printf("\n最大公约数为:%d\n",x); } 8.下列程序用“起泡法”对输入的字符串降序排序,请在_____处填上合适内容,使程序完整。 #include #include void main( ) { void sort(char *s); char str[20]; printf("请输入字符串:\n"); scanf("%s", str); sort(str); printf("排序结果:\n"); puts(str ); } void sort(char *s) { int i, j, n; char c; n=strlen(s); for(i=0; i for(j=i; j if(s[j] } 四、阅读程序 1.include void main( ) { char ch; int cnt1=0,cnt2=0; while ((ch=getchar( ))!='\n') if (ch>='a'&&ch<='z') cnt1++; else cnt2++; printf("COUNT=%d\n",cnt1); } 若输入“This is a C program.”,运行结果:_____ COUNT=13______ 2.#include void main( ) { int i, j, temp; int a[]={0,1,2,3,4,5,6,7,8,9}; for(i=0, j=9; i {temp=a[i]; a[i]=a[j]; a[j]=temp;} for(j=0; j<10; j++) printf("%2d", a[j]); } 运行结果:_9 8 7 6 5 4 3 2 1 0_ 3.#include #include void main( ) { char str1[80]="good",str2[]="morning"; int i, j; for(i=strlen(str1),j=0;str2[j]!='\0'; i++, j++) str1[i]=str2[j]; str1[i]='\0'; printf("string1=%s",str1); } 运行结果:_ string1=goodmorning 4.#include void main( ) { int i, j, pos; float val, a[10]; for(i=0; i<10 ;i++) scanf("%f", &a[i]); val=a[0]; for(j=0; j<10; j++) if (a[j]>val) {val=a[j]; pos=j;} printf("Max=%f,position:%d", val, pos); } 本程序的功能是:从键盘输入10个数存到数组a中,求10个数的最大值及其位置 当程序运行时,从键盘输入“1 0 2 9 3 8 4 7 5 6”,运行结果:Max=9.000000,position:3 5.#include float average(int x[], int n) { int i; float sum=0; for(i=0;i sum+=x[i]; return(sum/n); } void main( ) { int a[5]={2,4,6,8,10}; float rst; rst=average(a,5); printf("result=%f\n",rst); } 运行结果:result=6.000000___ 6.给定如下程序: #include void main( ) { char grade; scanf(“%c”, &grade); switch (grade) { case 'A': printf("85—100\n"); break; case 'B': printf("70—84\n"); break; case 'C': printf("60—69\n"); break; case 'D': printf("<60\n"); break; default: printf("error\n"); } } 当程序运行时,从键盘输入“b”,输出的结果是:_error____。 7.给定如下程序: #include void main( ) { int a[5]={2,5,3,7,6}, i, j, t; for (i=0; i<4; i++) for (j=i+1; j<5; j++) if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for (i=0; i<5; i++) printf(“%3d”, a[i]); } 该程序的功能是:将a数组中的元素从小到大排序;输出的结果为:2 3 5 6 7。 8.给定如下程序: #include void fun( ) { auto int b=0; static int c=4; b++; c++; printf("b=%d c=%d\n", b, c); } void main( ) { int i; for (i=0; i<3; i++) fun( ); } 运行结果是: b=1 c=5 b=1 c=6 b=1 c=7 9.给定如下程序: #include #include void main() { c har *p1, *p2, c, s[50]; g ets(s); p1=s; p2=s+strlen(s)-1; f or(; p1 { c=*p1; *p1=*p2; *p2=c; } p rintf(“The new string is %s\n”, s); } 此程序的功能是:从键盘输入一字符串存放到数组s中,将此字符串逆序输出。 当程序运行时,从键盘输入“abc we #y”,输出的结果是:The new string is y# ew cba 10.给定如下程序: #include void main() { i nt fun(char *p); c har str[80]; g ets(str); printf(“LEN=%d\n”, fun(str)); } int fun(char *p) { int n=0; while(*p++) n++; return(n); } 此程序的功能是:用函数fun计算字符串的长度,主函数输入字符串,输出字符串长度。 六、按要求编程 1.编程计算1!+2!+3!+…+20!。 #include void main() { float s=0,t=1; int n; for(n=1;n<=20;n++) { t=t*n; s=s+t; } printf("1!+2!+....+20!=%e\n",s); } 2.统计由键盘输入的任一字符串中字母、数字和空格的个数。 #include void main( ) { char ch; int letters=0,digit=0,space=0; while ((ch=getchar( ))!='\n') { if (ch>='a'&&ch<'z'||ch>='A'&&ch<='Z') letters++; else if(ch>='0'&&ch<='9') digit++; else if(ch==' ') space++; } printf("letters=%d,digit=%d,space=%d",letters,digit,space); } 3.编写程序找出1—100之间的素数,并统计素数的个数。 #include #include void main() { int m,k,i,n=0; for(m=1;m<=100;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) { printf("%3d",m); n=n+1; } if(n%10==0) printf("\n"); } printf("\ntotal number is=%d",n); } 4.从键盘输入10个数,找出最大值与最小值,并计算它们的平均值。#include void main() { float a[10],aver,sum,max,min; int i; for(i=0;i<10;i++) scanf("%f",&a[i]); max=min=sum=a[0]; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; if(a[i] sum=sum+a[i]; } aver=sum/10; printf("aver=%f,max=%f,min=%f",aver,max,min); } 5.将键盘输入的任意字符串进行逆序并输出。方法1: #include #include void main() { char s[80],t; i nt i,j; g ets(s); j= strlen(s)-1; f or(i=0; i { t=s[i];s[i]=s[j];s[j]=t; } p rintf(“The new string is %s\n”, s); } 方法2: #include #include void main() { char s[80],t; i nt i,j; g ets(s); j= strlen(s); f or(i=0; i { t=s[i];s[i]=s[j-1-i];s[j-1-i]=t; } p rintf(“The new string is %s\n”, s); } 方法3: #include #include void main() { char *p1, *p2, c, s[50]; g ets(s); p1=s; p2=s+strlen(s)-1; f or(; p1 { c=*p1; *p1=*p2; *p2=c; } p rintf(“The new string is %s\n”, s); } 6.判断由键盘输入的字符串是否为回文。方法1: #include #include void main() { char s[80]; i nt i,j; g ets(s); j= strlen(s)-1; f or(i=0; i if( s[i]!=s[j] ) break; i f( i e lse printf(“该字符串回文”); } 方法2: #include #include void main() { char s[80]; i nt i,j; g ets(s); j= strlen(s); f or(i=0; i if( s[i]!=s[j-1-i] ) break; i f( i e lse printf(“该字符串回文”); } 方法3: #include #include void main() { char *p1, *p2, c, s[50]; g ets(s); p1=s; p2= s+strlen(s)-1; f or(; p1 if( *p1!=*p2 ) break; i f( p1 e lse printf(“该字串回文\n”); } 7.找出所有三位数中的水仙花数(各位数字的立方和恰好是本数)。 #include void main() { int i,j,k,m; for(m=100;m<1000;m++) { i=m/100; j=m/10-i*10; k=m%10; if(m==i*i*i+j*j*j+k*k*k) printf("%4d",m); } } 8.已知Fibonacci数列的前两项为1,其后各项为前两项之和。用递归函数输出此数列的前20项,每行 输出10个数。 #include void main( ) { int f(int n); int i; for (i=1;i<=20;i++) { printf("%6d",f(i)); if (i%10==0) printf("\n"); } } int f(int n) { int t; if (n==1||n==2) t=1; else t=f(n-1)+f(n-2); return (t); } 9.写一个函数求两个整数的最小公倍数,函数原型为:int gb(int m, int n),在主函数中从键盘输入两个整 数,然后调用gb()函数,并输出结果。 #include int gb(int m, int n) { int x; for(x=n; ; x++) if (x%m==0&&x%n==0) break; return x; } void main() { int m, n; printf("Enter two numbers:\n"); scanf("%d,%d", &m,&n); printf("%d",gb(m,n)); } 10.打印杨辉三角形(10行)。要求:使用二维数组和循环语句实现。 1 1 1 1 2 1 1 3 3 1 …… 方法1: #include void main( ) { int a[10][10],i,j; for (i=0;i<10;i++) { for (j=0;j<=i;j++) { if (i==j||j==0) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; printf("%6d",a[i][j]); } printf("\n"); c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 , 习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); } B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障 一、选择题(共40分,每小题2分) 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。 A. main B. MAIN C. name D. function 题目2 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目3 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 题目5 每个C语言程序文件的编译错误被分为()。 A. 1类 B. 2类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} D. {y=10} 题目7 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。 A. 表达式 B. 语句 C. 参数表 D. 函数体 题目9 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。 A. 尖括号 B. 双引号 C. 单引号 D. 花括号 题目10 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // B. /* C. */ D. ** 题目11 在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为()。 A. char B. int C. float D. double 题目12 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。 第一章测试 提示:选择题选项顺序为随机排列,若要核对答案,请以选项内容为准1 【单选题】 (20分) C语言是一种( ) A. 低级语言 B. 高级语言 C. 汇编语言 D. 机器语言 2 【单选题】 (20分) 下列各项中,不是C语言的特点是()。 A. 数据类型丰富,可移植性好 B. 语言简洁、紧凑,使用方便 C. 有较强的网络操作功能 D. 能实现汇编语言的大部分功能 3 【单选题】 (20分) 下列叙述的是()。 A. C程序中的每条命令都用一个分号作为结束符 B. C程序中的每条语句都用一个分号作为结束符 C. C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 D. C程序中的变量必须先定义,后使用 4 【单选题】 (20分) 一个C程序的执行是从()。 A. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 B. 本程序文件的第一个函数开始,到本程序main函数结束 C. 本程序的main函数开始,到本程序文件的最后一个函数结束 D. 本程序的main函数开始,到main函数结束 5 【单选题】 (20分) 以下叙述不正确的是()。 A. 在C程序中,注释说明只能位于一条语句的后面 B. 一个C源程序必须包含一个main函数 C. C程序的基本组成单位是函数 D. 一个C源程序可由一个或多个函数组成 第二章测试 1 【单选题】 (10分) 已知定义整形变量a,b,c的值分别是2、3、4,运算表达式a*=16+(b++) - (++c)以后,a值为( ) A. 28 B. 30 C. 29 D. 31 2 【单选题】 (10分) C 语言程序设计习题答案 习题一 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 ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。 5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-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); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1 第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束 5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab' 4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0 1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include 第一章测试 1 【单选题】(20分) C语言程序扩展名为.exe,它属于【】 A. 可执行文件 B. 库文件 C. 源程序文件 D. 目标文件 2 【单选题】(20分) 在绘制程序流程图时,表示“输入输出框”的符号是【】 A. B. C. D. 3 【单选题】(20分) 在绘制程序流程图时,下面哪个表示“选择结构”【】 A. B. C. D. 4 【单选题】(20分) 在绘制程序N-S图时,下面哪个表示“直到型循环结构”【】 A. B. C. D. 5 【单选题】(20分) 下列关于C语言特点的描述,不正确的是【】 A. C语言既可用来编写应用软件,又可用来编写系统软件 B. C语言的可移植性差 C. C语言兼有高级语言和低级语言的双重特点,执行效率高 D. C语言是一种结构化程序设计语言 第二章测试 1 【单选题】(20分) 十六进制数0X11对应的十进制数是【】 A. 17 B. 11 C. 其它答案都不正确 D. 2 2 【单选题】(20分) 下列C语言书写形式中属于合法的十进制整型常量的是【】 A. 045L B. 0X7F4 C. 82u D. 0x81p 3 【单选题】(20分) 字符'3'的ASCII码值是【】 A. 其它答案都不正确 B. 3 C. 51 D. 48 4 【单选题】(20分) 下列合法的C语言标识符是【】 A. float B. a&b C. _xyz D. 2x 5 【单选题】(20分) 下面哪个是合法的C语言字符型变量定义【】 A. char_a1,_a2; B. CHARa1,a2,a3; C. Chara; D. floata1,a2; 第三章测试 1 【单选题】(20分) 若有定义floata;,执行表达式a=1/2后,a的值是【】 A. 《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 一、选择题(共40分,每小题2分) 1 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()* A.main B. MAIN C. name D. function 题目2 1 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj * D.c 题目3 1 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为() A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 * D.空格或回车 题目5 1 每个C语言程序文件的编译错误被分为()。 A. 1类 ” B.2 类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} + D.{y=10} 题目7 1 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和() B. 语句 C. 参数表 D. 函数体 题目9 1 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用 的起止定界符为一对()。 A. 尖括号 * B.双引号 C. 单引号 D. 花括号 题目10 L 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // + B./* C.*/ D ** 题目11 1 在printf()函数调用的格式字符串中,若使用格式符为“%C',则对应输出的数据类型为()。 C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 手机通讯录管理系统一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: ◆建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、 电子邮箱等; ◆将通讯录保存在文件中; ◆查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出 此类所有数据中的姓名和电话号码。 ◆增加功能:能录入新数据。当录入重复姓名和电话号码时,则提示数据录入重复并取消 录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 ◆修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 ◆删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编 号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录 二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图: C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include C语言程序设计第一次月考试题(2011.9) 班级:姓名:总分: 一、选择题(每小题3分,共60分) 1.一个C语言程序是由() A)一个主程序和若干子程序组成B)函数 C)若干过程组成D)若干子程序组成 2.下面4个选项中,均是C语言关键字的选项是() A)auto enum include B)switch typedef continue C)singed union scanf D)if struct type 3. 下面4个选项中,均是不合法的用户标识符的选项是() A)A P_0 do B)float 1a0 -A C) b—a goto int D) _123 temp INT 4.下面4个选项中,均是不合法的整形常量的选项是() A)- - 0f1 - oxfff 0011 B)- oxcdf 017 12,456 C) – 018 999 5e2 D)-0x48eg -068 03f 5. 下面4个选项中,均是不合法的浮点数的选项是() A)160.0.12 e3 B)123 2e4.2 .e5 C)-.18 123e4 0.0 D)-e3 .234 1e3 6.下面4个选项中,均是不合法的转义字符的选项是() A)‘\‖‘?\\‘?\xf‘B)‘\1011‘?\‘?\a‘ C) ?\011‘?\f‘?\}‘D)‘\abc‘?\101‘?x1f‘ 7.下面不正确的字符串常量是() A)‘abc‘B)‖12‘12‖C) ‖0‖D)‖‖ 8.Int k=7, x=12; 则以下能使值为3的表达式是() A)x%=(k%=5) B)x%=(k- k%5) C) x%=k-k%5 D)(x%=k) – (k%=5) 9.若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值 是() A) 4 B)16 C)32 D)52 10.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A) 7 B) 8 C)6 D)2 11.已知各变量的类型说明如下: Int k, a, b; unsigned long w=5; double x=1.42; 则以下不正确的表达式是() A) x%(-3) B)w+=-2 C) k=(a=2,b=3, a+b) D)a+=a-=(b=4)*(a=3) 12.已知字母A的ASCII码为65,且定义c2为字符型变量,则执行语句c2=‘A‘+‘6‘-?3‘;后;c2中的值为() A) D B) 68 C)不确定的值D) C C语言程序设计的试题及答案 C语言程序设计的试题及答案C语言程序设计的试题及答案第一章基础知识 一、填空 1.每个C程序都必须有且仅有一个________函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数ain、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自 动化、管理信息系统、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。15.函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C语句组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。 C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是() A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是() A、abc B、12AC C、sun D、 A2 3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是() A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是() A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是() A、% B、/ C、%和/ D、 + 6、以下关于运算符的优先顺序的描述正确的是() A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是() A、 INPUT x、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、 scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:() void main ( ) { int m,n; scanf(“%2d%3d”,&m,&n); printf(“m=%d n=%d\n”,m,n); } A、m=23 n=45 B、m=234 n=56 C、m=23 n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是() main( ) { int x,y; scanf(“%d”,&x); y=x>12x+10:x-12; printf(“%d\n”,y); } A、 0 B、 22 C、 12 D、10 11、C语言中while和do-while循环的主要区别() A、do-while的循环体至少执行一次 B、while 的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 智慧树知到程序设计基础(C语言)测试第四章单元测试参考答案 ?总题数: 10 1 【单选题】 (10分) 有下列程序,已知字母A的ASCII码为65,程序运行后的输出结果是()。 #include } A.a=14,b=12 B.a=12,b=14 C.a=26,b=26 D.a=14,b=14 正确 本题总得分10分 3 【单选题】 (10分) 若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是()。 A.scanf("%d%d%d",a,b,c); B.read(a,b,c) C.scanf("%D%D%D",&a,&b,&c); D.scanf("%d%d%d",&a,&b,&c); 正确 本题总得分10分 4 【判断题】 (10分) 编写程序,输入3个整数a、b、c,输出时:a的值是b,b的值是c,c的值是a。下面程序可以正确实现题目要求: #include c语言程序设计教程第二版课后习题答案
c语言程序设计试题答案
国家开放大学C语言程序设计A第一次形考任务及答案
智慧树知道网课《C语言程序设计(青岛职业技术学院)》满分章节测试答案
C语言程序设计习题答案(1-5章)
C语言程序设计期末考试选择题题库
C语言程序设计入门经典例题
c语言程序设计期末试题B(含答案)
2020年智慧树知道网课《C语言程序设计(山东联盟-山东英才学院)》课后章节测试满分答案
C语言程序设计模拟试题1附答案
国家开放大学C语言程序设计A第一次形考任务与答案(20201127230652)
C语言程序设计(第二版)习题参考答案
C语言程序设计试题集与答案解析
C语言程序设计实习报告
C语言程序设计期末考试试题(含答案)
C语言程序设计第一次月考试题
C语言程序设计的试题及答案
C语言程序设计习题及答案
智慧树知到程序设计基础(C语言)测试第四章单元测试参考答案