}
intdivide(intm,intn)
{returnm/n;}
doubledivide(intm,doubley)
{returnm/(int)y;}
doubledivide(doublex,doubley)
{returnx/y;}
①输入数据727.02.0,语句L1输出结果是(30)。
30(A)0(B)1(C)3(D)3.5
②输入数据727.02.0,语句L2输出结果是(31)。
31(A)0(B)1(C)3(D)3.5
③输入数据727.02.0,语句L3输出结果是(32)。
32(A)0(B)1(C)3(D)3.5
4.#include
voidmain()
{
unsignedinta=0112,x,y,z;
x=a>>3;
y=~(~0<<4);
z=x&y;
printf("%o%o%o\n",x,y,z);
printf("%x\n",!
(x&&y&&z));
}
该程序中执行第一个printf函数后,输出为(33)。
33(A)111711(B)171117(C)111717(D)171711
该程序中执行第二个printf函数后,输出为(34)。
34(A)171(B)0112(C)1(D)0
5.以下程序运行的结果为(35)。
#include
voidswap1(inta,intb)
{inttemp;
temp=a;a=b;b=temp;
}
voidswap2(int&a,int&b)
{inttemp;
temp=a;a=b;b=temp;
}
voidmain()
{inti=3,j=5;
swap1(i,j);
printf("%d%d\n",i,j);
swap2(i,j);
printf("%d%d\n",i,j);
}
35(A)35(B)53(C)53(D)35
35533553
6.读下列递归程序,回答问题。
#include
voidfun(char*strp)
{char*t;
if(*strp){t=strp;t++;fun(t);putchar(*strp);}
}
voidmain()
{inti,a[10]={0,1,2,3,4,5,6,7,8,9};
charstr[11];
for(i=0;i<10;i++)
str[i]=a[i]+'0';
str[i]='\0';
fun(str);
}
程序中的fun函数被调用(36)次。
36(A)9(B)10(C)11(D)12
程序的输出结果为(37)。
37(A)0123456789(B)9876543210(C)01234(D)98765
5678943210
7.读下列C程序,若输入字符串Examination,请选择正确的输出结果。
#include
voidmain()
{charstr[20];
inti=0;
staticintcount[2]={0};
gets(str);
do
{
switch(str[i++])
{
case'a':
case'A':
case'e':
case'E':
case'i':
case'I':
case'o':
case'O':
case'u':
case'U':
count[0]++;
/*break;*/
default:
count[1]++;
}
}while(str[i]!
='\0');
printf("count[0]=%d,count[1]=%d\n",count[0],count[1]);
}
程序的输出结果为(38)。
38(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=12
(C)count[0]=5,count[1]=11(D)count[0]=5,count[1]=12
若将程序中注释语句的注释标记去掉,则程序的输出结果为(39)。
39(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=5
(C)count[0]=5,count[1]=11(D)count[0]=6,count[1]=6
8.下面程序输出的结果为(40)。
#include
inta=5;
voidmain()
{inta=3;
a++;
cout<:
a;
}
程序中的fun函数被调用(36)次。
40(A)54(B)45(C)53(D)44
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.下列程序实现将一个整数字符串转换为一个整数。
#include
#include
intFun(char*str)
{intnum,digital,len;
①;
len=strlen(str);
while(*str!
=NULL)
{
digital=*str-'0';
for(inti=0;②;i++)
digital*=10;
len--;
③;
num+=digital;
}
returnnum;
}
voidmain()
{charn[80];
intnumber;
gets(n);
number=Fun(n);
printf("%d\n",number);
}
2.寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(所谓回文数是指其各位数字左右对称的整数)。
#include
voidmain()
{intsymm(longn);
longm;
for(m=11;m<1000;m++)
if(①)
cout<<"m="<}
intsymm(longn)
{longi,m;
i=n;m=0;
while(②)
{③;
i=i/10;
}
return(m==n);
}
3.已知head指向一个单向链表,如下图:
主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。
structlink
{intdata;
structlink*next;
}
intadd(structlink*heak)
{structlink*p;
ints=0;
p=①;
while(p)
{s+=②;
p=③;
}
return(s);
}
voidmain()
{structlink*head;
……/*表示省掉的程序段,创建链表*/
sum=add(head);
printf("%d\n",sum);
}
4.下面程序功能是统计文本data.txt中各种大写字母的个数,将统计结果存放在数组count中,(字母'A'的个数存入count[0]中,字母'B'的个数存入count[1]……依此类推),输出统计结果,一行输出5个。
请填空。
#include
#include
voidmain()
{FILE*fp;
staticintcount[26]={0};
inti;
charch;
if(①)
{printf("Cannotopenthefile!
\n");
exit(0);
}
while(!
feof(fp))
{②;
if(ch>='A'&&ch<='Z')count[③]++;
}
for(i=0;i<26;i++)
{
if(i%5==0)printf("\n");
printf("count[%d]=%-5d",count[i]);
}
fclose(fp);
}
5.下面程序的功能是输入两个字符串a和b和一个标志flag,当flag=0时,将b连在a后;当flag=1时,将a连在b后;否则返回空指针。
请填空。
#include
#include
char*stradd(char*s,char*t,intf)
{char*p;
if(f==0)
{p=s;
s+=strlen(s);
①;
}
elseif(f==1)
{p=t;
while(*t++);
t--;
while(*s)
*t++=*s++;
②;
}
③;
returnp;
}
voidmain()
{chara[100],b[100],*str;
intn;
printf("Inputstringaandb:
\n");
gets(a);
gets(b);
printf("Inputflag:
");
scanf("%d",flag);
str=stradd(a,b,n);
printf("Output:
%s\n",str);