1、函数fun的功能是计算x^n。
double fun(double x,int n)
{int i; double y=1;
for(i=1;i<=n;i++) y=y*x;
return y;
}
主函数中已经正确定义m、a、b变量并赋值,并调用fun 函数计算:m=a^4+b^4-(a+b)^3。实现这一计算的函数调用语句为______。
答案: 1:fun(a,4)+fun(b,4)-fun((a+b),3)
评析:
函数fun的功能是计算x的n次方,所以a的4次方的调用函数应当为fun(a,4),b的4次方的调用函数应当为fun(b,4),(a+b)的3次方的调用函数应当为
fun((a+b),3),所以,实现m=a^4+b^4-(a+b)^3这一计算的函数调用语句为:
fun(a,4)+fun(b,4)-fun((a+b),3);。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
2、以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。请填空。
void sstrcpy(char *s,char *t)
{ while(*s++=______);}
main()
{ char str1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
答案: 1:*t++
评析:
要使sstrcpy()函数实现字符串复制,必须将t字符串中的每个字符逐个拷到s字符串中,所以可以使用
*s=*t;s++;t++。或者可以写成*s++=*t++,本题只有一个空,可以填入*t++。
知识点:知识点/指针/用指针作函数参数
3、以下程序给指针p分配三个double型动态内存单元,请填空。
#include
main()
{ double *p;
p=(double*)malloc(______);
p[0]=1.5; p[1]=2.5;p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
答案: 1:3*sizeof(double)
评析:
malloc(size)在内存的动态存储区中分配一个长度
为size的连续空间。此函数的值(即"返回值")是一个指针,它的值是该分配域的起始地址。如果此函数未能成功地执行,则返回值为0。
本题中要求分配三个double型动态内存单元,所以size处应当为3*sizeof(double)。
知识点:知识点/指针/各类型的指针及指针变量,通过指针引用各类型数据
4、以下程序运行后的输出结果是______。
main()
{ int a,b,c;
a=25;
b=025;
c=0x25;
printf("%d %d %d\n",a,b,c);
}
答案: 25 21 37
评析:
本题考查的是格式字符的输出。
变量a、b、c分别为十进制、八进制、十六进制的25,格式字符d所代表的含义是,以带符号的十进制形式输出整数(正数不输出符号),所以本题a=25则输出值为25;b=025转换为10进制:b=2*8+5=16+5=21,则输出的值为21;c=0x25转换为10进制:c=2*16+5=32+5=37,则输出的值为37,而且printf中三个%d之用的是空格,所以输
出的几个数字之间也必须是空格。
知识点:知识点/函数/变量的存储类别,变量的作用域和生存期
5、以下程序运行后的输出结果是______。
main ()
{ char a[]="Language",b[]="Programe";
char *p1,*p2; int k;
p1=a; p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k)); }
答案: gae
评析:
本题考查的是字符指针变量与字符数组。
解题过程:
(1)当k=0时,*(p1+0)='L',*(p2+0)='P',L!=P,所以没有输出
(2)当k=1时,*(p1+1)='a',*(p2+1)='r',a!=r,所以没有输出
(3)当k=2时,*(p1+2)='n',*(p2+2)='o',n!=o,所以没有输出
(4)当k=3时,*(p1+3)='g',*(p2+3)='g',g==g,所以输出g
(5)当k=4时,*(p1+4)='u',*(p2+4)='r',u!=r,
所以没有输出
(6)当k=5时,*(p1+5)='a',*(p2+5)='a',a==a,所以输出a
(7)当k=6时,*(p1+6)='g',*(p2+6)='m',g!=m,所以没有输出
(8)当k=7时,*(p1+7)='e',*(p2+7)='e',e==e,所以输出e
(9)当k=8时结束循环
(10)输出结果为:gae。
知识点:知识点/数组的定义和引用/字符串与字符数组
6、以下程序通过函数SunFun和f(x),x=0到10,这里
f(x)=x^2+1,由F函数实现,请填空。
main()
{ printf("The sun=%d\n",SunFun(10));}
SunFun(int n)
{ int x,s=0;
for(x=0;x<=n;x++)s+F(______);
return s;
}
F(int x)
{ return (______);}
答案: 1:x
2:x*x+1
评析:
本题考查的是函数的调用。
解题过程:
(1)f(x)的含义为x的平方加上1
(2)所以F(int x)的返回值应该为 x*x+1
(3)SunFun(10)的作用是将0到10之间所有的整数相加求和
(4)所以F()的形式参数为x。
知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用
7、以下程序中,函数SumColumMin的功能是:求出M行N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
#define M 2
#define N 4
void SumColumMin(int a[M][N],int *sum)
{ int i,j,k,s=0;
for(i=0;i { k=0; for(j=1;j if(a[k][i]>a[j][i])k=j; s+=______ ; } ______ =s; } main() { int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin(______); printf("%d\n",s); } 答案: 1:a[k][i] 2:*sum 3:x,&s 评析: 本题考查的是函数参数的传送。 解题过程: (1)执行以i为变量的for语句 1)k=0 2)执行以j为变量的for语句 ①当j=1 ②比较a[0][0]和a[1][0]的大小,如果a[0][0]大于a[1][0]则k=1;如果a[0][0]大于a[1][0]则k=0 ③j=2所以结束循环 3)此时a[k][i]就代表第一列中最小的值,要累计所有列中的最小值的和,应该在第一空内填写 a[k][i],用变量s累加。 (2) SumColumMin是一个无返回值的函数,其中形式参数*sum是一个指针类型,所以第二空应该填写 *sum,用来将该指针变量指向s (3)当主函数main调用SumColumMin时,需要两个实际参数,一个代表被操作的数组,一个为指向累计和的指针变量,所以第三个空应该为 x,&s,分别代表已经被 定义的数组x,和整型变量s的地址。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 8、以下程序的输出结果是。 main() { int a=0; a+=(a=8); printf("%d\n",a); } 答案: 16 评析: 本题的考查点是表达式。 表达式a+=8相当于a=a+8,对表达式逐步求解过程如下: a+=(a+8)此时,a的值赋值为8,而不再是0; a+=8 a=a+8 a=16 故本题答案为16。 知识点:知识点/函数/形式参数与实在参数,参数值的传递 9、以下程序的输出结果是______。 #define MAX(x,y) (x)>(y)?(x):(y) main() { int a = 5, b = 2,c = 3, d = 3, t; t = MAX(a + b, c + d)*10; printf("%d\n", t); } 答案: 7 评析: 本题的考查点是宏定义。 宏替换后,表达式t = MAX(a + b, c + d)*10即变为:t = (a+b)>(c+d) ? (a+b) : (c + d)*10; 由于(a+b)>(c+d)为真,所以t = (a+b),即为7。 故本题答案为:7。 知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义 10、函数mycmp(char *s,char *t)的功能是比较字符串s 和t的大小,当s等于t时返回0,当s>t返回正值,当s mycmp( char *s,char *t) { while (*s==*t) { if (*s=='\0')return 0; ++s;++t; } return(______); } 答案: *s-*t 评析: 本题的考查点是比较字符串的大小。 函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数组s和t的第一个字符,在while循环中,是通过s和t值的不断变化改变两个串的第一个字符,要返回s和t的第一个不同字符的ASCII码的差值,必须使用"*s-*t"得出。 故本题答案为:*s-*t。 知识点:知识点/函数/库函数的正确调用 11、若给fun函数的形参s传送字符串:" 6354abc",则函数的返回值是______。(字符串中包括空格) long fun(char s[ ]) { long n; int sign; for (; isspace(*s);s++); sign=(*s=='-')?-1:1; if (*s=='+' || *s=='-') s++; for (n=0;isdigit(*s);s++) n=10*n+(*s-'0'); return sign*n; } 答案: 6354 评析: 本题的考查点是函数的返回值。 这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应各个字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是"6354"。 故本题答案为:6354。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 12、以下程序段的输出结果为______。 char *p;int i,d; p="PDP1-0"; for(i=0;i<7;i++) { d=isdigit(*(p+i) ); if(d!=0) printf("%c\n",*(p+i) ); } 答案: 1 评析: 本题的考查点是函数isdigit()。 这段程序的目的是按从左至右的顺序从字符串p中找出阿拉伯数字字符,如果找到,将其打印出来。最后的输出应当是: 1 知识点:知识点/函数/库函数的正确调用 13、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是______。 # include main( ) { char str1[ ]="How do you do", *p1=str1; strcpy(str1+strlen(str1)/2,"es she"); printf("%s\n",p1); } 答案: How does she 评析: 本题的考查点是字符串拷贝函数strcpy()。 strlen(str1)是求str1字符串的长度,为13,然后,进行除2运算,结果为6。strcpy()函数是把字符串"es she"拷贝到str1后的第6个字符后面,也就是说,拷贝后的结果是"How does she"。 故本题答案为:How does she。 知识点:知识点/函数/库函数的正确调用 14、下面的函数strcat(str1,str2)实现将字符串str2拼接到字符串str1后面的功能。请填空使之完整。char *strcat(str1,str2) char *str1,*str2; { char *t=str1; while(______)str1++; while(______); return(t);} 答案: 1:*str1!='\0' 2:*str1++=*str2++ 评析: 本题的考查点是字符串连接函数strcat()。 函数strcat(str1,str2)实现将字符串str2连接到字符串str1后面,所以首先要找到字符串str1的串尾,根据C语言的语法规定,一个串的串尾一定是一个隐含字符"\0",而在程序中,对字符串中字符的访问是通过两个指针变量来完成的,因此要找到字符串str1的串尾,要判断*str1是否为"\0",要找到字符串str2的串尾,要判断*str2是否为"\0",程序中必须可以使字符串中字符逐一顺序体现,所以在题中我们应填写"*str1"和 "*str1++=*str2++ "。 知识点:知识点/函数/库函数的正确调用 15、以下程序的输出结果是______。 void fun() { static int a=0; a +=2; printf("%d",a); } main() { int cc; for(cc=1;cc<4;cc++) fun(); printf("\n"); } 答案: 246 评析: 循环for(cc=1;cc<4;cc++)被执行了3次。在函数fun 中,由于a是static型变量,所以函数第1次调用后,a= 2;第2次调用后,a = 4;第3次调用后,a = 6。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 16、若要使指针p指向一个double类型的动态存储单元,请填空。 p=______malloc(sizeof (double)); 答案: (double*) 评析: 函数malloc返回的是void*而不是double类型指针。所以要使指针p指向一个double类型的存储单元就必须进行强制类型转换。 知识点:知识点/函数/函数的类型和返回值 17、下列程序段的输出结果是______。 main() { char b[]="Hello,you"; b[5]=0; printf("%s\n",b); } 答案: Hello 评析: 字符串中,数值0或符号'\0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。 知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用 18、下列程序的输出结果是______。 void fun(int *n) { while((*n)--); printf("%d",++(*n)); } main() { int a=100; fun(&a); } 答案: 0 评析: 在函数fun()中,while((*n)--)是先引用*n的值,再做(*n)-- 运算,所以循环结束时*n的值为0,再做(*n)-- 运算后,*n的值为-1;执行++(*n)后,*n的值是0。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 19、以下程序中,主函数调用了LineMax函数,实现在N 行M列的二维数组中,找出每一行上的最大值。请填空:#define N 3 #define M 4 void LineMax(int x[N][M]) { int i,j,p; for(i=0;i { p=0; for(j=1;j if(x[i][p] printf("The max value in line %d is %d\n",i,______); } } main() { int x[N][M]={1,.5,7,4,2,6,4,3,8,2, 3,1}; ______; } 答案: 1:p=j 2:a[i][p] 3:LineMax(x) 评析: LineMax函数中运用了两个循环,外循环来控制数组的行,内循环控制列,在寻找每行最大的元素时,先把每行的第一个元素列下标即0赋给p,然后把后面的数逐一与之比较,如果大于它,则把大的数的列下标重新赋给p。 所以(1)处应该填p=j; 内循环结束后,便获得了本行中最大的数,即 a[i][p],这也就是(2)处应该填写的答案; 而(3)处,很显然是要调用函数,关键就在于参数怎么写,函数中需要的是整个数组,所以应该把数组名做为实参,传递过去,(3)处的答案应该是LineMax(x)。注意大小写,C语言中大小写是不等价的。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 20、若有如下结构体说明: struct STRU { int a,b;char c: double d; struct STRU *p1,*p2; }; 请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。 ______t[20] 答案: struct STRU 评析: 本题主要考查考生对C语言中结构体的掌握。 结构体类型是构造数据类型,是用户自已定义的一种类型。 结构体类型的定义: struct 结构体类型名 { 成员项表; }; 定义结构体变量的的形式为: struct 结构体类型名变量1,变量2,... 其中变量包括:一般变量、指针变量、数组变量等。知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用 21、以下程序运行后的输出结果是______。 void fun(int x,int y) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y);} main() {int x=2,y=3; fun(x,y); printf("%d,%d\n",x,y); } 答案: 3,2,2,3 评析: 本题的考查点是交换变量的值。 被调函数fun()实现的功能是交换变量x和y的值并打印,由于该函数无返回值,所以在主函数中打印出的x 和y的值仍然为2,3。 故本题答案为:3,2,2,3。 知识点:知识点/函数/形式参数与实在参数,参数值的传递 22、下面程序的运行结果是:______。 #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); } 答案: 1000 10 评析: 本题的考查点是宏定义。 根据宏定义,变量i1的值为1000/10*10=1000,变量i2的值为1000/(10*10)=10。 故本题答案为:1000和10。 知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义 23、下面程序的运行结果是:______。 void swap(int *a,int *b) {int *t; t=a;a=b;b=t; } main() {int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf("%d%d\n",*p,*q); C语言常见复习题及参考答案 一、选择题 1.下述标识符中,()是合法的用户标识符。 A.A#C B.getch C.void D.ab* 2.在C语言中,字符型数据在内存中是以()形式存放的。 A.原码 B.BCD码 C.反码 D.ASCII码 3.以下选项中不合法的用户标识符是()。 A.abc.c B.file C.Main D.PRONTF 4.以下选项中不合法的用户标识符是()。 A.123 B.printf C.Anbsp; D.Dim 5.可以在C语言程序中用做用户标识符的一组标识符是()。 A.void B.as-b3 C.for D.2c define -123 -abc Do WORD If cas SIG 6.在以下各组标识符中,合法的用户标识符是(1)、(2)、(3)。 (1)A.001 B.table_1 C.0_t D.k% Int t*.1 W10 point (2)A.Fast_ B.void C.pbl D. Fast+Big abs fabs beep (3)A.xy_ B.longdouble C.*p D.CHAR 变量1 signed history Float 7.()是构成C语言的基本单位。 A.函数 B.过程 C.子程序 D.子例程 8.若有说明:char s1='\067';char s2="1";char s3='1';则s1中(1),s2中(2),s3中(3)。 (1).A.包含3个字符 B.包含2个字符 C.包含1个字符 D.无定值,说明不合法 (2).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 (3).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 9.若x为int型变量,则执行以下语句后,x的值为 x=6; x+=x-=x*x A.36 B.-60 C.60 D.-24 10.在C语言中,char 型数据在内存中是以()形式存储的。 A.原码 B.补码 C.ASCII码 D.反码 11.以下运算符中优先级最低的算符为(),优先级最高的为()。 A.&& B.& C.|= D.|| E.?: F.!= 12.若有运算符>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列顺序为 A.*= << > % sizeof B.<< *= > % sizeof C.*= > << sizeof % D.*= > << % sizeof 13.若有以下类型说明语句 char w; int x; float y; double z; 则表达式w*x+z-y 的结果是()类型。 A.float B.char C.int D.double 14.若w,x,y,z 均为int 型变量,则执行下面的语句后, w=(1), x=(2), y=(3), z=(4)。 w=5; x=4; y=w++*w++*w++; z=--x*=--x*--x; 二、填空题 1、C语言中对文件读写之前必须先打开文件,文件的打开是通过调用________函数来实现。 答案: 1:fopen#fopen()#fopen() 知识点:知识点/基本理论/C11文件/C11_2文件函数 2、C语言中文件操作结束节后,必须关闭文件。而且关闭文件是通过调用__________函数来实现。 答案: 1:fclose#fclose()#fclose() 知识点:知识点/基本理论/C11文件/C11_2文件函数 3、字符串函数________用于从指定的磁盘文件中读出一个字符串。 答案: 1:fgets#fgets() 知识点:知识点/基本理论/C11文件/C11_2文件函数 4、字符串函数___________用于把一个字符串写入指定的磁盘文件中。 答案: 1:fputs#fputs() 知识点:知识点/基本理论/C11文件/C11_2文件函数 5、字符读写函数____________是用于从磁盘文件中读出一个字符。 答案: 1:fgetc#fgetc()#getc#getc() 知识点:知识点/基本理论/C11文件/C11_2文件函数 6、字符读写函数____________是用于把一个字符写入磁盘文件。 答案: 1:fputc#fputc()#putc#putc() 知识点:知识点/基本理论/C11文件/C11_2文件函数 7、共用体类型变量的定义关键字是________。 答案: 1:union 知识点:知识点/基本理论/C10共用体与枚举类型 8、定义枚举类型时采用的关键字是__________。 答案: 1:enum 知识点:知识点/基本理论/C10共用体与枚举类型 9、在C语言中,从参数的形式看,函数可以分为两类:无参函数和____________函数。 答案: 1:有参 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 10、在C语言中,函数的返回值是由___________语句传递的。 答案: 1:return#return() 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 11、在C语言中,按函数在程序中出现的位置可分为以下三种调用方式:函数语句、函数表达式和函数 __________。 答案: 1:参数 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 12、在C语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。 答案: 1:直接 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 13、在C语言中,若确实不要求返回函数值,则应将函数定义为___________类型。 答案: 1:void 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 14、在C语言中,假使X为基本整型变量,如果我们采用printf("格式控制",X)格式输出X,那么"格式控制"具体表示为"__"。 1、在考生目录下,给定程序FILL1、C的功能就是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该就是:20。 若输入:202,则输出应该就是:0。 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更 改程序的结构! #include 1. 一条简单语句是以________字符作为结束符的,一条复合语句是分别以 ________字符和________字符作为开始符和结束符的。 2. 任何一个C++程序至少且只能包含一个________函数,且程序总是从这个函数开始执行,不论这个函数的位置如何。一个函数定义由________和________两部分组成。 3. C++头文件和源程序文件的扩展名分别为________和________。 4. cout与操作符_______配合使用才能显示输出,cin与操作符_____配合使用才能实现输入。 5. 数据类型int,char,bool,float,double, int * 等的类型长度分别为________、________、________、________、________和________。 6. 数值常量46、0173和0x62对应的十进制值分别为________、________和________。 7. 字符串”It\’s\40a\40C++programe!”中包含有__________个字符。 8. 若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为________和 ________。 9. 若x=25,则计算y=x--表达式后,x和y的值分别为________和________。 10. 假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为________和________。 11. 假定x=64,y=88,则x<<2和y>>2的值分别为________和________。 12. 假定x是一个逻辑量,则x&&true的值与________的值相同,x||false的值也与________的值相同。 13. 假定x是一个逻辑量,则x&&!x和x||!x的值分别为________和________。 14. 假定x=10,则表达式x<=10?20:30的值为________。 15. 表达式sqrt(81)和pow(6,3)的值分别为______________和 ______________。 16. 数学算式(1+x)sin48°和axbex+1对应的算术表达式分别为________和 ________。 17. 逻辑表达式:a>=x||b>2*y+10的相反式为:________。 18. 在嵌套的if语句中,每个else关键字与它前面最接近的________关键字相配套。 19. 在for语句中,假定循环体被执行次数为n,则<表达式1>共被计算________次,<表达式2>共被计算________次,<表达式3>共被计算________次。20. 执行for和while循环时,每次是先进行________的判断,然后再执行 ________,执行do循环时则相反。 三、程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include 【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include 1. 在考生目录下,给定程序FILL1.C的功能是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include /**************found************/ ___(1)___; scanf("%s",s); /**************found************/ for(i=0;___(2)___;s[i] != ‘\0’ ;i++) n=n*10+s[i]-'0'; printf("n=%ld\n",n); } 3. 在考生目录下,给定程序FILL1.C的功能是:输出Fabonacci数列:1,1,2,3,5,8,……的前20项的 项值,要求每行输出5个数。请填空。 程序有两个空(1)、(2)需要补充完整。请将程序调试出 所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更 改程序的结构! #include "stdio.h" main() { long int f[20]={1,1}; int i; clrscr(); /**************found************/ ___(1)___; printf("%8ld,%8ld",f[0],f[1]); for(i=2;i<20;i++) { f[i]=f[i-1]+f[i-2]; /**************found************/ if(___(2)i%5==0) printf("\n"); printf("%8ld",f[i]); } printf("\n"); } 4. 在考生目录下,给定程序FILL1.C的功能是:实现在N行M列的二维数组中,找出每一行上的最大值,且原数组值不变。 例如:如果二维数组元素的值为: 1 5 7 4 2 6 4 3 8 2 3 1 时,程序的运行结果应为: The max value in line 0 is 7 The max value in line 1 is 6 选择题(30分)(第一部分分10分,第二部分12分,第三部分8分) 第一部分:简单类题目(50个题目,从中选择10,每题1分) 1、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为(C)A.4B.16 C.32D.522 2.以下程序的输出结果(B)。 main( ) { int x1=3, x2=0, x3=0; if (x1=x2+x3) printf("* * * *"); else printf("# # # #"); } A.输出:* * * * B.输出:# # # # C.存在语法错误D.无输出结果 3.下面四个选项中,均是合法转义字符的选项是(A)。 A.'\'' '\\' '\n' B.'\' '\017' '\"' C.'\018' '\f' 'xab' D.'\\0' '\101' 'xlf' 4.若有说明:int a=1,b=2,c=3,d=4;则表达式a 二,填空题(10道小题,共20分) 1、一个C源程序中至少应包含一个[main] 函数。 2、a是整型变量,则执行表达式a=25/3%3后a的值为。[2] 3、int m=5,y=2;则表达式y+=y- =m*=y的值为。[-16] 4、执行下列语句: int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d , %d \n", a,b );的输出结果分别是[2,1] 5、条件表达式的格式为表达式1?表达式2:表达式3,若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较[高]的类型 6、当运行以下程序时,从键盘键入right? { char c1="A", c2="a", *p1, *p2; p1=&c1; p2=&c2; fun(p1,p2); printf(“&c&c\n”,c1,c2); } 运行后的输出结果是。[&c&c] 11、字符串常量“123”在内存中的字节数是。[8字节] 12、已有定义 :int x=3 ;则表达式 :x=x+1.78 的值是。【4】 13、int a=24; printf("%o ", a );输出结果是。【30】 14、当a=3,b=2,c=1时,表达式f=a>b>c的值是。【0】 15、下面程序的运行结果是。【x=1,y=20】 #include 计算机程序设计基础(C语言) 程序填空练习题 程序填空:阅读程序。在划线处填写适当的表达式或语句,使程序完整并符合题目要求 1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。 main( ) 参考答案: { char ch; ch=getchar(); if( ) ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z' printf("It is an English character\n"); else if( ) ch>='0'&&ch<='9' printf("It is a digit character\n"); else if( ) ch==' ' printf("It is a space character\n"); else printf("It is other character\n"); } 2.10个学生成绩按交换法排序。 main() { float score[10], temp1; int i, j; printf("Please enter score:\n"); for (i=0; i<10; i++) scanf("%f",&score[i]); for (i=0; i<9; i++) for (j=i+1; j<10; j++) if (score[j] > score[i]) { temp1=score[j]; score[j]=score[i]; score[i]=temp1; } printf("Sorted results:\n"); for (i=0; i<10; i++) printf("%4.0f\n", score[i]); } 11.排序函数:用交换法按成绩由高到低对学生成绩重新排序 void Sort(float score[ ],int n) { int i, j; float temp1; for (i=0; i 程序填空题 1、 #include #include 填空题: 1 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是_9____ . c=(a-=(b-5)); c=(a%11)+(b=3); 2 getchar()函数只能接收一个_字符____. 3 当a=1,b=2,c=3时,执行以下程序段后b=___2__. if (a>c) b=a; a=c; c=b; 4若输入字符串:abcde<回车>,则以下while循环体将执行__0___ 次. while((ch=getchar())=='e') printf("*"); 5 字符串的结束标志是___\0 '\0' 0 6 如果函数不要求返回值,可用__void___来定义函数为空类型. 7 将函数funl 的入口地址赋给指针变量p的语句是_p=funl; 8 设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是__12___。union stud { short int num; char name[8];float score[3]; double ave; } d,stu[3]; 1. 设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_0____. 2. 以下程序的输出结果为_9,10____, #include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);} 3. 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句 t=!(a+b)+c-1&&b+c/2 后,t的值是__1___. 4. 若输入字符串:abcde<回车>,则以下while循环体将执行 ____0_ 次. while((ch=getchar())=='e') printf("*"); 5. 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 该数组的元素中,数值最小的元素的下标值是_8____. 6. 函数不可以进行嵌套定义,但可以进行嵌套_调用____. 7. 在c程序中,只能给指针变量赋NULL值和__地址___值. 8. 设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是 _16____。 union stud { char num[6]; float s[4]; double ave; } a,*p; 1. 完成程序填空,实现输入两个数字,若两数相等,则直接输出两个数字,若不相等, 则这两个数中的较大者等于这个较大者减去较小者,再作比较,若不相等则重复上述操作, 直到两个数字相等为止。输出相等的两个数字。 while(a 【a!=b 】) { if (【a>b】) a=a-b; if (【b>a】) b=b-a; } 2. "百鸡问题" :鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 完成程序填空,实现求" 百鸡问题" 公鸡一只 5 块钱,母鸡一只三块钱,小鸡三只一块钱, 一百块钱买一百只鸡应该怎么买?也就是问一百只鸡中公鸡、母鸡、小鸡各多少? for(x=1;x<=20;【x++】) for(z=3;z<=99;【z+=3】) if(( 【5*x+3*y+z/ 3==100】)&&(x+y+z==100)) 3.完成程序填空,实现输出下图 * *** ***** ******* ***** *** * 【printf( “* ”)】 【printf( “\n ”)】 【j<=7+i】 4. 完成程序填空,将字符数组 a 的全部字符复制到字符数组 b 中(要求不用strcpy 函数)。printf("str1: 【%s 】\n",str1); for(i=0;str1[i] 【!=’\0 ’】;i++) str2[i]= 【str1[i] 】; 5. 将a++ 或++a 或a-- 或--a 填入程序填空中,实现如图所示的输出。(填入其他无效)【a++】 【a-- 】 【--a 】 6. 完成程序填空,实现输入 4 个整数,要求按由小到大的顺序输出。 { t=a;【a=c】;c=t;} { t=b;b=c; 【c=t】;} {【t=c】;c=d;d=t;} 7. 完成程序填空,输出所有的水仙花数。水仙花数是一个三位数, 其个、十、百位数字三次方之和为这个数。例如: 371=3*3*3+7*7*7+1*1*1 for(num=100; 【num<=999 】; num++) shi=【num/10%10 】 if (【num==bai*bai*bai+shi*shi*shi+ge*ge*ge 】) 1. 在考生目录下,给定程序的功能是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include <> #include <> main( ) {long int num,k; /************found************/ _____(1)_______ k=1; clrscr() ; printf("\Please enter a number:") ; scanf("%ld",&num) ; do { k*=num%10 ; /************found************/ _____(2)______ num=num/10 ; } while(num) ; printf("\n%ld\n",k) ; } 2. 在考生目录下,给定程序的功能是:从键盘上 输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数。 例如:从键盘上输入2345,则程序运行的结果应当为:n=2345。 程序有两个空(1)、(2)需要补充完整。请将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include "" main() { char s[10]; int i; long int n=0; clrscr(); /**************found************/ ___(1)___; scanf("%s",s); /**************found************/ for(i=0;___(2)___;s[i] != ‘\0’;i++) n=n*10+s[i]-'0'; printf("n=%ld\n",n); } 3. 在考生目录下,给定程序的功能是:输出 Fabonacci数列:1,1,2,3,5,8,……的前20项的 项值,要求每行输出5个数。请填空。 程序有两个空(1)、(2)需要补充完整。请将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include "" main() { long int f[20]={1,1}; int i; clrscr(); /**************found************/ ___(1)___; printf("%8ld,%8ld",f[0],f[1]); for(i=2;i<20;i++) { f[i]=f[i-1]+f[i-2]; /**************found************/ if(___(2)i%5==0)printf("\n"); printf("%8ld",f[i]); } printf("\n"); } 4. 在考生目录下,给定程序的功能是:实现在N行M列 的二维数组中,找出每一行上的最大值,且原数组值不变。 例如:如果二维数组元素的值为: 1 5 7 4 2 6 4 3 8 2 3 1 时,程序的运行结果应为: The max value in line 0 is 7 The max value in line 1 is 6 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include 【3.3】下面的程序的功能是求一维数组中的最小元素。findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include c语言程序填空!!!这就是考试题库!!! 共计131道试题 一、程序填空(共131题) Turbo C(共131试题) 3)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:已定义一个含有30个元素的数组s,函数fun1的功能是按 顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序 每五个元素求一个平均值, 并将该值存放在数组w中。 -------------------------------------------------------*/ float s[30],w[6]; fun1(float s[]) { int k,i; for(k=2,i=0;i<30;i++) { /***********SPACE***********/ ________________ ; k+=2; } } fun2(float s[],float w[]) { float sum=0.0; int k,i; for(k=0,i=0;i<30;i++) { sum+=s[i]; /***********SPACE***********/ ________________; { w[k]=sum/5; /***********SPACE***********/ ________________ ; k++; } } } main() { int i; fun1(s); /***********SPACE******** ***/ ________________; for(i=0;i<30;i++) { if(i%5==0) printf("\n"); printf("%8.2f",s[i]); } printf("\n"); for(i=0;i<6;i++) printf("%8.2f",w[i]); } 答案: 【1】s[i]=k 或s[i]=(i+1)*2 【2】if( ( i + 1 )%5 == 0 ) 或if( ( i + 1 )/5*5 ==i+1) 【3】sum=0 或sum=0.0 【4】fun2(s,w) 4)./*----------------------------- -------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:下面的程序是求 1!+3!+5!+……+n!的和。 -------------------------------------- -----------------*/ main() { long int f,s; int i,j,n; /***********SPACE******** ***/ ________________; scanf("%d",&n); /***********SPACE******** ***/ for(i=1;i<=n; ________________) { f=1; /***********SPACE******** ***/ for(j=1; ________________;j++) /***********SPACE******** ***/ ________________; s=s+f; } printf("n=%d,s=%ld\n",n,s); } 答案: 【1】s=0 【2】i+=2 或i=i+2 或i++,i++ 【3】j<=i 或i>=j 或jj 【4】f= f * j 5)./*-------------------------------------------- ----------- 【程序填空】 ---------------------------------------------------- ----- 功能:将一个字符串中下标为m的字符开始 的全部字符复制成为另 一个字符串。 ---------------------------------------------------- ---*/ #includeC语言常见复习题(选择填空)及参考答案
C语言题库(填空题部分)
C语言填空题
C语言填空题以及答案
c语言程序填空题完整
C语言填空题
c语言经典选择填空题1
c语言填空题题库
C语言考试填空题(全部答案)
C语言程序填空题及答案
C语言中常见的填空题
C语言题库填空题部分+部分程序设计
C语言填空题
C语言程序设计 程序填空题库及答案
C语言程序填空题
(完整版)全真c语言程序填空题考试题库