C语言复习题(考研版)(2)本站小编 福瑞考研网/2017-01-09
引用字母 o的表达式是( A) Aps+2 B s[2] C ps[2] D ps+=2, *ps
3.
(南京师范大学,教育技术学,2005年)如下程序的的运行结果是( D) main() {
chara[]=”programming”,b[]=”language”;
char *p1=a,*p2=b;
int i;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf(“%c”,*(p1+i)); } A、gm B、rg C、or D、ga
4.
(南京师范大学,教育技术学,2005年)设有以下语句,则( A)不是对 a数组元素的正确引用
Int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i=9; A *(*(a+i)) B *(&a[i]) C p[i] D a[p-a]
5.
(南京师范大学,教育技术学,2006年) C语言中,以下程序输出结果是:( B) chara[10]={'9','8','7','6','5','4','3','2','1',0},*p; int i=7;p=a+i; printf("%s\n",p-2);
A. 4 B. 4321 C.54321 D,43210
6.(南京师范大学,教育技术学,2006年) C语言中,对于基类型相同的两个指针变量,不能进行的运算是:( C)
A. < B. = C. + D. –
7.(南京师范大学,教育技术学,2006年) C语言中,说明语句 int *f();标识符 f代表的是:( D)
A.一个用于指向整型数据的指针变量 B.一个用于指向一维数组的行指针
C.一个用于指向函数的指针变量 D.一返回值为指针型的函数名
8.(湖南大学,计算机软件与理论, 2005)说明语句 v“int (*p)();”的含义是( C)
Ap是一个指向一维数组的指针变量 Bp是指针变量,指向一个整型数据
Cp是一个指向函数的指针,该函数的返回值是一个整型
D以上都不对
9.(北京航空航天,软件学院, 2012年)字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?答:这三种类型的变量所占内存大小是一样的。因为指针变量只需要存储一段内存单元的首地址。
结构体
1.(北京航空航天,软件学院, 2012年)当说明一个结构体变量时系统分配给它的内存是
(D)。
A.结构中最后一个成员所需的内存量 B.结构中第一个成员所需的内存量
C.成员中占内存量最大者所需的容量 D.各成员所需内存量的总和
2.
(北京大学,?年)下面关于结构类型的说法正确的是( ABD)。
A对于结构变量,可以通过运算符 "."或"->",逐个访问其成员;
B结构变量和结构变量成员的地址都可以被引用;
C如果指针变量 p已指向某结构数组,则 p+1指向当前元素的下一个成员;
D如果指针变量 p已经指向一个结构变量(或结构数组),就不能再使之指向结构变量(或
结构数组元素)的某一成员。
3.
(湖南大学,计算机软件与理论, 2005)若有以下结构体定义: struct example { int x;
int y;
}v1;则下面哪一项是正确的引用或定义( D) Aexample.x=10; B example v2; v2.x=10; C struct v2: v2.x=10; D struct example v2={10};
4.
(湖南大学,计算机软件与理论, 2005)若有如下说明,则下面哪一项的叙述是正确的(已知 int类型占两个字节)。( D)
A结构体变量 a与结构体成员 a同名,定义是非法的 B程序只在执行到该定义时才为结构体 st分配存储单元 C程序运行时为结构体 st分配 6个字节存储单元 D类型名 struct st可以通过 extern关键字提前引用(即引用在前,说明在后)
5.
(北京航空航天,软件学院, 2012年)下列代码的功能包括:定义一个 x数组,说明一个结构体,同时对变量 t进行初始化,使得 t的 a成员的值为 50,b成员的值为 x数组的首地址。请在空白处 (方框内 )填入合适的内容,以完成上述功能。
int x[5]={1,2,3,4,5}; struct{ int a, int *b. }t{ (1) , (2) };答: (1)50 (2)x
6.
(南京师范大学,教育技术学,2006年) C语言中,设有以下语句: (没有答案 )
#include
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&[2],9,a},*p;
p=&a[0];
则表达式 _______的值是 6.
A.p++—>n B.p—>n++ C.(*p).n++ D.++p—>n
7.(北京航空航天,软件学院, 2012年)对于下列程序,若从键盘上输入: abc def,
则输出结果是 (A)。 #include #include main( )
{ char *p,*q;
p=(char *)malloc(sizeof(char)*20);
q=p;
scanf(“%s%s”,p,q);
printf(“%s%s\n”,p,q);
}
A.defdef B.abcdef C.abcd D.dd
8.(南京师范大学,教育技术学,2005年)阅读以下程序说明及程序本身,然后回答问题。
【程序说明】假如一个学生的所有课程的成绩用一个链表来存放,链表的每个节点保存一
门课程的成绩。由于成绩可以有百分制(成绩为 0~100之间的整数),也可以有 5级制(成绩为 A~E大写字母, A最高, E最低),故在定义链表节点时,增加了一个字段 type来标识该区别。
【程序】
#include
#include
Typedefstructtag_NODE{
Int type;
#defineTYPE_100 1
#defineTYPE_5 2
Union{
Int score;
Char grade;
}cj;
Struct tag_NODE *pnext; }NODE; /*FindMaxScoreAndGrade函数定义在这里,省略,待完成。 */
(1)
Voidmain(){
NODE *pHead=NULL,*pCur=NULL;
Int score,maxScore;
Char grade,maxGrade;
While(1){
/*读取成绩类型; */ Scanf(“%d”,&type); /*读取成绩 ; */ If(type==TYPE_100)
Scanf(“%d”,&score); Else if(type==TYPE_5)
Scanf(“%c”,&grade);
Else Break; /*将读取到的成绩加入到链表后面,省略,待完成。 */
(2) }; /*求出最高分和最高等级(假设两种类型的成绩在链表中都会存在) ;*/ FindMaxScoreAndGrade(pHead,&maxScore,&maxGrade);
Printf(“\nMaxScore=%d,MaxGrade=%c”,maxScore,maxGrade); }【问题】写出上面程序中位于位置( 1)、(2)处“省略,待完成”的代码段。
9.
共用体
1.
(南京师范大学,教育技术学,2005年)如下程序的运行结果是( B)
typedef union{longx[2];inty[4];charz[8];} Type;
Type type;
main()
{ printf(“%d\n”,sizeof(type)); }
A、32 B、16 C、8D、不能确定
2.
(北京大学,?年)下面关于结构类型的说法正确的是 (BCD)
A结构是一种复合数据类型,其构成元素既只能是基本数据类型(如 int、long、float等)
的变量;
B缺省条件下,编译器为结构的每个成员按其自然对界( alignment)条件分配空间;
C结构成员按照它们被声明的顺序在内存中顺序存储;
D结构第一个成员的地址和整个结构的地址相同。
3.
(湖南大学,计算机软件与理论, 2005)下述程序的执行结果是( A)
#include
unionun
{ int i;
char c[2];
}; void main() { unionunx;
x.i=0;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
A256 B2561 C11 D0(提示:数据在内存中是反着放置的,即高位在后,
低位在前)
枚举类型
1.
(北京大学,?年)下面关于枚举类型的说法正确的是( BCD)。 A可以为枚举元素赋值; B枚举元素可以进行比较; C枚举元素的值可以在类型定义时指定; D枚举元素可以作为常量使用。
宏定义
1.
(北京航空航天,软件学院, 2012年)下列程序的输出结果为( B)。 #defineABC(x) x*x main( ) {int a,k=3;
a=++ABC(k+1);
printf(“%d”,a);
}
A.8B.9C.14 D.17
文件操作
1.(北京航空航天,软件学院, 2012年)若要以 a+方式打开一个已经存在的文件,则下列叙述中,正确的是( A)。
A.文件被打开时,原有的文件内容不被删除,位置指针移动到文件的末尾,可进行添加和读操作
B.文件被打开时,原有的文件内容不被删除,位置指针移动到文件的开头,可进行重写和读操作
C.文件被打开时,原有的文件内容被删除,只能进行写操作
D.以上三种说法都不正确
2.(北京航空航天,软件学院, 2012年)下列程序的功能是以追加方式打开 ”file.txt”后
向文件写入“ data”,然后查看文件指针位置。(提示: ftell(*FILE)返回 long类型的文件
指针位置 )
#include
void main( )
{ FILE *fp;
long position;
fp=fopen(“file.txt”,“a”);
fprintf(fp,“data”);
position=ftell(fp);
printf(“position=%ld\n”,position);
fclose(fp);
}
3.(北京航空航天,软件学院, 2012年)下列程序的功能是打开两个已存在的文件 file1
和 file2,并将 file2拼接到 file1的后面。请在程序的空白处填入合适的内容,使程序完整。
#include
int main( )
{ FILE *fp1,*fp2;
if((fp1=fopen(“file1”,“ (1) ”))==NULL)
{ printf(“Cannot openfile1!\n”); return 0; }
if((fp2=fopen(“file2”,“ (2) ”))==NULL)
{ printf(“Cannotopenfile2!\n”); return0;}
while(!feof( (3) ))
fputc( (4) ,fp1);
fclose(fp1);
fclose(fp2);
}答: (1)a+(2)r(3) fp2(4)fgetc(fp2)
综合题
1.
(南京师范大学,教育技术学,2005年)设有定义 int a[5][5],*b[5],(*c)[5];则 a,b,c被分
别称为是( B) A、数组、数组指针、指针数组 B、数组、指针数组、指针函数 C、数组、数组指针、函数指针 D、数组、指针数组、数组指针
2.
(湖南大学,计算机软件与理论, 2005)已知: int a,x;则正确的赋值语句是( C)。 Aa=(a[1]+a{2})/2; B a*=*a+1; C a=(x=1,x++,x+2); D a=”good”;
3.
(南京师范大学,教育技术学,2006年) C语言中,下列选项中正确的语句是:( A) Achars[8];s={“Nanjing”}; B char *s; s={“Nanjing”} C chars[8]; s=”Nanjing”; Dchar *s;s=”Nanjing”;
4.
(北京航空航天,软件学院, 2012年)下列 4个叙述中,正确的是( C)。
A.char *r=“china”;等价于 char *r; *r=“china”;
B.char *ptr=“china”;等价于 char *ptr; ptr=“china”;