上机填空题2528.docx

上传人:b****1 文档编号:20406185 上传时间:2023-04-25 格式:DOCX 页数:13 大小:18.09KB
下载 相关 举报
上机填空题2528.docx_第1页
第1页 / 共13页
上机填空题2528.docx_第2页
第2页 / 共13页
上机填空题2528.docx_第3页
第3页 / 共13页
上机填空题2528.docx_第4页
第4页 / 共13页
上机填空题2528.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

上机填空题2528.docx

《上机填空题2528.docx》由会员分享,可在线阅读,更多相关《上机填空题2528.docx(13页珍藏版)》请在冰豆网上搜索。

上机填空题2528.docx

上机填空题2528

25

题目:

函数fun的功能是:

逆置数组元素中的值。

形参n给出数组中数据的个数。

例如,若a所指数组中的数据依次为:

1、2、3、4、5、6、7、8、9,则逆置后依次为:

9、8、7、6、5、4、3、2、1。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

voidfun(inta[],intn)

{

inti,t;

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

{

t=a[i];

a[i]=a[n-1-___2___];

___3___=t;

}

}

main()

{

intb[9]={1,2,3,4,5,6,7,8,9},i;

printf("\nTheoriginaldata:

\n");

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

printf("%4d",b[i]);

printf("\n");

fun(b,9);

printf("\nThedataafterinvert:

\n");

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

printf("%4d",b[i]);

printf("\n");

}

26

题目:

请补充fun函数,该函数的功能求能整除x,且是偶数的数,把这些数保存在数组bb,并按从大到小输出。

例如,当x=20时,依次输出:

201042。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#include

voidfun(intk,intbb[])

{

inti;

intj=0;

for(___1___;i<=k;i++)

{

if(___2___)

bb[j++]=i;

}

printf("\n\n");

for(i=___3___;i>=0;i--)

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

}

main()

{

intk=1;

inti;

intbb[100];

clrscr();

printf("\nPleaseinputX\n");

scanf("%d",&k);

fun(k,bb);

printf("\n");

}

27

题目:

请补充fun函数,该函数的功能是:

统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

intfun(intn)

{

inti,j,count=0;

printf("\nTheprimenumberbetween2to%d\n",n);

for(i=2;i<=n;i++)

{

for(___1___;j

if(___2___%j==0)

break;

if(___3___>=i)

{

count++;

printf(count%15?

"%5d":

"\n%5d",i);

}

}

returncount;

}

main()

{

intn=20,r;

r=fun(n);

printf("\nThenumberofprimeis:

%d\n",r);

}

28

题目:

程序的功能是计算y=0!

+1!

+2!

+3!

+4!

+……+n!

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

longfun(intn)

{

inti;

longs;

s=___1___;

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

s=___2___;

returns;

}

main()

{

longs;

intk,n;

scanf("%d",&n);

s=___3___;

for(k=0;k<=n;k++)

s=___4___;

printf("%ld\n",s);

}

明智的选择在淘宝

 

国货手机PK品牌手机

火热7月母婴用品大特卖

促销大联盟限时大抢购

09夏日男装采购节

09女人狂恋首饰潮

居家品省钱搜索,浪漫主义回归!

夏季特卖杯具大搜索~~

09别样手袋包包

解答

25

分析:

题目要求在fun函数中逆置数组元素中的值。

其中参数n给出数组中数据的个数。

为了实现以上要求,题目中的程序使用了以下思路:

将数组中最后一个数据和第一个数据进行互换,然后将倒数第二个数据和第二个数据进行互换,接着将倒数第三个数据和第三个数据进行互换,反复执行以上过程,直到互换完成。

为了实现以上思路,程序使用i变量记录从第一个数据开始进行互换的位置,使用n-i-1表示从最后一个数据开始进行互换的位置,然后i不断加一,使互换的数据不断向中间位置靠拢,直至i大于中间位置(即互换过程完成)。

程序注解如下:

#include

/*a数组为要进行数据互换的数组,n为a数组中数据的个数*/

voidfun(inta[],intn)

{

inti,t;

/*开始进行互换,直到i超出数据个数的一半*/

for(i=0;i

{

/*将左边的数据先保存在t变量中,防止被下面语句覆盖而丢失*/

t=a[i];

/*将右边对应位置的数据覆盖左边对应位置的数据*/

a[i]=a[n-1-i];

/*将预先保存在t变量的左边的数据覆盖右边对应位置的数据,完成互换*/

a[n-i-1]=t;

}

}

main()

{

intb[9]={1,2,3,4,5,6,7,8,9},i;

printf("\nTheoriginaldata:

\n");

/*输出互换之前的数组中的所有数据*/

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

printf("%4d",b[i]);

printf("\n");

/*调用fun函数进行互换*/

fun(b,9);

printf("\nThedataafterinvert:

\n");

/*输出互换之后的数组中的所有数据*/

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

printf("%4d",b[i]);

printf("\n");

}

26

分析:

程序注解如下:

#include

#include

/*fun函数求能被参数k整除的偶数,把这些数保存在数组bb,并按从大到小输出*/

voidfun(intk,intbb[])

{

inti;

/*j变量指示符合条件的偶数放在bb数组中的位置*/

/*由于数组从0开始,所以j的初始值设置为0*/

intj=0;

/*使用循环从1至k检查是否有偶整数能被k整除*/

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

{

/*使用k%i==0判断当前整数能否被k整除*/

/*使用i%2==0判断当前整数是否为偶数*/

if(k%i==0&&i%2==0)

/*将符合条件的整数放入bb数组,然后j加一,准备下一个存放位置*/

/*bb[j++]=i相当于bb[j]=i;j++*/

bb[j++]=i;

}

printf("\n\n");

/*由于题目要求按从大到小输出,所以从后往前输出bb数组中的整数*/

/*j由于for循环中多加了一次,所以需要减去一然后作为偶数个数赋值给i*/

/*--j先将j减去一,然后将j的值赋值给i*/

for(i=--j;i>=0;i--)

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

}

main()

{

intk=1;

inti;

intbb[100];

/*clrscr函数用于清除输出窗口中已经显示的内容*/

/*clrscr函数定义在conio.h,所以需要#include*/

clrscr();

printf("\nPleaseinputX\n");

scanf("%d",&k);

fun(k,bb);

printf("\n");

}

27

分析:

该题的核心在于如何判断一个数是素数。

所谓素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。

例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。

另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。

了解素数的概念之后,我们介绍一下程序使用的实现思路如下。

由于题目要求统计所有小于等于n(n>2)的素数的个数,所以程序使用for循环从2开始至n之间的整数i逐一进行检查,检查过程如下:

使用for循环逐一检查从整数2至整数i-1之间是否存在整数j能够被当前检查的整数i整除,如果存在这样的整数的话,整数j就不是素数。

否则整数j就是一个素数,记录素数个数的变量count增加一。

当以上内层for循环结束的时候,继续外层for循环,将2至n之间的整数逐个的进行内层循环的检查。

当所有循环结束的时候,count变量即为所有小于等于n(n>2)的素数的个数。

fun函数直接将count作为返回值返回即可。

程序注解如下:

#include

intfun(intn)

{

/*count变量最终记录所有小于等于n(n>2)的素数的个数*/

inti,j,count=0;

/*在输出窗口输出提示信息*/

printf("\nTheprimenumberbetween2to%d\n",n);

/*从2到n逐一判断是否是素数*/

for(i=2;i<=n;i++)

{

/*判断当前整数i能否整除2至i-1的之间任一整数*/

for(j=2;j

/*如果能整除任一整数则不是素数,所以退出循环*/

if(i%j==0)

break;

/*如果j>=i,说明以上for循环没有执行break语句中途退出*/

/*那么说明整数i不能整除2至i-1的之间任一整数,所以i是一个素数*/

if(j>=i)

{

/*因为i是一个素数,所以记录素数个数的count变量加一*/

count++;

/*以下输出是素数的整数i,同时保证每一行15个素数*/

printf(count%15?

"%5d":

"\n%5d",i);

}

}

/*将统计的素数个数作为函数返回值返回*/

returncount;

}

main()

{

intn=20,r;

/*调用fun函数进行题目要求的处理,接收fun函数的返回值*/

r=fun(n);

/*输出fun的处理结果*/

printf("\nThenumberofprimeis:

%d\n",r);

}

28

分析:

由于题目要求计算y=0!

+1!

+2!

+3!

+4!

+……+n!

,所以需要使用循环从0至n计算每一项阶乘。

而阶乘n!

的计算公式是n!

=n*(n-1)*(n-2)*(n-3)*……*3*2*1,所以计算阶乘n!

也需要使用循环,这个循环应该从1至n。

程序注解如下:

#include

/*fun函数计算参数n的阶乘,即n!

的值*/

longfun(intn)

{

inti;

longs;

/*因fun函数的s变量保存n!

的值,而n!

是使用乘法计算的,所以初始值为1*/

s=1;

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

/*计算i!

的值,将i!

的值放入s变量中*/

s=s*i;

returns;

}

main()

{

longs;

intk,n;

/*输入n的值*/

scanf("%d",&n);

/*s变量保存y=0!

+1!

+2!

+3!

+4!

+……+n!

的合计值,所以初始化为0*/

s=0;

for(k=0;k<=n;k++)

/*计算0!

+1!

+2!

+3!

+4!

+……+k!

的值,将k!

的值放入s变量中*/

s=s+fun(k);

printf("%ld\n",s);

}

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

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1