一、选择题
1.在C语言中,如果下面的变量都是int类型,则输出的结果是()
sum=pad=5;
pad=sum++,pad++,++pad;printf(“%d/n”,pad);
a.7 b.6 c.5 d.4
2.以下程序的输出结果是()
main()
{int i=010,j=10;
printf(“%d,%d/n”,++i,j——);}
a.11,10 b.9,10 c.010,9 d.10,9
3.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是()
main()
{ char c1=‘A’,c2=‘Y’;
printf(“%d,%d/n”,c1,c2);}
a.输出错误信息 b.65,90 c.A,Y d……65,89
4.执行以下语句,则c的二进制值是()
char a=3,b=6,,c;
c=a^b<<2;
a.00011011 b.00010100 c.00011100 d.00011000
5.已知:int a=5;执行下列语句后输出结果是()
if (a=0) printf(“%d”,a)
else printf(“%d”,2*a);
a.10 b.5c.0 d.语法错误
6.语句while(!E) 中的条件!E等价于()
a.E==0 b.E!=1 c.E!=0 d.~E
7.执行语句for(X=0,Y=0;(Y!=123)&&(X<4);X++);()
a.无限循环 b.循环次数不变 c.执行4次 d.执行3次
8.sizeof(double)是()
a.一种函数调用 b一个双精度型表达式 c.一个整形表达式 d.一个不合法的表达式
9.以下程序的输出结果是()
main()
{ char str[12]={‘s’,‘t’,‘r’,‘i’,‘n’,‘g’,‘/0’}
printf(“%d/n”,strlen(str));
}
a.12 b.11 c.7 d.6
10. 以下程序的输出结果是()
main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d/n”,a,b);
}
a.6,1 b.2,1 c.6,0 d.2,0
11.C语言的运算符以运算对象的数目可以分为()
a.单目算符 b.单目算符和双目算符
c.单目,双目和三目算符 d. 单目,双目,三目和四目运算符
12.使用以下对二维数组的定义语句中,不正确的定义是()
a. int m[2][3]={{1},{2,3}}; b.int m[2][3]={1,2,3};
c. int m[2][3]={{1},{2},{3}}; d. int m[2][3]={1,{2,3}};
13.若定义a,b为整型变量,用scanf{“%d%d”,&a,&b};语句输入a,b的值时,不可以()作为输入的分割符。
a.,b.空格 c. 回车键 d.TAB键
14.若定义char *s=“car”; 则以下表达式的值不等于‘a’的是()
a.*++s; b.*(s+1) c.*s+1 d.s[1]
15.C语言程序中,若对函数的类型没有说明,则函数的默认类型是()
a.void b.int c.char d.single
16设有以下语句,则()不是对a数组元素的正确引用,其中0<=i<10
int *p,a[10]={0,1,2,3,4,5,6,7,8,9};
*p=a;
a.a[p-a] b.*(&a) c.p d.*(*(a+i))
17. 以下程序的输出结果是()
union pw
{ int ji;
char ch[2];
}a;
main()
{ a.ch[0]=13;
a.ch[1]=0;
printf(“%d/n”,a.i);
}
a.13 b.14 c.208 d.209
18.以下程序执行时,从第一列开始输入2374<CR>,<CR>代表一个回车符。程序的输出结果是()
main()
{ int c;
while((c=getchar())!=‘/n’){
switch(c-‘2’){
case 0:
case 1:putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
printf(“/n”);
}
a.668977 b.668966 c.66778777 d.6688766
19.以下程序的输出结果是()
#define FUDGE(y) 2.84+y
#define PR(a) printf(“%d”,(int)(a))
#define PRINT1(a) PR(a); putchar(‘/n’)
main()
{ int x=2;
PRINT1(FUDGE(5)*x)
}
a.11 b.12 c.13 d.15
20.根据以下语句 ,则()不是对库函数strcpy的正确调用
char str1[]=“string,str2[8],*str3,*str4=”string“;
a.strcpy(str1,“HELLO”); b. strcpy(str2,“HELLO”);
c. strcpy(str3,“HELLO”) d. strcpy(str4,“HELLO”)
二、阅读程序段,填写运行结果
1.下面程序段的运行结果是()
main()
{ int a=10,b=5,c=5,d=5;
int m=0,n=0,p=0;
for(;a<b;++b) m++;
while(a>++c) n++;
do p++;while(a>d++);
printf(“m=%d n=%d p=%d”,m,n,p);
}
2.下面程序段的运行结果是()
main()
{ int k=4,m=1,p;
p=func(k,m);
printf(“%d,”,p);
p=func(k,m);
printf(“%d,”,p);
}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
3.以下程序的输出结果是()
main()
{ int i;
for(i=1;i<=5;i++){
if(i%2) printf(“*”);
else continue;
printf(“#”);
}
printf(“$/n”);
}
4.下面程序的运行结果是()
main()
{ int x,a=1,b=2,c=0;
x=——a||b&&++c;
printf(“%d/n”,x);
}
5.下面程序的运行结果是()
#include<stdio.h>
struct s
{ int a;
int b:
}d[4]={1,20,3,40,5,60,7,80};
main()
{ struct s *p=d;
printf(“%d/n”,++p->a);
printf(“%d/n”,++p->b);
}
三、程序选择填空
以下程序名为cat.c,其功能是将命令行中所列的文件依次在屏幕上显示,每显示完一个文件内容后,用户按任意键,则显示下一个文件,如果命令行中所列的文件不能打开或没有给出文件名,则显示相应的信息,命令的格式为:cat filename1 filename2…
1) a.char b.int c.file d.FILE
2) a.fgetc(fptr) b.getchar(fptr) c.fgetc(fp) d.getchar(fp)
3) argc=1 b.argc==1 c.argc<1 d.argc==1
4) a.&pf b.*fp c.argv d.fp
5) a.fclose(argv) b.rewind(argv) c.fclose(fp) d.rewind(fp)
#include “stdio.h”
void cat (「1」 *fptr)
{ int c;
while((c=「2」)!=EOF)
putchar?;
}
main(argc,argv)
int argc;
char *argv[];
{FILE *fp;
int i;
if(「3」)
{ printf(“缺少参数/n”); exit(0);}
for(i=1;i<argc;i++)
{ if((fp=fopen(argv,“r”))==NULL)
printf(“%s 无法打开 /n”,argv);
else{
printf(“/*文件:%s*//n”,argv);
cat(「4」);}
「5」;
printf(“按任意键显示下一个文件/n”);
getchar();
}
}
四、程序填空
1.函数fun(char *s,int a)的功能是采用递归的方法将16进制的字符串s转换成10进制整数作为函数的返回值,若字符串s不是16进制的字符串,则函数的返回值是-1,a的初值是0.
fun(char *s,int a)
{ int i;
if(「1」)
i=*s-‘0’;
else
if(*s>=‘A’&&*s<=‘F’)
「2」;
else
if(*s>=‘a’&&*s<=‘f’)
「3」;
else
「4」;
a=a*16+I;
if(*(s+1)!=‘/0’)
fun(「5」);
else
return(a);
}
2.以下程序找出二维数组a中每行的最大值,并按一一对应的顺序放入一维数组s中。即:第零行中最大值,放入s[0]中,第一行中最大值,放入s[1]中……。然后输出每行行号和最大值,请填空。
#define 「6」 10
main()
{
int a[M][M],s[M],i,j,k;
for(i=0;i<M;i++)
for(j=0;j<M;j++)
scanf(“%d”,*(a+i)+j);
for(i=0;i<M;i++)
{ *(s+i)= 「7」;
for(j=1;j<M;j++)
if(*(s+i) 「8」*(*(a+i)+j))
*(s+i)= 「9」;
}
for(i=0;i<M;i++)
{ printf(“Row=%2d Max=%5d”, 「10」);
printf(“/n”);
}
}
3. 函数htmtotxt的功能是将html文件中的htm标记过滤掉,即过滤掉在<…。> 之间的内容,将其他内容形成一个纯文本文件。函数的参数f1为现有的html文件名,参数f2为形成的纯文本文件名。注意,在html文件中出现<br>,<BR>标记时,应向文本文件中添加一个回车符。
void htmtotxt(char *f1,char *f2)
{
FILE *fin,*fout;
char sc,*s1,*p1;
int flag;
s1=(char *)malloc(MAX);
p1=s1;
/*打开输入输出文件*/
if((fin=fopen(f1,“r”))==NULL)
{
printf(“File %s open error!/n”,f1);
return;
}
if((fout=fopen(f2, 「11」)==NULL)
{
printf(“File %s open error!/n”,f2);
return;
}
/*从htm文件中读取内容,过滤htm标记中的内容,然后将其他内容写入文本文件中*/
flag=0;
while(!feof(fin))
{
sc=「12」;
if(sc==‘<’)
{
s1=p1;
*s1++=sc;
while((sc=fgetc(fin))!=‘>’&&!feof(fin))
{ *s1=「13」; s1++;}
flag=1;
}
if(flag==1)
{
*s1++=sc;
*s1=‘/0’;
if(「14」)
{
fputc(‘/n’,fout);
flag=0;
continue;
}
}
flag=0;
fputc(sc,fout);}
「15」;
fclose(fout);
}
五、编写程序
1.请编写函数huiwen(char *s),它的功能是检查字符串s是否是回文,所谓回文即正向,反向的拼写都一样。如a,eye,ABBA等,当字符串s是回文时,函数的返回值是1,否则返回值是0.
void huiwen(char *s)
{ /*答案开始*/
…
/*答案结束*/
}
2.请编写函数void fun(int *a,int y,int n),它的功能是:把y值插入到a数组中,a数组中的数由主函数按由小到大的次序从键盘读入,y是要插入的数,其值也从键盘读入。n是a中数字的个数(n<S)。要求插入后,数组中的数仍然有序。下面的主函数部分的程序略,不需要编写,考生只需要完成函数fun的编程。
#define S 50
main()
{
int a[S],b,c;
……
fun(a,b,c)
……
}
void fun(int *a,int y,int n)
{ /*答案开始*/
……
……
/*答案结束*/
}
相关链接:对外经济贸易大学历年考研专业课试题汇总