1、C语言程序设计形成性作业一一、选择题 1 .在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(A)。 A. main B. MAIN C. name D. funtion. C语言原程序文件的缺省扩展名为(D)。 A. cppB. exeC. objD. C.由C语言Fl标文件连接而成的可执行的缺省扩展名为(B)。 A. cppB. exeC. objD. C.程序运行中需要从键盘输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。 A.空格或逗号 B.逗号或回车C.回车或分号D.空格或回车.每个C语言程序的编译错误分为(B)类。 A. 1 B. 2 C. 3 D
2、 4.设x和y均为逻辑值,那么x&&y为真的条件是(A)。 A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假.设有语句“inta=12;a+=a*a;",那么执行结束后,a的值为(6 A. 12 B. 144 C. 156 D. 288. x>0&&xv=10的相反表达式为(A)o A. x<=0 || X>10 B. x<=0 && x>10 C. x<=0 || x<=10 D. x>0 && x>10.字符串“a+b=12\n”的长度为(B)。 A. 6 B. 7 C. 8 D. 9.在以下符号常量定义中。错误的定义语句格式为(C)。 A. const MI
3、 10;B. const int M2=20; C. const M3 10 D. const char mark= * 3'.带有随机函数的表达式rand()%20的值在(C)区间内, A. 1~19 B. 1~20 C. 0~19 D. 0~20.当处理特定问题时的循环次数时,通常采用(A)循环来解决。 A. for B. while C. do-while D. switch.在switch语句的每个case块中,假定都是以break语句结束的,那么此swilch语句容易 被改写为(B)语句。 A. for B. if C. do D. while. for语句能够被改写为(D)
4、语句。
A.复合 B. if C. switch D. while.下面循环语句执行结束后输出的i值为(B)。
for(int i=0;i 5、do i++;while(i*i<10);A. 4 B. 3 C. 5 D. 2
二、填空题C语言中的每条简单语句以 作为结束符。
1. C语言中的每条复合语句以—}作为结束符。
#includc 6、5,6);prinlf("%H\n”,Mean(a23)); }*/
2. 编写一个递归函数“int FF(int a[] , int n)”,求出数组a中所有元素n个元素之根并返回。
#include 7、求出并显示满足不等式1+1/2+1/3+……+l/n>5的最 小n值。
#include 8、inain() (int s=0,i=2; do (
s+=i*i;if(s+(i+2)*(i+2)>= 1 OOO)break;
else i+=2;
}while(true);
printf("i=%d,s=%d",i,s);}
6. 编写一个主函数,计算并输出n的值,其中n值由键盘输入。
#include 9、形成性考核册参考答案作业三.在下面的(C)函数声明语句存在语法错误。
A. AA(int a,int b); B. AA(int ,int) C. AA(int a;int b) D. AA(int a,int).在下面的(C)不能作为函数的返回类型。
A. void B. int C. new D. long.下面正确的函数原型语句是(B)。
A. int Funciion(void a); B. void Funclion(in();C. int Function(a);D. void int(double a);
4.函数调用func(expl.exp2),exp3*exp4-e 10、xp5)中所含实参的个数为(B)个。
A. 1 B. 2 C. 4 D. 55.下面的标识符中,(C)是文件级作用域。
A.函数形参 B.语句标号C.[电脑商场特别版1]变量p的正确语句为(B )。
A. double p=&k;B. double *p=&k;C. double &p=*k;D. char *p=" Thank you!w ;
13 .假定一条定义语句为“int a[10],x,*pa=a/;假设要把数组a中下标为3的元素赋值给x, 那么不正确的语句为(DA. x=pa[3]; B. x=*(a+3); C. a=a[3]; D. x=*pa+3;
14 .假定有定 11、义“intb[IO];inl*pb;",那么不正确的赋值语句为(C )。
A. pb=b; B. pb=&b[O]; C. pb=b+2; D. pb=b[5];.假定指针变量p定义为“int*p=ncwint(l(X));",要释放p所指向的动态内存,应使用语 句(D )。
A. dclctc[p]; B. delete *p; C. delete &p; D. delete []p;16.假定指针变量p定义为“int *p=calloc(30,sizeof(in。);",要释放p所指向的动态内存, 应使用语句(D )o
A. delete[p]; B. deldete(p); C. 12、free[]p; D. free(p);.在C语言中,一个函数由函数头和—函数体 组成。
1 .在函数外定义的变最称为全局变显,假设没有被初始化那么系统隐含对它所赋的初值为 ―0 0.如果一个函数只允许同一程序文件中的函数调用,那么应在访函数定义前加上的C保存字 为 为static。
2 .如果一个函数直接或间接地调用自身,这样的调用被称为—递归 调用。
3 .调用系统函数时,要先使用#由日同6命令包含该函数的原型语句所在_头_文件。
4 .函数形参的作用域是该函数的—内部—o.假定p所指对象的值为25, p+1所指对象的值为46,贝U*p++的值为_25。
5 .假定p所指对象的值 13、为25, p+1所指对象的值为46,那么*++p的值为_46。
6 .假定p所指对象的值为25, p+1所指对象的值为46,那么执行“*(p++);“语句后,p所指 对象的值为_46 o.假定a是一个指针数组,那么a+1所指对象的地址比a地址大_4一字节。
7 .假设要把一个整型指针p转换为字符指针,那么采用的强制转换表达式为_(char*)p。
8 .假定一个数据对象为int*类型,那么指向该对象的指针类型为 o.假定p是一个指向整数对象的指针,那么用_&p_表示指针变量p的地址。
9 .假设p指向x,那么*p与x的等价的。
10 . NULL是一个符号常量,通常作为空指针值,它值 14、为_ ' \()' (ASCH码0)—。
三、写出以下每个程序运行后的输出结果#include 15、3);SB('A');
printf("\n");I
输出结果为:
GGPPBBWWPress any key to continue
1. #include 16、n");exit(l);) )return x;
}void main(){
int x=20.y=8;printf("%3.21f",SD(x,y, printf(',%3.21f",SD(x,y;*'));
printf("%3.2If",SD(x,y,'/'));)
输出结果为:
12.0() 160,(X) 2.50Press any key to continue
2. #include 17、
int x=18,y=23;prinlf("main:x,y=%d,%d\n",x,y); WF(x,y);
x=2*x;
printf("main:x,y=%d.%d\n",x,y);)
输出结果为:
main:x,y= 18,23subs:x,y=41,64
niain:x,y=36,23Press any key to continue
3. #includc 18、n",s);)
void fun(char ss[l){
int i,n=strlcn(ss);
for(i=0;i 19、的插入位置 if(x>a[j])a[j+1]=a[j];else break;
a[j+l]=x;
)) void main()
(
int i;
int a[6]={20,15,32,47,36,28);
Inser(Sorl(a,6);
for(i=0;i<6;i++)printf("%d ",a[i]);
printfC^n");}
输出结果为:
47 36 32 28 20 15Press any key to continue
5. #include 20、 i,*p=a; for(i=0;i<8;i++){; printf("%5d ”,*p++);
if( (i+l)%4==0 )printf("\n"); ))
输出结果为:
3579
11131517Press any key to continue
6. #include 21、 printf("%d %d\nn,b,c);
}输出结果为:50 60
Press any key to continue#include 22、nclude 23、ude 24、d\nM,c*10);)
函数功能为:
函数ff让两个数相加,要求输入其和,判断结果是否正确。在主函数中用随机函数产生两 个20以内的随机整数,通过10次调用这个函数,算对一次得10分,计算所得分 4. int fun6(int in,int n,int b=2) (
if(m 25、假设最后一个参数不小于前2个参数,那么返回前2参数之乘积; 否那么,通过递归调用,返回前2参数最小公倍数的n倍数。
5. #include 26、ude 27、 B. struct BOOK x={ "C++ Programming” ,27.0};C. struct BOOK *x=nialloc(sizeof(BOOK)); D. struct BOOK **x=&book;
1. 假定有 “struct BOOK{char【iUe[40];floal price;} book;",那么正确的语句为(B)。
A. struct BOOK x=&book;B. struct BOOK *x=&book;C. struct BOOK x=calloc(BOOK);D. struct BOOK *x=BOOK;
3 .表示文件结束的符号常量为( 28、C)。
A. eof B. Eof C. EOF D. feof. C语言中系统函数fopen()是(D) 一个数据文件的函数。
A.读取 B.写入 C.关闭 D.翻开.从一个数据文件中读入以换行符结束的一行字符串的函数为(B)。
A. gets() B. fgets() C. getc() D. fgetc().向一个二进制文件写入信息的函数fwrite()带有(D)参数。
A. 1B. 2C. 3D. 4.假定一个结构类型的定义为“struct A{int a,b;A*c;};",那么该类型的大小为—12 字节。
1 .假定一个结构类型的定义为“struct B{int a[5] 29、char那么该类型的大小为—24字节。
2 .假定一个结构类型的定义为 Mstruct D{int a;union{int b;double c;);struct D* d[2];};n» 那么该 类型的大小为―2()字节。
3 .假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态 数组,那么使用语句的表达式为 struct Worker* r=—(Workcr*)malloc(n*sizcof(Worker));。
4 .假定要访问一个结构x中的由a指针成员所指向的对象,那么表示方法为.假定要访问一个结构指针p所指向对象中的b指针成员所指的对象 30、那么表示方法为
*(p->b)一.与结构成员访问表达式(*fp).score等价的表达式是—fp->score。
三、写出以下每个程序运行后的输出结果#include 31、tf("%s %d %6.2f\n",p->name,p->age,p->pay);)
输出结果为:wanghua 52 23.50wanghua 52 23.50 Press any key to continue
1. #include 32、y(x.name,t);
x.age=d;x.pay=f;
x.age++;x.pay*=2;
printf("%s %d %6.2f\n",x.name,x.age,x.pay);}
输出结果为:
louring 39 986.00Press any key to continue
2. #include 33、2){
if(r 1 .age 34、 to continue
四、写出以下每个函数的功能. void QA(struct Worker a[j,int n){
int i;
for(i=0;i 35、t Worker类型的对象a[n]的各个元素的值. struct StrNode *QB(int n){
StrNode *f,*p;
if(n==O)return NULL:
f=(StrNode*) malloc(sizeof(struct StrNode));
scanf("%s",f->name);
P=f;
while(-n){.在C语言程序的每个程序行后面或单独一行的开始使用注释的标记符为
1 .单行或多行注释的结束标记符为_*/o.在一个C程序文件中,假设要包含另外一个头文件或程序文件,那么应使用以_#inchide一 标识符开始的预处理命令。
2 .命令中所包含 36、的头文件,可以是系统定义的头文件,也可以是一用户一定义的头文件。
3 . 一个函数定义由_函数头 和函数体两局部组成。
4 .用于输出表达式的标准输出函数是_printf().当不需要函数返回任何值时,那么应使用_void 标识符定义函数类型。
5 .执行“printf("%d-%d=%d”,43,18,43-18); ”语句后得到的输出结果为_43-18=25.
6 .每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为一warning.每个C程序文件在编译时可能出现有致命性错误,其对应的标识符为_error
7 .十进制数25表示成符合C语言规那么的十六进制数为__0xl 37、9_。
8 .在C语言中,转义字符序列—\n—表示一个换行符。
9 .执行“printf( “%c",' F' -2);”语句后得到的输出结果为_D —。
10 .‘A'~'Z'的ASCH码为65-90,当执行“int x='C'+5;”语句所x的值为—72—.
11 .假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,那么x的值为4.
12 . char类型的大小为_1一个字节。
13 . int类型的大小为_4一个字节。
14 . floal类型的大小为_4_个字节。
15 .十进制数28类型为—int—。
16 .十进制数3.26类型为 38、—double一。
17 .假设需要定义一个符号常量,并且使C语言能够进行类型检查,那么应在定义语句的开始使用保存字 const一。
18 .使用const语句定义一个符号常量时,那么必须对它同时进行_定义类型和赋初值一。
19 .执行“intx=45,y=13;printf( "%d",x%y);”语句序列后得到的输出结果为一6一。
20 .假定x=5,那么表达式2+X++的值为_7_。
21 .表达式(float)25/4 的值为―6.25—。
22 .表达式(int)l4.6%5的值为—4—。
23 .表达式x=x+l表示成增量表达式为_x++o.增昌表达式++y表示成赋值 39、表达式为_y+=i__o
24 .关系表达式(x!=0)的等价表达式为—x_o.假定不允许使用逻辑非操作符,那么关系表达式x+y>5的相反表达式为—x+y<=5_o
25 .假定不允许使用逻辑非操作符,那么逻辑表达式a>b || b==5的相反表达式为_a<=b && (b>5 || b<5)o.假设 x=5,y=10,那么 x>y 逻辑值为false。
26 .假设 x=5,y=10,那么 *<二丫逻辑值为true。
27 .假定x=5,那么执行“a=(x?10:20);”语句后a的值为_10_。
28 .执行"lypedef int DalaType;“语句后,在使用int定义整 40、型变量的地方都可以使用—DataType—来定义整型变量。
29 .在switch语句中,每个语句标号所含保存字case后面的表达式必须是一整型一。
30 .作为语句标号使用的C保存字case和default只能用于_switch一语句的定义体中。
31 .在switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下 执行,当碰到下一个标号位置时(停止/不停止)—不停止_执行。
p=p->ncxt=(StrNodc*)malloc(sizcof(struct StrNodc)); scanf("%s".p->name);
)p->nexl=NULL; return 41、 f;
)假定结构struct StrNode的定义如下:
struct StrNode !
char name[51;
struct StrNode *ncxt;};
函数功能为:建立一个具有n个结点,每个结点的类型是StrNode的链表3. struct InlN(xle* FindMax(struct IntNode *f) |
struct IntNode *p=f;
if(!f)return NULL;
f=f->ncxt;
while(f){if(f->data < p->data)p=f;
f=f->next;) return p;
)假定结构struct 42、StrNode的定义如下:
struct IntNode{
int data;
struct IntNode * next;};
函数功能为:
在一个具有n个结点,每个结点的类型是IntNode的链表中寻找data值最大的结点 4. int Count(struct IntNode *f) (
int c=0:while(f){C++; f=f->next;
) return c;)
假定结构struct StrNode的定义如下:
struct IntNode{
int data;
struct IntNode * next;I;
函数功能为:计算一个具有n个结点,每 43、个结点的类型是IntNode的链表的结点数struct IntNode* Input(int n) (
struct IntNode
f=(In(Node*)malloc(sizeof(strucl IniNode));
if(n==O)return NULL:
f->next=NULL;
printf("从键盘输入%d个整数:”,n);
while(n-){scanf("%d",&(f->data));
p=f;f=(IntNode*)malIoc(sizeof(struct IntNode)); f->next=p;
) return f->next;)
假定结构stru 44、ct StrNode的定义如下:
struct IntNodc{
int data;
struct IntNode * next;);
函数功能为:在类型为IntNode的链表后输入n个结点的数据#include 45、out); fpulc('\n',fout);
) fclose(fout);)
void main() (
char *p="d:\\xxk\\xuxk 1 .txt";
JA(p);函数功能为:在已经存在的d:\xxk文件夹下(如不存在此文件夹程序运行会出错)翻开 xuxkl.txt文件,并向其中输入一系列长度小于20的字符串,直到输入字符串end结束。
附录资料:不需要的可以自行删除Abstract: Based on the comprehensive analysis on the plastic part's structure service requirement, 46、mounding quality and mould menu factoring cost. A corresponding injection mould of internal side core pulling was designed. By adopting the multi-direction and multi-combination core-pulling. A corresponding injection mould of internal side core pulling was designed, the working process of the mould 47、 was introduced
C语言详解-枚举类型注:以下全部代码的执行环境为VC++ 6.0
在程序中,可能需要为某地整数定义一个别名,我们可以利用预处理指令#define来完成这 项工作,您的代码可能是:
# dcfinc MON 1define TUE 2
# define WED 3define THU 4
# define FRI 5define SAT 6
# define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。
1 .定义一种新的数据类型一枚举型
以下代码定义了这种新的数据类型一枚举型enum DAY
{
48、
MON=LTUE, WED, THU, FRI, SAT, SUN};
(I)枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号, 隔开。
⑵DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3)第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4)可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5)枚举型是预处理指令#define的替代“(6)类型定义以分号;结束。
2 .使用枚举类型对变量进行声明新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单 49、精度浮点型float,双精度浮点型double,字符型char,短整型short等等。用这些基本数据 类型声明变量通常是这样:
chara; 〃变量a的类型均为字符型charcharletter;
inix,y,
z; 〃变量x,y和z的类型均为整型int int number;double m, n;
double result; 〃变量result的类型为双精度浮点型double 既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。
方法■:枚举类型的定义和变量的声明分开enum DAY (
MON= 1, TUE, WED. THU, FRI, SAT, 50、SUN }; enum DAY yesterday;enum DAY today;
enum DAY tomorrow; 〃变量 tomorrow 的类型为枚举型 enum DAYenum DAY good_day, bad_day; 〃变量 good_day 和 bad_day 的类型均为枚举型 enum DAY 方法二:类型定义与变量声明同时进行:
enum〃跟第一个定义不同的是,此处的标号DAY省略,这是允许的。 {Saturday, sunday = 0, monday, luesday, Wednesday, thursday, friday
} workday; 〃变量wor
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818