一、选择题
1.设a=2,b=3,执行表达式c=b*=a-1;变量c的值是( )
a.2b.3c.4d.5
2.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为( )
a.20b.26c.40d.46
3.语言程序中使用以下的二维数组定义语句并赋以部分初值,其中不正确的定义只有( )
a.inta[2][3]={{4},{5,6}}b.inta[2][3]={{4},{5},{6}}
c.inta[2][3]={4,5,6}d.inta[2][3]={{4},5,6}
4.设有以下洪定义
#defineN3
#defineY(n)((N+1)*n)
则执行语句:z=2*(N+Y(5+1));后z的值为( )
a.出错b.42c.48d.54
5.已设有如下定义:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的选项是( )
a.*((*ptr+1)[2])b.*(*(p+5))c.(*ptr+1)+2)d.*(*(a+1)+2)
6.以下程序运行后,输出结果是( )
fut(int**s,intp[2][3])
{**s=p[1][1];}
main( )
{inta[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
printf(“%d/n”,*p);}
a.1b.7c.9d.11
7.若有以下定义和语句,则输出结果是( )
chars[12]=“abook!”;
printf(“%d”,strlen(s));
a.12b.8c.7d.6
8.以下程序执行后,a的值是( )
main( )
{inta,k=4,m=6,*p1=&k,*p2=&m;
a=p1=&m;
printf(“%d/n”,a);
}
a.4b.1c.0d.运行时出错,无定值
9.执行以下程序段后,m的值为( )
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
a.15b.14c.13d.12
10.以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是( )
#include<string.h>
main( )
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2))printf(“*”);
elseprintf(“#”);
printf(“%d/n”,strlen(strcat(s1,s2)));
}
a.*8b.*9c.#8d.#9
11.以下程序运行后,输出结果是( )
main( )
{charch[2][5]={“693”,“825”},*p[2];
inti,j;
longs=0;
for(i=0;i<2;i++)
p=ch;
for(i=0;i<2;i++)
for(j=0;p[j]>=‘0’&&p[j]<=‘9’;j++)
s=10*s+(p[j]-‘0’);
printf(“%d/n”,s);
}
a.22b.33c.6385d.693825
12.以下程序的输出结果是( )
structstu
{intnum;
charname[10];
intage;
};
fun(structstu*p)
{printf(“%s/n”,(*p)。name);}
main( )
{structstustudent[3]={{9801,“Zhang”,20},{9802,“Wang”,19}{9803,“Zhao”,18}};
fun(students+2);
}
a.Zhangb.Zhaoc.Wangd.18
13.设有以下说明和定义:
typedefunion
{longi;intk[5];charc;
}DATE,max;
structdate
{intcat;DATEcow;doubledog;
}too;
则下列语句的执行结果是:( )
printf(“%d”,sizeof(too)+sizeof(max));
a.30b.26c.18d.8
14.执行以下程序的输出是( )
main( )
{intx,a=1,b=2,c=0;
x=——a||b&&++c;
printf(“%d/n”,x);
}
a.1b.0c.-1d.非零值
15.以下可作为函数fopen中第一个参数的正确格式是( )
a.c:user/text.txtb.c:/user/text.txt
c.“c:/user/text.txt”d.“c://user//text.txt”
二、阅读程序,回答问题
1.#include<stdio.h>
main( )
{chara[]=“abcde”,b[]=“cd”;
printf(“%d/n”,fun(a,b));
}
fun(chars[],chart[])
{inti,j,k,pos;
pos=-1;
for(i=0;s!=‘/0’;i++){
for(j=i,k=0;t[k]!=‘/0’&&s[j]==t[k];j++,k++)
;
if(k>0&&t[k]==‘/0’)
pos=I;
}
returnpos;
}
1.程序的输出结果是:
2.函数fun(chars[],chart[])的功能是:
2.#include<stdio.h>
main( )
{inta,b[]={4,13,2,4,6};
fun(b,5);
for(a=0;a<5;a++)printf(“%5d”,*(b+a));
printf(“/n”);
}
fun(inta[],intn)
{intx,y,t;
for(x=0;x<n;x++){
for(t=*(a+x),y=x-1;y>=0&&t>*(a+y);y——)
*(a+y+1)=*(a+y);
*(a+y+1)=t;
}
}
3.程序的输出结果是:
4.函数fun(inta[],intn)的功能是:
三、程序选择填空
函数inode*mergedes(inode*a,inode*b)的功能是将两个降序的链表合并成一个降序的链表
设链表结点的类型是:
typedefstructs
{intval;
structs*next;
}inode;
inode*merge(inode*a,inode*b)
{inode*h=a,*p,*q;
while(b){
for(p=h;(1);q=p,p=p->next)
;
if((p==h)
(2);
else
(3);
q=b;
b=b->next;
(4);
}
returnh;
}
1.a.p->val>b->valb.p->val<b->val
c.p&&p->val>b->vald.p&&p->val<b->val
2.a.h=bb.b=hc.h=h->nextd.b=b->next
3.a.h->next=pb.q->next=bc.q->next=pd.h->next=b
4.a.h->next=pb.q->next=bc.q->next=pd.h->next=b
四、程序填空
程序功能:主函数从命令行读入一个文件名,统计该文件的行树和字符个数,并且找出最长的行,输出该行。请填空完成程序。
#defineMAX100
#include<stdio.h>
main(「1」)
{FILE*fp;
intlno=0,llen=0,lmax=0,lc=0;
chars[MAX],line[MAX];
if(argc==1){
printf(“filename?/n”);
exit(0);}
if((fp=fopen(「2」))==NULL)
{printf(“Fileopenerror!/n”);
exit(0);}
if(feof(fp))printf(“EOF!/n);
while(「3」){
fgets(s,MAX,fp);
lno++;
llen=strlen(s);
lc+=llen;
if(llen>lmax)
{「4」;
l.max=llen;
}
}
printf(“/n行数:%d,字符数:%d,最长行是:/n%s”,lno,lc,line);
fclose(fp);
}
五、编写程序
编写函数char*fun(char*s,charc),函数的功能是将字符串变量s中的字符变量c过滤掉,并返回过滤后字符串的地址。例如fun(“abcedaba”,‘a’)返回的字符串为“bcdeb”。
相关链接:对外经济贸易大学历年考研专业课试题汇总