上机填空题2528.docx
- 文档编号:20406185
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:13
- 大小:18.09KB
上机填空题2528.docx
《上机填空题2528.docx》由会员分享,可在线阅读,更多相关《上机填空题2528.docx(13页珍藏版)》请在冰豆网上搜索。
上机填空题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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 填空 2528