的值没有改变,还是1。
所以,0-1=-1
(15)程序运行时,输入200021200031,输出(15)。
A、29B、28C、0D、-1
f(x2,y2,z2)=f(2000,3,1),此时:
因为2000%400==0,所以n=1
所以,z=z+tab[1][1]+tab[1][2]=0+31+29=60
f(x2,y2,z2)=f(2000,3,1)=60
f(x1,y1,z1)=f(2000,21),此时:
因为2000%400==0,所以n=1
所以,z=z+tab[1][1]=0+31=31
f(x1,y1,z1)=f(2000,2,1)=31
所以,60-31=29
(16)程序运行时,输入198121198131,输出(16)。
A、29B、28C、0D、-1
f(x2,y2,z2)=f(1981,3,1),此时:
n=0;
所以,z=z+tab[0][1]+tab[0][2]=0+31+28=59
f(x2,y2,z2)=f(1981,3,1)=59
f(x1,y1,z1)=f(1981,2,1),此时:
n=0
所以,z=z+tab[0][1]=0+31=31
f(x1,y1,z1)=f(1981,2,1)=31
所以,59-31=28
试题5阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
#include<>
voidmain()
{inta=-1,b=1;
voidf1(intx,inty),f2(int*x,int*y);
voidf3(int*x,int*y),f4(intx,inty);
f1(a,b);
printf("(%d,%d)\n",a,b);
a=-1,b=1;
f2(&a,&b);
printf("(%d,%d)\n",a,b);
a=-1,b=1;
f3(&a,&b);
printf("(%d,%d)\n",a,b);
a=-1,b=1;
f4(a,b);
printf("(%d,%d)\n",a,b);}
voidf1(intx,inty)
{intt;
t=x;x=y;y=t;}
voidf2(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;}
voidf3(int*x,int*y)
{int*t;
t=x;x=y;y=t;}
voidf4(intx,inty)
{int*t=malloc(sizeof(t));
*t=x;x=y;y=*t;}
本题主要考核4个函数到底交换数据没有。
只有f3是通过地址真正地交换了数据,其他几个函数都是交换了变量,而交换后的变量没有用return带回来,所以没有实现交换。
(17)程序运行时,第1行输出(17)。
A、(1,-1)B、(-1,1)C、(-1,-1)D、(1,1)
(18)程序运行时,第2行输出(18)。
A、(1,-1)B、(-1,1)C、(-1,-1)D、(1,1)
(19)程序运行时,第3行输出(19)。
A、(1,-1)B、(-1,1)C、(-1,-1)D、(1,1)
(20)程序运行时,第4行输出(20)。
A、(1,-1)B、(-1,1)C、(-1,-1)D、(1,1)
试题6
#include<>
structcard{
char*face;
char*suit;};
voidfilldeck(structcard*wdeck,char*wface[],char*wsuit[])
{inti;
for(i=0;i<4;i++){
wdeck[i].face=wface[i%2];
wdeck[i].suit=wsuit[i/2];}
}
voiddeal(structcard*wdeck)
{inti;
for(i=0;i<4;i++)
printf("(%2sof%-6s)\n",wdeck[i].face,wdeck[i].suit);
}
voidmain()
{structcarddeck[4];
char*face[]={"K","Q"};
char*suit[]={"Heart","Club"};
filldeck(deck,face,suit);
deal(deck);
}
阅读程序后,知道:
Wface[0]=K,Wface[1]=Q
Wsuit[0]=Heart,Wsuit[1]=Club,
经过以下语句后:
filldeck(deck,face,suit);
得到:
wdeck[0].face=Wface[0]=K,(注意:
0%2=0)
wdeck[0].suit=Wsuit[0]=Heart(注意:
0/2=0)
wdeck[1].face=Wface[1]=Q,(注意:
1%2=1)
wdeck[1].suit=Wsuit[0]=Heart(注意:
1/2=0)
wdeck[2].face=Wface[0]=K,(注意:
2%2=0)
wdeck[2].suit=Wsuit[1]=Club(注意:
2/2=1)
wdeck[3].face=Wface[1]=Q,(注意:
3%2=1)
wdeck[3].suit=Wsuit[1]=Club(注意:
3/2=1)
(21)程序运行时,第1行输出(21)。
A、(KofHeart)B、(QofHeart)
C、(KofClub)D、(QofClub)
输出:
wdeck[0].face,wdeck[0].suit
(22)程序运行时,第2行输出(22)。
A、(KofHeart)B、(QofHeart)
C、(KofClub)D、(QofClub)
输出:
wdeck[1].face,wdeck[1].suit
(23)程序运行时,第3行输出(23)。
A、(KofHeart)B、(QofHeart)
C、(KofClub)D、(QofClub)
输出:
wdeck[2].face,wdeck[2].suit
(24)程序运行时,第3行输出(24)。
A、(KofHeart)B、(QofHeart)
C、(KofClub)D、(QofClub)
输出:
wdeck[3].face,wdeck[3].suit
试题7编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
运行示例:
Enterscores:
88716870598191426677830
>=85:
2
60-84:
7
<602
#include<>
main()
{intgood;pass=0;nopass=0;fs;
while(fs>0)
{scanf(“input%d”,fs);
if(fs>=85)good++;
if{fs<=84&&fs>=60}pass++;
if(fs<60)nopass++;
}
printf(“good%d”,good);
printf(“pass%d”,pass);
printf(“nopass%d”,nopass);
}
试题8
(1)编写程序,输入一个正整数n,求下列算式的值。
要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
运行示例:
Entern:
5
sum=
(2)输入一个正实数x和一个正整数n,求下列算式的值。
要求定义和调用2个函数:
fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),2个函数的返回值类型都是double。
#include<>
fact(k)/*本函数求阶乘*/
{intt=1;
for(n=1;n<=k;n++)t=t*n;
returnt;
}
mypow(floatx,intk)/*本函数求x的n次幂(即xn)*/
{intt=1;
for(n=1;n<=k;n++)t=t*x;
returnt;
}
main()
{
doublesum=;
floatx;
intn;
intjihao=1;/*记号变量,用来改变符号*/
scanf(“input%d,,%d”,&x,&n);
for(k=1;k<=n;k++)
{
sum=sum+jihao**mypow(x,k)/fact(k);/*乘为了变成小数*/
jihao=-jihao;/*记号变量反号*/
}
printf(“sum=%f”,sum);
}