模拟1答案09.docx

上传人:b****0 文档编号:17111414 上传时间:2023-07-22 格式:DOCX 页数:14 大小:23.94KB
下载 相关 举报
模拟1答案09.docx_第1页
第1页 / 共14页
模拟1答案09.docx_第2页
第2页 / 共14页
模拟1答案09.docx_第3页
第3页 / 共14页
模拟1答案09.docx_第4页
第4页 / 共14页
模拟1答案09.docx_第5页
第5页 / 共14页
模拟1答案09.docx_第6页
第6页 / 共14页
模拟1答案09.docx_第7页
第7页 / 共14页
模拟1答案09.docx_第8页
第8页 / 共14页
模拟1答案09.docx_第9页
第9页 / 共14页
模拟1答案09.docx_第10页
第10页 / 共14页
模拟1答案09.docx_第11页
第11页 / 共14页
模拟1答案09.docx_第12页
第12页 / 共14页
模拟1答案09.docx_第13页
第13页 / 共14页
模拟1答案09.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模拟1答案09.docx

《模拟1答案09.docx》由会员分享,可在线阅读,更多相关《模拟1答案09.docx(14页珍藏版)》请在冰点文库上搜索。

模拟1答案09.docx

模拟1答案09

模拟练习一

试题1阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】求1+2/3+3/5+4/7+5/9+…的前20项之和。

运行示例:

sum=

【程序】

#include<>

voidmain()

{

inti,b=1;

doubles;

(1);

for(i=1;i<=20;i++){

s=s+

(2);

(3)

}

printf((4),s);

}

【供选择的答案】

(1)A、s=0B、s=1

C、s=-1D、s=2

求和时,变量的初值为0.

(2)A、i/bB、double(i)/double(b)

C、i/2*i-1D、(double)i/(double)b

AC两项是整数相除,错误。

B的转换格式不对。

(3)A、;B、b=2*i–1;

C、b=*b;D、b=b+2;

B的步长为2。

(4)A、"sum=%d\n"B、"s=%c\n"

C、"sum=%f\n"D、"s=%s\n"

根据上面的提示:

运行示例:

sum=

可以确定这里的格式。

试题2阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】输入10个整数,将它们从大到小排序后输出。

运行示例:

Enter10integers:

14-9991008706534

Aftersorted:

10099873465410-9

【程序】

#include<>

voidmain()

{inti,j,t,a[10];

printf("Enter10integers:

");

for(i=0;i<10;i++)

scanf((5));

for(i=1;i<10;i++)

for((6);(7);j++)

if((8)){

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

printf("Aftersorted:

");

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

}

【供选择的答案】

(5)A、"%f",a[i]B、"%lf",&a[i]

C、"%s",aD、"%d",&a[i]

AC的共同错误在于缺少&,B的错误在于格式,这里没有使用小数,都是整数。

(6)A、j=0B、j=1

C、j=iD、j=i–1

初值为0.

(7)A、j>iB、j<9-i

C、j<10-iD、j>i–1

第i个,总是和第10-i个相比,对称!

(8)A、a[i-1]

C、a[j]

从下面的a[j]=a[j+1];可以推断出与后面的一个进行比较,如果比后面的小,则交换。

注意:

这里到底是用a[j]a[j+1],看结果是大的在前,还是小的在前。

试题3阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序说明】输入一个字符串和一个正整数m,将该字符串中的前m个字符复制到另一个字符串中,再输出后一个字符串。

运行示例1:

Enterastring:

103+895=

Enteraninteger:

6

Thenewstringis103+89

运行示例2:

Enterastring:

103+895=

Enteraninteger:

60

Thenewstringis103+895=

运行示例3:

Enterastring:

103+895=

Enteraninteger:

0

Thenewstringis

【程序】

#include<(9)>

voidmain()

{chars[80],t[80],i,m;

printf("Enterastring:

");

gets(s);

printf("Enteraninteger:

");

scanf("%d",&m);

for(i=0;(10);i++)

(11);

(12)

printf("Thenewstringis");

puts(t);

}

【供选择的答案】

(9)A、B、

C、D、

做这样的题目,要扫视下面,看出现了哪些库函数。

本题中,主要出现了puts,这个函数属于

(10)A、i

='\0'

C、s[i]!

='\0'&&i

='\0'||i

这里的循环变量是i,需要i

问题是还需要同时考虑S串的长度,如果m的值大于S串的长度(例如:

Enterastring:

103+895=Enteraninteger:

60

),则后面的部分没必要进行了。

因此,这两个条件必须同时满足。

所以答案是C。

A和B都只考虑了一种情况,D的逻辑表达不对。

值得注意的是,题目中的运行示例2和运行示例3都提供了极端的情况,耐人寻味。

(11)A、*s++=*t++B、t[i]=s[i]

C、*t++=*s++D、s[i]=t[i]

两个数组元素,逐一赋值而已。

用到了For,就是逐一。

问题是,如果选C、*t++=*s++,则这一句把指针向后拨动一次,但循环中的for(i=0;(10);i++)又拨动一次,这样就指针后移2次,错误!

(12)A、t[i]='\0';B、;

C、*++s='\0';D、*++t='\0';

使得到的数组元素的最后一个为\0.

试题4阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。

【程序】

#include<>

voidmain()

{ints,x1,y1,z1,x2,y2,z2;

printf("Enter6integers:

");

scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2);

s=f(x2,y2,z2)-f(x1,y1,z1);

printf("%d\n",s);}

f(intx,inty,intz)

{intk,n;

inttab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};

n=(x%4==0&&x%100!

=0||x%400==0);

for(k=1;k

z=z+tab[n][k];

returnz;}

这道题的解题思路是把给定的数值带进去,分别求出f(x2,y2,z2)和f(x1,y1,z1)的值,然后再求它们的差。

有趣的是,数组tab[2][13]的两行分别表示了非闰年和闰年各月的天数。

注意,经过n=(x%4==0&&x%100!

=0||x%400==0);运算后,n的值要么是1,要么是0,因为它是逻辑运算的结果。

(13)程序运行时,输入100000,输出(13)。

A、29B、28C、0D、-1

f(x2,y2,z2)=f(0,0,0)=0

f(x1,y1,z1)=f(1,0,0)=0

所以,0-0=0

(14)程序运行时,输入001000,输出(14)。

A、29B、28C、0D、-1

f(x2,y2,z2)=f(0,0,0)=0

f(x1,y1,z1)=f(0,0,1)=1

for(k=1;k

的值没有改变,还是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);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2