当前位置:文档之家› (完整版)打印一下-C语言期末复习资料

(完整版)打印一下-C语言期末复习资料

(完整版)打印一下-C语言期末复习资料
(完整版)打印一下-C语言期末复习资料

期末复习

第一部分:C中的数据

首先,从主调函数和被调函数(模块间)要处理的任务数据的角度来总结数据的知识点:

C语言中所讲授的数据有基本类型(整型、实型和字符型)和构建类型(数组、结构体、共用体、链表结点)之分。构建类型是由基本类型构建而成,因此我们有必要对基本类型的数据做以更细致的研究。

一.基本类型的数据

程序中的数据无非是以常量和变量两种形式描述。在这里我们不妨思考两个问题:(1)为什么要用变量?(2)常量经常用在什么地方?

(一)常量

对于基本类型常量我们要掌握:常量分几类?每类的书写规则是什么?

(1)整型常量:有十、八、十六进制三种表示形式。(3.3.1、3.3.3)

(2)实型常量:有小数和指数两种表示形式.(3.4.1、3.4.3)

(3)字符型常量:有普通字符(可以是ASCII码表中的任何一个字符)、转义字符(表示控制命令的转义字符和用八进制十六进制描述的转义字符)(3.5.1)(4)字符串常量(3.5.4)

(5)符号常量:实际上是不带参数的宏定义(3.2.1 、9.1.1)

对于常量部分的考察无非是辨别书写形式,字符类的常量特别注意转义字符的辨认。这就要求我们熟记书写规则。例如以下题目:

t-1:下面哪个是正确的整型常量表示

A)019 B)0X34g C)-123D)o56 E) 12,000

t-2: 下面哪个是错误的实型常量表示

A).23 B)3.8E-4.5C)45E12 D)92.45

t-3: 下面哪个是正确的字符常量表示:

A)”b”B)’\\’C)’\34’D)’\0x9’E)’0123’

t-4: 下面那个是正确的字符串常量表示:

A)’abc’B)“”C)“”D)“\0x120”

E)”abRT\0\\”

F)”A”

t-5: 字符串“ab034\0\\t\v\012”存储需要多少个字节?先组合转义字符,11个字节

t-6: puts(“ab034\0\\t\v\012”);的结果是ab034?strlen(“ab034\0\\t\v\012”)的值是5?

(二)变量

对于基本类型的变量,我们知道要使用变量必须先定义变量,定义的基本格式是:数据类型变量名;要正确定义变量就必须清楚两点(1)什么样的变量名才是合法的?(3.2.2)(2)如何用类型符来描述所要定义的变量,这就涉及到变量所分配的字节数、存储特点、有无符号及各自表示的数值范围等。

变量的三大类:

(1)整型变量(3.3.2)

分配字节:2字节(int/short) 4字节(long)(TC2.0)

存储特点:存储的是数值的补码形式

符号标识:signed unsigned

表示数值范围:表3-1

(2)实型变量(3.4.2)

分配字节:4字节(float) 8字节(double) 16字节(long double)

存储特点:图3-7

表示数值范围:表3-2

(3)字符型变量(3.5.2、3.5.3)

分配字节:1字节(char)

存储特点: 存储字符的ASCII值

符号标识:signed unsigned

表示数值范围:signed char: -128~+127

Unsigned char: 0~255

基本类型变量这部分知识主要的考察形式:

(1)变量名(标识符)的正确与否鉴别

(2)变量类型标识符的识别与应用

(3)变量定义语句中对变量进行初始化的形式正确与否鉴别(3.6)

例如以下题目:

t-7: 以下正确的变量标识符是:

A)3sum B)INT C)_3max D)case E)p&sum F)s_m_a

t-8: 以下正确的变量类型声明是:

A)signed int B)int long C)unsigned long D)short long

t-9: 下面程序段在tc2.0和cfree3.0运行时的输出各为-1 / 65535?

unsigned int a=65535;

printf("%d",a);

t-10: 以下正确的定义语句是:

A)int a=b=5 ; B)char ch=97 ;C)unsigned int x, y=-5; D)int a=3,b=5;

E)int c=3

(二)建构类型的数据

程序给出的任务数据可以是基本类型的,也可以是集合性质的。集合中的所有数据可以是同类型的即数组(7.1.1~7.1.3、7.2.1~7.2.3、7.3.1~7.3.4),也可以是不同类型的(例如学生记录)即结构体(11.1~11.5)。

在这部分知识中主要考察的形式有:

(1)数组及结构体的定义、初始化和引用

(2)计算集合(数组、结构体变量)存储所需要的空间

(3)数组定义时缺省形式的一些规则:

●在定义一维数组时,若给出了所有初始值则一维中括号内的数值可以省

略,由初始值的个数来确定其值。但若没有给出初始值,则不能省略中括

号内的值。例如:int a[]={1,2,3}; int b[]={3};都对。int a[]; 不对。

●二维数组的第2维列数任何情况下都不能缺省,第1维中的数值若在给

出初始值的按情况下可以缺省。例如int a[2][]={{1,2}{3,4}}不对。 int

a[][2]={1,2,3,4,5};正确。

(4)只有在数组定义时可以给数组整体赋值,不能单独用赋值运算“=”给数组整体赋值,特别是字符串数组。例如int a[3]; a={1,2,3}; char b[10];

b=”china”; char c[2][10]; c[0]=”chian”;c[1]=”japan”都不对, 只能是

int a[3]={1,2,3};char b[10]=”china”; char c[2][10]={“china”,”japan”};

(5)函数体内定义的数组名是地址常量,而由数组名表示的一些表达式也是常量表达式。如int a[3]={1,2,3}; a,a+i都是常量。int b[3][3]={..};

b,b[0],b+i,*(b+i)也都是常量形式。常量形式意味着该式只能出现在等

号的右边,而不能作为左值。

例如以下题目:

t-11: 以下正确的数组定义形式是:

A)int n; scanf(“%d”,&n); int a[n];

B)#define N 10 int a[N]; C)int b[3][4];

D)char b[ ][4];

t-12: 以下不正确的数组定义和初始化形式是:

A)int a[]={1,2,3}; B) int a[]={0}; C) int a[][3]={1,2,3,4};

D)int a[2][2]={{1,1},{2,2},{3,3}} E) char a[10]={“hello”}; F) char a[]=”hello”;

G)int a[2][]={{1,1},{2,2}}; H) char a[10]; a=”hello” ;

I)char a[2][10]; a[0]=”hello ”;a[1]=”tom”; J) char a[2][10]={“hello”, “tom”};

t-15: 若有数组int a[2][2]={1,2,3,4},则能引用数组元素4的形式为:

A) a[1][2] B) *(a+1) C) *(*(a+1)+1) D) *(a+3) E) a[1][1] F) *(a[1]+1)

t-16: 若有数组int a[3]={1,2,3};则能引用数组元素2的形式为:

A) a[1]B) *(a+1) C) &a[1] D) a+1t-11: 以下正确的数组定义形式是:

A)int n; scanf(“%d”,&n); int a[n];

B)#define N 10 int a[N];

C)int b[3][4];

D)char b[ ][4];

t-17: 若有如下程序段,则对于“TOM”串中首字符T的正确引用形式为:

struct A{

int age;

char name[10];

};

Struct A t[2]={1,”TOM”,2,”MIKE”},*p=t;

A)(*p).name B) t[2].name C)t[1].name[0] D)p->name[0]

第二部分:数据的输入输出

讨论完C中的数据我们再讨论各种数据的输入与输出。如果数据输入不当再完美的程序也不可能显示出预期的结果。这部分作业的输入出现的问题较多,我们要熟记输入规则但不能死记硬背。下面的这三对函数都包含在文件“stdio.h“中,因他们的输入输出终端是标准设备-键盘和显示器,因此称为标准的IO函数,标准IO函数的使用与缓冲区有密切的联系。学习本部分时最重要的是要理解输入缓冲区中数据流和输入函数格式匹配的输入机制(参见本章手册中的参考资料)

C中的输入输出是调用系统库函数来实现的,常见有三对库函数:

(1)s canf()/printf(): 可输入输出任何类型的数据。一次函数调用可以实现多个数据的IO。

(2)g ets()/puts():只对字符串数据进行输入输出操作。一次函数调用只可实现一个串的IO。

(3)g etchar()/putchar():只对字符数据进行输入和输出操作。一次函数调用只可实现一个字符的IO。

对于这几对函数的使用主要考察:

(1)s canf、printf的使用规则(4.5,可参考本章教学目标)

(2)g etchar和putchar的使用格式(4.4)

(3)g ets与scanf的使用区别

例如以下题目:

t-18:若有程序段int a; float x; char c[10];scanf(“%2d%f%s”,&a,&x,c);

当程序执行时从键盘输入 23456.78abcd ,a=23 x=456.78、和 c=”abcd”t-19:若有定义int a;float b; 则scanf(“a=%d;b=%f”,&a,&b);的输入形式是a=3;b=4.5

t-20:若有定义float x;则语句scanf(“%5.2f”,&x)是否正确?不正确

t-21:若有定义char a,b;对于scanf(“%c%c”,&a,&b);若输入A B,则a=A b=空格?

t-22:若用getchar()函数输入一个字符存储到字符变量ch中再将其输出,则以下正确的写法是:

A)getchar(ch); B) ch=getchar(); C) ch=putchar(); D) putchar(ch);

t-23: 若有语句scanf(“%s”,a); 程序运行时若输入hello tom!,则存储到a中的串是“hello”

t-24: 若有int a=97; float x=34.56; char c=’B’;则语句printf(“%c %d %d”,a,x,c)的输出是a 34 66

t-25: 若有程序段:

char a, b , s[10],t[10];

a=getchar();b=getchar();

gets(s);gets(t);

printf("a=%c,b=%c,s=%s,t=%s",a,b,s,t);

程序运行时若输入A

B

Hello

TOM

程序输出是a=A,b= ,s=B,t=HELLO

t-26: 若有如下定义,写出每个变量对应的格式符。

int a ; %d long int b; %ld unsigned long c;%lu

float x; %f long double y; %lf char ch; %c

t-27: 若要分别输入两个串“hello”和“tom”至数组s 和t中,下面四个程序段运行结果是否一样?可以有什么样的推论?若运行后输入的两个串以回车为结束符程序段1:程序段2:程序段3:

char s[10],t[10]; char s[10],t[10]; char s[10],t[10];

gets(s);gets(t); scanf(“%s”,s); gets(t); gets(s);

scanf(“%s”,t);

程序段4:

char s[10],t[10];

scanf(“%s”,s); scanf(“%s”,t);

程序段2结果不一样。Scanf和gets连用时对回车符的处理不同。Scanf 将回车符留在缓冲区中,而gets的回车符带走。

第三部分:函数之间对任务数据的处理方法

在编写多模块程序也即存在函数调用这样的程序时,我们必须首先设计模块之间任务数据的交接方法,即主调函数如何让被调函数得到要访问的任务数据。部分初学者对此不解,不明白为什么在子函数中不能通过直接引用主调函数中的变量名来访问主调函数中的任务数据,例如这样的题目:在main函数中定义了变量x和变量y并赋予值,而子函数sum的任务就是对主函数中的这两个数据求和,部分初学者也许认为在sum函数中直接用表达式x+y就可以求出主调函数中这两个变量的和了。

要明白这个错误的原因我们还是要对程序的模块化设计思想做以分析。这个思想的设计起因很简单,正如我们可以理解为什么学校里要划分院系,而院系里再分班;也正如为什么公司里都划分各个职能部门一样。变量的作用域属性和存储属性也就是这个设计思想规则的体现。模块之间只能通过接口(实参/形参返回值)来互通信息。

为了保证模块内部信息(数据)的隐藏性,规定模块内部定义的变量也只能在本块内被引用,这就是作用域规则下的局部变量。在某些时候可能几个模块需要共享一些数据,这些数据可以被多个模块访问,这就是作用域规则下的全局变量。例如在战争游戏中,指挥部和后勤部都会需要战士的人数,指挥部用这个数目来调兵遣将,后勤部用这个数目来供给口粮和装备。

不同的模块之间存在信息共享(全局变量),而同一个模块的多次调用之间也可以共享某些信息(静态局部变量)。

对于作用域和存储类型这两部分内容要掌握:

(1)完整的变量定义格式:存储类型符数据类型符变量名;

(2)能根据变量的定义位置来判断哪些是局部变量,哪些是全局变量,他们各自的作用域范围是什么。

(3)能根据变量定义中的存储类型符来判断变量的存储类型,从而确定变量在内存生存期的起点和终点。

(4)所有的全局变量都是静态存储的,也即存储类型符只能是static/extern两种之一,这两个的区别是前者限定这个全局变量只能被当前文件所使用,而

后者声明的变量可以被其他文件所使用。若全局变量缺省存储类型符则默认

为extern。

(5)静态变量在使用前都应有初始值,若未显示赋值则系统有默认值-0或者NULL。

(6)局部变量有静态类型也有动态类型,若存储类型符缺省则应默认为auto。

常见题型:

t-28:读程序写结果:

#include

int fun(int);

int n=1;

void main()

{ int x=2, y=3;

printf("1:x=%d,y=%d,n=%d\n",x,y,n);

{ int x=7;

printf("2:x=%d,y=%d,n=%d\n",x,y,n);

}

y=fun(x);

printf("3:x=%d,y=%d,n=%d\n",x,y,n);

y=fun(x);

printf("4:x=%d,y=%d,n=%d\n",x,y,n);

}

int fun(int x)

{ static m=3;

m++;

n+=x;

printf("5:x=%d,m=%d,n=%d\n",x,m,n);

return m+n;

}

因变量作用域的限制使得接口传递信息时采取一种机制:将主调函数的实参值进行复制,形参到的是实参的副本,即传值调用的机制。但这种机制在处理集合数据时带来问题,我们不可能将集合中的每一个数据都做为一个实参,为了解决这个问题考虑将集合数据在内存中存储的首地址(是一个地址值)拷贝给子函数,这样子函数就需要定义指针变量来接收传递来的地址值,这种处理机制称传址调用,子函数能利用

指针变量间接访问到主调函数中的数据。对于返回结果是集合性质的数据也采用相同的处理方法,即返回这个结果集合的首地址,也即返回值是指针的函数功能。

若主调函数要子函数处理的是多个同类型的数据集合,例如多个一维整型数组,或者多个串,那么为了传递简便通常在主调函数中先对这多个数据集合做些处理,例如将这几个集合的首地址存储在一个指针数组中,这样传递实参时只要将这个指针数组的首地址传递给子函数,而子函数将定义一个二级指针来存放指针数组的首地址,继而通过这个二级指针来间接访问到这多个数据集合。

例如 char a[10]=”..”,b[10]=”..”,c[10]=”..”; char *p[3]={a,b,c}; 有函数调用fun(p,3),则形参定义相应为:(char **pp, int n ).

例如如下题型:

请分析下面函数调用表达式中的实参来写出对应的子函数中形参变量的定义,并说出这种调用形式下数据的访问方法(传值调用还是传址调用):

t-29:根据实参写出对应的形参变量的定义

(1)主调函数中若有定义:int x=2,y=3;

函数调用: fun(x,y);

形参定义:

(2)主调函数中若有定义:int x=2,y=3;

函数调用:fun(&x,&y);

形参定义:

(3)主调函数中若有定义:char x=’A’,y=’B’;

函数调用:fun(x,y);

形参定义:

(4) 主调函数中若有定义:int a[5]={1,2,3,4,5};

函数调用:fun(a[0]);

形参定义:

(5) 主调函数中若有定义:int a[5]={1,2,3,4,5};

函数调用:fun(&a[0]);或者fun(a);

形参定义:利用形参变量对数组元素的间接访问形式

(6) 主调函数中若有定义:int a[3][3]={1,2,3,4,5,6};

函数调用:fun(a[2][2]);

形参定义:

(7) 主调函数中若有定义:int a[3][3]={1,2,3,4,5,6};

函数调用:fun(&a[2][2]);

形参定义:利用形参变量对数组元素的间接访问形式(8) 主调函数中若有定义:int a[3][3]={1,2,3,4,5,6};

函数调用:fun(a,3,3);

形参定义:

(9) 主调函数中若有定义:int a[3][3]={1,2,3,4,5,6};

函数调用:fun(*a,9);或者fun(&a[0][0],9);或者fun(a[0],9)

形参定义:利用形参变量对数组元素的间接访问形式(10) 主调函数中若有定义:char a[3][10]={“hello”,”jack”,”tom”}; 函数调用:fun(a,3);

形参定义:利用形参变量对数组元素的间接访问形式(11) 主调函数中若有定义:

int a[5]={1,1,1,1,1};

int b[5]={2,2,2,2,2};

int c[5]={3,3,3,3,3};

int *p[3]={a,b,c};

形参定义:利用形参变量对数组元素的间接访问形式(12) 主调函数中若有定义:

char a[5]=”hello”;

char b[5]=”jack”;

char *p[2]={a,b,c};

函数调用:fun(p,2);

形参定义:利用形参变量输出串jack

(13) 主调函数中若有定义:

char a[3][10]={”hello”, ”jack”,”tom”};

char *p[3]={a[0],a[1],a[2]};

函数调用:fun(p,3);

形参定义:利用形参变量输出串jack

(14)主调函数中若有定义:

Struct A {

Int x;

Char n[10];

};

Struct A m={1,”mike”};

函数调用:fun(m);

形参定义:

Struct A a[3]={1,”mike”,2,”jack”,3,”tom”};

函数调用:fun(a,3); 利用形参变量输出串mike

形参定义:

形参定义:

在多模块的程序中应能写出或者找出函数的三要素-函数调用、函数声明(原型)、函数定义,函数声明根据情况可以缺省。或者给出其中一个要素能写出其它的两个要素,例如以下题目:

t-30:

函数原型: double fun(int,float);

函数调用:

函数定义头部:

t-31:

函数原型: char *fun(char *,char );

函数调用:

函数定义头部:

t-32:

函数原型: int fun(int [], int);或者 int fun(int *, int);

函数调用:

函数定义头部:

t-33:

函数原型: int fun(int (*)[3], int,int);

函数调用:

函数定义头部:

t-34:

函数原型: int fun(int **, int,int);

函数调用:

函数原型:

函数调用: p=fun(a,b); /* 若以有定义 char *p,a[10],b[10];*/

函数定义头部:

t-36:

函数原型:

函数调用: sum=fun(a,5); /* 若以有定义 int sum,a[5]={..};*/

函数定义头部:

t-37:

函数原型:

函数调用: sum=fun(a,5,5); /* 若以有定义 int sum,a[5][5]={..};*/

函数定义头部:

t-38:

函数原型:

函数调用: fun(p,3); /* 若以有定义 char (*p)[3]={“..”,“..”,“..”}*/ 函数定义头部:

t-39:

函数原型:

函数调用: sum=fun(&a[0][0],9); /* 若以有定义 int sum, a[3][3]={...}*/ 函数定义头部:

t-40:

函数原型:

函数调用: fun(x); /* 若以有定义 struct A x={...}*/

函数原型:

函数调用: fun(a,3); /* 若以有定义 struct A a[3]={...}*/

函数定义头部:

t-42:

函数原型:

函数调用:

函数定义头部:int sum(int (*p)[3],int m,int n)

t-43:

函数原型:

函数调用:

函数定义头部:int *sum(int *p)

在这部分内容中,对于给出的程序我们要非常明确程序采用的调用方式是传值还是传址,两个模块的接口处实参和形参的匹配,子函数返回值和主函数接收值的匹配。

第四部分:模块内部的任务实现(算法:解题思路)

多数题目在解题的过程中可能都会用到选择和循环,因此我们有必要首先对程序的这两种结构进行讨论。

选择结构的应用比较简单,只是把我们思维中的选择逻辑依葫芦画瓢的用计算机语句翻译出来就可以,而循环结构的应用对于初学者来说需要花费一定的精力,理解循环的构成,分析每一类题目循环的应用特点。

C语言中的分支语句(第5章)只提供了四种,其中三种if语句(简单if/两分支if/多分支if),一种switch语句。而应用这四种语句或嵌套能实现任何复杂情况的选择逻辑。

按选择逻辑分类,可有两分支的选择逻辑和多分支的选择逻辑,两分支的逻辑可由简单if语句和两分支if语句实现,课堂上我们曾推论过这两种结构之间的转换关系,希望大家还记得。多分支的逻辑可有三种方法实现:(1)由两分支语句嵌套实现多分支(2)应用多分支if语句实现(3)应用switch语句实现。作业中我们曾以三分支的逻辑(分段函数)为例,要求大家尽可能写出由两分支嵌套实现的三分支各种写法,其中有一种是if...else...的else分支中又嵌套了一个if...else...,而这种逻辑结构实质上就是多分支if语句的变形,由此我们推论出(1)和(2)之间的关系,继而又用实例演示了(2)和(3)之间的转换关系,这样我们就把选择结构的所有形式有机的串联起来,它们之间是存在紧密联系的,明白了这一点在编写程序的时候用什么形式来编写选择逻辑就很清楚了。

对于循环的应用(第6章),我们在课堂讲解时首先用较简单的例题演示了三种循环语句(while循环,do-while循环,for循环)的使用,然后总结了循环的三个构成:循环变量的初始化、循环条件的设置、循环变量步长的修改。然后对用常见的应用循环的题目根据任务性质做了分类,有数值型求解题目(主要是数学类,如1+1/2!+1/3!+...等)和事务管理类题目(学生成绩统计等),对于数值求解类题目有迭代算法的,有穷举算法的,也有其他算法的,它们对于循环的应用形式各有千秋,在学习时应多归纳总结规律。

选择结构这部分内容中主要会考察:

(1)对于给定的应用选择结构的程序能清楚的找出配对关系。

(2)各分支语句之间的转换

(3)对于判断条件条件的理解,应会书写和计算条件

(4)对于switch语句的理解,switch中缺省break语句对结果的影响

(5)应用分支语句来编写程序。

(请参考第5章手册里的课后自测部分的题目)

例如以下题目:

t-44.若有a=1,b=3,c=5,d=4,x=6,则下面程序段执行后x的值是:

if(a

if(c

else if(b

else x=5;

t-45.将下列switch语句改写为if语句实现

swicth(x)

{ case 0: y=0;break;

case -1: y=-1;break;

case 1: y=1;break;

default: y=10;

}

t-46.将下列if语句改写为switch实现:

if(x<0) y=-1;

else if(x==0) y=0;

else y=1;

t-47.下面程序段输出是什么?

int x=1;

if(x=2) putchar(‘*’);

else putchar(‘#’);

t-48.下面程序段输出是什么?

Char a[10]=”hello”,b[10]=”hi,liou”;

Char *p1,*p2;

p1=a;p2=b+3;

if(*p1==*p2) putchar(‘*’);

else putchar(‘#’);

t-49: if(printf(‘*’))的条件与下面哪一个等价

A)if(‘1’) B)if(a=0)

t-50:下面程序段的输出是什么?

int x=3,s=0;

switch(x)

{ case 3:

case 2: s++;

default: s++;

case 1: s++;

}

printf(“s=%d”,s);

循环结构这部分主要考察:

(1)三种循环的互相改写

(2)循环条件的判定与书写

(3)循环中执行的跳转(break/continue)

(4)嵌套循环的应用(特别是对一二维数组的访问)(5)W hile与do-while的区别

例如以下题目:

t-51:将下面的for循环改写成while循环:for(i=0;i<=10;i++)

{ if(i==6 ) continue;

printf(“*”);}

t-52: 以下程序段的输出是

int a=1,b=2,c=3,s=1;

while(c>b>a)

{ if(s++>3) printf(“%d”,s);}

printf(“%d”,s);

t-53:下面的循环条件哪个为真

A)char ch=’0’ ; while(ch){…} B)int a=1;while(a=0){..} C) int a=0;

while(a++){…}

t-54:下面程序段的功能是什么?

char a[10],*p1=a,*p2=”hello”;

while( *p1++ = *p2++);

t-55: 下面程序段的输出是什么?

char a[10]=“abcdef”,*p1=a, b[10]=“ABC”,*p2=b;

while(*p1 && *p2) { *p1=*p2;p1++;p2++}

puts(a);puts(b); puts(p1);puts(p2);

t-56:若有定义int a[3][3]={1,2,3,4,5,6,7,8,9},i,j;则下面程序段的输出是什么?

for(i=0;i<3;i++)

{ for(j=0;j<3;j++)

{printf("%d",a[i][j]);if(i==j) break; }

printf("\n");

}

算法中使用的分支或者循环结构是构建框架的体现,而框架内就需要具体的语句来填充,算法描述中相当一部分语句是各种运算表达式语句,这就需要我们对C中的运算做以全面的了解。应将课本附录C中运算符的优先级和结合性以及图3-10记住,

C语言必背18个经典程序(可直接打印)

1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) /*内循环结束后,leap依然为1,则m是素数*/ {printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1;

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

(完整版)c语言期末考试题及其答案

选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套

C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配()字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是()。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设char a[5],*p=a;)()。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.设有以下程序段,则值为6的表达式是()。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i;

湖南工业大学C语言期末考试复习题(机房题库)

C语言期末考试复习题(机房题库) 2、下列各选项中,合法的c语言关键字是( )。 A. integex B. sin C. string D. void参考答案: D 3、C语言的程序一行写不下时,应该( )。 A. 用回车符换行 B. 在任意一个空格处换行 C. 用分号换行 D. 用逗号换行答案: B 4、以下选项中正确的整型常量是( )。 A. 34.1 B. -80 C. 2,000 D. 1 2 3参考答案: B 5、在C程序中,可以作为用户标识符的一组标识符是( )。 A. void define WORD B. as_b3 _224 Else C. switch _wel ease D. 4b DO SIG答案: B 8、以下叙述不正确的是( ) A. 一个c源程序可由一个或多个函数组成 B. 一个C源程序必须包含一个main()函数 C. c程序的基本组成单位是函数 D. 在C程序中,注释说明只能位于一条语句的后面答案: D 9、C语言规定:在一个源程序中,main()函数的位置( ) A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后参考答案: C 10、在C语言中,数字029是一个() A. 八进制数 B. 十六进制数 C. 十进制数 D. 非法数参考答案: D 12、C语言可执行程序的开始执行点是( ) A. 程序中的一条可执行语句 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的第一个函数参考答案: C 13、C程序是( ) A. 顺序执行 B. 从Main函数开始 C. 从函数体开始 D. 任意语句参考答案: B 16、以下说法中正确的是( )。 A. C语言程序中是从第一定义的函数开始执行 B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分参考答案: C 17、一个C程序的执行是从( ) A. 本程序的main函数开始,到main函数结束 B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C. 本程序的main函数开始,到本程序文件的最后一个函数结束 D. 本程序文件的第一个函数开始,到本程序main函数结束参考答案: A 18、以下叙述正确的是( ) A. 在C程序中,main函数必须位于程序的最前面 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误答案: C 1、C源程序的基本单位是___函数__

c语言期末考试试题

一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() A.016 B.018 C.017 D.02 3. 不是C语言实型常量的是:() A.55.0 B.0.0 C.55.5 D.55e2.5 4 .字符串“xyzw”在内存中占用的字节数是:() A.6 B.5 C.4 D.3 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 B.2.25 C.2.1 D.1.5 D.1.5 D.1.5 D.1.5 6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2- `a`,c2-c1);则输出结果为:() (a的ASCII码值为97) A.M,2 B.G,3 C.G,2 D.D,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据 输入是:() A.a=2.2,b=3 B.a=2.2 b=3 C.2.2 3 D.2.2,3 8.表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>y?x:mc4)后,s,t的值为:() A.1,2 B.1,1 C.0,1 D.1,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:() A.4 B.6 C.5 D.1 13. 对于for(s=2;;s++)可以理解为:()

大学计算机C语言期末试题A

专业班级:学号:姓名: 一、选择题(用铅笔把选中的方格涂黑40×1=40分) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 二、填空题(25×2=50分) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20)

(21) (22) (23) (24) (25) 三、编程题(10分) 求10个数的最大公约数和最小公倍数(定义两个函数,求两个数的最大公约数和两个数的最小公倍数)

一、选择题 ( 40×1分=40分) 1.以下叙述中正确的是 (1) 。 A .在编译时可以发现注释中的拼写错误 B . C 语言程序的每一行只能写一条语句 C .main( ){}必须位于程序的开始 D .C 语言程序可以由一个或多个函数组成 2.以下选项中不能用作变量名的是 (2) 。 A ._float B .switch C .sum D ._123 3.已知sizeof(int)的值为2,为将10!的值存储到变量f 中(10!=3628800),变量f 的类 型应声明为 (3) 。 A .long int B .int C .short int D .unsigned int 4. 以下表示中,不能用作C 语言常量的是 (4) 。 A. 0UL B. (long)123 C. 1e0 D.‘\x2a’ 5.数学式 b a 2在C 程序中正确的表示形式为 (5) 。 A .sqrt(a)/2*b B .sqrt(a)/2/b C .sqrt(a)/2b D .sqrt a/(2*b) 6.已知有程序段“char str[][10]={"Aoyun","Beijing"},*p=&str[0][0]; printf("%s\n",p+10);”,则执行printf 语句后输出为 (6) 。 A .Beijing B .Aoyun C .ing D .ng 7.以下声明中错误的是 (7) 。 A .int a[2]; B .int a[]={0,1}; C .int a[3]=0; D .int a[3][4]={0}; 8.以下表示数学式“a=b)&&!(b>=c) D. !(a>=b||b>=c) 9.已有声明“int a=3,b=3,c=2;”,以下选项中值为0的表达式是 (9) 。 A. !a&&!b&&c B. !a||!b||c C. a==b&&b>=c D. a>=b&&b>c 10.若有声明“char ss[8]="Red";”,则sizeof(ss)的值是 (10) 。 A .8 B .4 C .3 D .1 11. 以下程序运行后的输出结果是 (11) 。 A. 2 2 B. 7 2 C. 7 5 D. 6 2 main() { char a[7]="a0\0a0\0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d",i,j); } 12. 下面关于循环语句for 、while 、do_while 的叙述中,正确的是 (12) 。 A. 三种循环语句的循环体都必须放入一对花括号中 B. 三种循环语句中都可以缺省循环终止条件表达式 C. 三种循环语句的循环体都至少被无条件地执行一次

C语言必背18个经典程序

C语言必背18个经典程序 (总10页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } system("pause"); } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m); for(i=2;i<=k;i++)

(精选)大学大一C语言程序设计期末考试试卷和答案

四川师范大学计算机科学学院 2012~2013学年度第二学期期末考试 C 语言程序设计试卷 试卷A 答卷说明: 1、 本试卷共6页,答题纸3页,4个大题,35个小题,满分100分,120分钟完卷。 2、 闭卷考试,所有的答案都必须写在答题纸上,判卷以答题纸上答案为准。 3、 本试卷适用于2011级1、2、3班。 一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的 序号填在题干的括号内。每小题1分,共20分) 1、 在C 语言中,下列标识符中合法的是( ) A). -int B). in1_3 C). A_B!D D). const 2、 不属于C 语言基本数据类型的是( ) A). int B). union C). char D). unsigned 3、 下面是对宏定义的描述。不正确的是( ) A). 宏不存在类型问题,宏名无类型,它的参数也无类型 B). 宏替换不占用运行时间 C). 宏替换只是字符串的简单替代 D). 宏替换时先检查类型,类型一致时才可以替换 4、 C 语言中,″\\xfds ″在内存中占用的字节数是( ) A).3 B).4 C).5 D).6 5、 设int x;则执行printf(″%x \n″,~x^x);的结果是( ) A). ffffffff B). ff __________________学院__________级___________班 姓名_______________ 学号_______________ ………………………………(密)………………………………(封)………………………………(线)……………………………… 密 封 线 内 答 题 无 效

C语言全套教材

变量和常量 一、变量 (一)、变量类型和表示方法 1.什么是变量?一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那 么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体分类。整型变量还可具体分为无符号型、长整型和短整型。浮点型也可分为单精度型、双精度型和长双精度型。此外还可以分为静态变量、外部变量、寄存器变量和自动存储变量。这些数据类型我们在本节和后面的章节中都会陆陆续续介绍。 那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。 标识符的命名有一定的规则: (1).标识符只能由字母、数字和下划线三类字符组成 (2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符) (3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 (4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总 成的,而不是C语言本身的局限性 (5).标识符不能是C的关键字 2.从上面的规则中,有个关键字的概念。那么什么叫关键字呢? 从表面字意上也可以看出,关键字是C语言本身某些特性的一个表示,是唯一的代表某一个意思的。 下面列出ANSI标准定义的32个C语言的关键字,这些关键字在以后的学习中基本上都会用到,到时再说它们的各自用法。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C语言还包括一些不能用做标识符的扩展关键字。 asm cdecl _cs _ds _es far huge interrupt near pascal _ss 所以在以后的学习中,在给变量命名时要避开这些关键字。 3. Turbo C2.0规定所有变量在使用前都必须加以说明。一条变量说明语句由数据类型和其后的一个或多个变量名组成。变 量说明的形式如下: 类型<变量表>; 这里类型是指Turbo C2.0的有效数据类型。变量表是一个或多个标识符名,每个标识符之间用,分隔。 (二)、整型变量 整型变量是用来存储整数的。 整型变量又可具体分为好几种,最基本的整型变量是用类型说明符int声明的符号整型,形式如下: int C ounter; 这里int是类型说明符,Counter是变量的名字。 整型变量可以是有符号型、无符号型、长型、短型或象上面定义的普通符号整型。 整型是16位的,长整型是32位,短整型等价于整型。 以下是几种整型变量的声明示例: long int Amount; /*长整型*/ long Amount; /*长整型,等价于上面*/ signed int Total; /*有符号整型*/ signed Total; /*有符号整型,等价于上面*/

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了_______________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; _______________; i++) if (_______________) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= _______________; p1++, p2++) _______________=_______________; *p2= ______________; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<_______________;j++) if( _______________< _______________ ) { m=a[ j]; a[ j]=a[ j+1]; a[ j+1]= m; } for(i=0;i<5;i++) printf("%d ",a[i]); } 7. 函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<_______________;i++,j--)

全国计算机二级C语言资格考试培训资料

全国计算机二级C语言资格考试培训资料 ◆考试方式 全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。 1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。 (2)改错。 (3)编程。 ◆题型分析 二级C考试分笔试和机试两部分,两部分总分均为100分,两部分考试均需60分以上才能合格发放证书。若其中一科(笔试或机试)通过,另一科可在下一次考试中补考,若补考合格发放证书。若二科均在85分以上,在合格证书上将加印“优秀”字样,若二科均在70分以上,在合格证书上将加印“良好”字样。 (一)笔试 笔试内容分两部分。公共基础知识考核内容:30分;C语言基础知识考核内容:70分。题型分析如下: 1、单向选择题40道题,共70分。

分值分布如下: 其中(1)-(10)、(21)-(40)小题,每題2分,(11)-(20)小题,每题1分。 考核内容分布如下: (1)-(10)小题为公共基础知识考核内容,共计20分; (11)-(40)小题为C语言知识考核内容,共计50分。 2、填空题15个空,每空2分,共30分。 考核内容分布如下: (1)-(5)空为公共基础知识考核内容,共计10分; (6)-(15)空为C语言知识考核内容,共计20分。 ◆基本要求 1.熟悉 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的

安徽大学C语言期末试卷(含答案),DOC

安徽大学 C语言程序设计期末试题 一. 单项选择题:(每题2分,共20分) 1.执行程序: int a; printf("%d \n", (a=3*5, a*4, a+5) );后,a的值是______。 A)60 B)20 C)15 D)10 2.程序段:int x=023; printf("%d \n", --x );的输出是______。 A)19 B)18 C)23 D)22 3.程序段:static char s[10]={'C','h','i','n','a'}; printf("%d\n",strlen(s));的输出是______。 A)6 B)5 C)11 D)10 4.若fun( int x) { printf(“%d\n”,x);}, 则fun_______。 A)返回值为void 类型B)返回值类型无法确定 C)返回值为int 类型D)没有返回值 5. 有宏定义:#define MULT1(a,b) a*b #define MULT2(a,b) (a)*(b) 且引用宏:y=MULT1(3+2,5+8); z=MULT2(3+2,5+8); 则y和z的值是______。 A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21 6.程序段char s[]="Hello", *p; p=s;执行后,*(p+5)的值是______。 A)'o' B)'\0' C)'o'的地址D)不确定的值 7. 程序段:char *s=”ABCD”, *p; for( p=s; *p ; 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 8. 若定义:int (*p)[3]; 则标识符p______。 A)定义不合法。 B)是一个指针数组名,每个元素是一个指向整型变量的指针。 C)是一个指针,它指向一个具有三个元素的一维数组。 D)是一个指向整型变量的指针。 9. 定义: struct sk {int a; float b;} data,*p; 且p=&data; 则正确引用成员a的方式是______。 A) p.data.a B) (*p).a C) p->data.a D) (*p).data.a 10. 以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是______。 A)FILE *fp; B)FILE *fp; fp=fopen("file1","rb"); fp=fopen("file1","r+"); C)FILE *fp; D)FILE *fp; fp=fopen("file1","r"); fp=fopen("file1","rb+");

C语言期末考试复习题及答案

C语言期末考试复习题及答案 一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正 确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。 (1)C语言规定:在一个源程序中,main函数的位置 D 。 A)必须在最后B)必须在系统调用的库函数的后面。 C)必须在最开始。。D)可以任意 (2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A 。 A)必须为字母或下划线。。B)必须为下划线。 C)必须为字母D)可以是字母、数字和下划线中的任一种字符。 (3)下面四个选项中,均是正确的八进制数或十六进制数的选项是 B 。 A)-10 0x8f -011 B) 010 -0x11 0xf1 C) 0abc -017 0xc D) 0a12 -0x123 -0xa (4) C语言中int型数据在内存中占两个字节,则unsegned int取值范围是 A 。 A)0 ~ 65535 B)0 ~ 32767 C)-32767 ~ 32768 D)-32768 ~ 327687 (5) 若有定义:int a = 7; floa x = , y = ; 则表达式x + a % 3 * (int) (x + y) % 2/4 的值是 D 。 A) B) 0.00000 C) D) (6)已知ch是字符型变量,下面不正确的赋值语句是 B 。 A)ch = 5 + 9 ; B) ch= ' a + b '; C) ch = ' \ 0 '; D) ch= '7' + '6' ; (7) 设x , y和z是int型变量,且x = 3, y = 4 , z = 5 则下面表达式中值为0的

C语言必背18个经典程序

C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) /*内循环结束后,leap依然为1,则m是素数*/

2019年C语言期末考试题与答案

1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。 最大值第三行i<=n五行k+1 2、编写程序求无理数e的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N×M整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。例如:输入的数组为: 1 2 3 4 1 5 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 .专业资料.

.专业资料. 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun 用比较法对主程序中用户输入的具有10 个数据的数组a 按由大到小排序,并在主程序中输出 排序结果。 13、编写main 程序调用函数fact 求解从m 个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m 不能小于n ,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a 和b 分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 19、对任意输入的 x ,用下式计算并输出 y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m 以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x 是否是同构数。若是同构数,函数返回1; 否则返回0。x 的值由主函数从键盘读入,要求不大

大学C语言期末考试试题及答案

大学C语言期末考试试题 一选择题(7分,每小题0.5分) 1。C语言源程序的基本单位是()。 A 过程B函数C子程序D标识符 2.下列程序的输出结果是()。 main( ) { inta=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A7 B8 C9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534;a=(int)125.521%4;a=5<<2; A125,31,1 B125,1,20 C 125,31,20D125.534,2,20 5。设有如下程序段,下面描述中正确的是( )。 int k=10;while(k=0)k=k—1; A循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6。以下程序的输出结果为( ). int i; void prt() { for(i=5;i<8;i++) printf(”%c”,'*’); printf("\t"); } main( ) { for(i=5;i<=8;i++)prt( ); } A *** B ************ C *** *** D * ** 7。在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8。以下函数调用语句中含有( )个实参. func((e1,e2),(e3,e4,e5)); A 2 B3 C5 D语法错误 9.以下程序的输出结果为(). #defineADD(x)x*x main( ) {int a=4,b=6,c=7,d=ADD(a+b)*c; printf(”d=%d",d);

c语言期末考试试题及答案

1. 一个C程序的组成部分可以是()。 A)一个主函数和一至若干个其他函数B)一至若干个主函数 C)一个主程序和一至若干个其他函数D)一个主程序和一至若干个子程序 2. 一个C程序的执行是从()。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 (C)本程序的main函数开始,到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始,到本程序main函数结束 3. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。 A)必须为字母B)必须为下划线C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 4. 设有定义:int m=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是()。 A)–1 B)0 C) 1 D) 2 5. 表达式11&10的结果用二进制表示为()。 A)11B)3C)1D)10 6. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是()。 (A)3(B)0(C)9(D)-12 7. 在下列选项中,不的赋值语句是()。 A)t/=5;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1; 8. 下列( )表达式不满足:当x的值为偶数时值为"真",为奇数时值"假"。 A)X%2==0B)!x%2!=0 C)(x/2*2-x)==0D)!(x%2) 9. 若有定义:int a=8,b= 5,c;执行语句c=a/b+0.4 后c的值为() A)1.4 B)1 C)2.0 D)2 10. 假设a=3,b=4,c=5,则逻辑表达式: !(a+b)+c-1&&b+c/2的值是()。 A)true B)false C)0D) 1 11. 若int a=3,b=4;则执行c=a++>2||b-->=4之后,b变量的值为()。 A)3B)0C)4D)2 12. 以下哪个表达式的值为4()

相关主题
文本预览
相关文档 最新文档