上机填空题1-4

上传人:野鹰 文档编号:1145213 上传时间:2017-05-29 格式:TXT 页数:13 大小:11.69KB
返回 下载 相关 举报
上机填空题1-4_第1页
第1页 / 共13页
上机填空题1-4_第2页
第2页 / 共13页
上机填空题1-4_第3页
第3页 / 共13页
上机填空题1-4_第4页
第4页 / 共13页
上机填空题1-4_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《上机填空题1-4》由会员分享,可在线阅读,更多相关《上机填空题1-4(13页珍藏版)》请在金锄头文库上搜索。

1、上机填空题1-4.txt世上有三种人:一是良心被狗吃了的人,二是良心没被狗吃的人,三是良心连狗都不吃的人。丶爱情是个梦,而我却睡过了头1题目:请补充fun函数,fun函数的功能是求10的阶乘。注意:部分源程序如blank.c给出。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include long fun ( int n)if (_1_) return (n*fun(_2_);else if (_3_) return 1;main()int k = 10 ;printf(%d!=%ldn, k, fun ( k ) ;2题目:请在函数fu

2、n的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如0 1 1 2 3 5 8 13 注意:部分源程序如blank.c给出。请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。#include int fun(int n);main() int i,n=0;scanf(%d,&n);for( i=0;i#include #include #define N 81void fun(char *s) int i=0,t,n=strlen(s);for(;_1_;i+)t=*(s+

3、i);_2_;_3_;main()char aN;clrscr();printf(Enter a string:);gets(a);printf(The original string is:);puts(a);fun(a);printf(n);printf(The string after modified:);puts(a);4题目:请补充函数fun,它的功能是:计算 输出n n 内能被3或7整 的所有 数的 数之和。例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。注意:部分源程序如blank.c给出。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线

4、上填入所编写的若干表达式或语句。#include double fun(int n)int i;double sum=0.0;if(n0&n0 n为 数。所 ,10的阶乘是计算10*9*8*7*6*5*4*3*2*1的 , 句是计算110之 所有 数的乘。从程序,fun函数是计算阶乘的函数,是在fun函数中 调用了 , return (n*fun(_2_);中fun函数 调用了fun函数,种函数 调用 的 在程序 计中 为 ,使用 种程序 计 计人 的程序 计能有 的 求。计算阶乘是 程序 计的一个 例。计算 个数的阶乘是用个数乘 1 在内的所有它的数。例如,fun(5)等于 5*4*3*2*

5、1,而 fun(3)等于 3*2*1。阶乘的一个有 是, 个数的阶乘等于currency1 数 starting number 乘 它一的数的阶乘。例如,fun(5)5 * fun(4) 。 能 编写阶乘函数fun:int fun(int n)return n * fun(n - 1);不过,个函数的 题是,它 , 为它没有 的 。函数连续不断 调用 fun。当计算到零时,没有条件停 它,所 它继续调用零和负数的阶乘。 此,我们的函数需 一个条件,告诉它何时停 。由于于 1 的数的阶乘没有任何意义,所 我们在计算到数字 1 的时候停 , 返回 1 的阶乘 1 。 此,真正的 函数类似于:int

6、 fun(int n)if(n = 1)return 1;elsereturn n * fun(n - 1); 2分:从题意 得知本题计算的是斐波纳契数列,斐波纳契数列的计算 由题目得知该数列中每数等于前面两数之和,如0 1 1 2 3 5 8 13 ,我们 列出 计算斐波纳契数列的式:fun(0)=0 当n=0fun(1)=1 当n=1fun(n)=fun(n-1)+fun(n-2) 当n1当n等于0的时候, 计算斐波纳契数列的 一个数字,根据题目知道该数列的 一个数字为0。当n等于1的时候, 计算斐波纳契数列的 二个数字,根据题目知道该数列的 二个数字为1。当n等于2的时候, 计算斐波纳契

7、数列的 三个数字,由于该数列中每数等于前面两数之和,所 fun(2)=fun(1)+fun(0)。当n等于3的时候, 计算斐波纳契数列的 四个数字,由于该数列中每数等于前面两数之和,所 fun(3)=fun(2)+fun(1)。所 当n 于1的时候,fun(n)=fun(n-1)+fun(n-2)。里存在函数调用本 的 ,种 在程序 计中 为 。3分:将字符串中的内容逆置主 思路分如:1 在字符串 一个字母位置和 后一个字母位置各 置一个指 器A和B,它们分别指向 一个字母和 后一个字母, 后A位置的字母和B位置的字母进 互 。2 互 束之后指 器A移动到 二个字母,而指 器B移动到 数 二个

8、字母, 指 器A往后移动一个字母位置,而指 器B往前移动一个字母位置, 后A位置的字母和B位置的字母进 互 。3 互 束之后指 器A往后再次移动一个字母位置,而指 器B再次往前移动一个字母位置, 后A位置的字母和B位置的字母进 互 。4 上过程反复进 ,有指 器B的位置于指 器A的位置, 指 器B指向的位置在指 器A指向的位置的左边的情况才 束,所 上过程 使用循环语句实 ,循环 条件 判断指 器B的位置是否于指 器A的位置。 为了实 上思路,我们观察fun函数。fun函数的功能是将传入的s参数作为字符串进 内容逆置,它的逆置 和我们分的思路是一致的。它使用了for循环语句进 循环,循环体中使

9、用指针s+i作为指器A,而指 器B使用s+n-1-i表 。其中i每次循环 一,而n=strlen(s),为传入的字符串的长度。strlen函数 得到s参数的字符串中 含的字母个数。为什么指针s+i 作为指 器A呢?由于指针s应main函数传入的a数组,而C语言中数组名 是一个指向数组 一个元素的指针,所 数组a的名 a是一个char类型的指针, 为char * a;。所 指针s指向传入的字符串的 一个字母,所 使用s作为指 器A的初 值。而每次循环i都 一,在C语言语 中,一个指针 上一个整数表 一个 指针,该指针指向原指针向后移动所 上整数个数的位置,所s+1指向字母b,s+2指向字母c,依

10、次类推。为什么s+n-1-i 作为指 器B呢?如传入的字符串为abcde,s指针指向字母a,n为字符串为abcde的长度, 字符串abcde的字母个数, 为5。一个指针 上一个整数表 一个 指针,该指针指向原指针向后移动所 上整数个数的位置,所 s+5表 指向从字母a向后移动5个位置的 指针,字母e后面一个位置,而我们希望指 器B指向字母e,所 s+n-1才是指 器B的初 值。每次循环i都 一,在C语言语 中,一个指针减一个整数表 一个 指针,该指针指向原指针向前移动所减整数个数的位置。例如s+n-1指向字母e,s+n-1-1指向字母d,s+n-1-2指向字母c,依次类推。进 逆置的for循环

11、 条件是判断指 器A的位置是否在指 器B的位置的右边,么循环继续的条件是指 器A的位置应该在指 器B的位置的左边。根据C语言的语 ,指针P1在指针P2的左边 使用P1#include #include #define N 81/* fun函数的功能是把字符串中的内容逆置 */void fun(char *s)/* 定义存放 逆置的字符串的字符数组 */int i=0,t,n=strlen(s);for(;s+i */ /* clrscr函数的作用是进 清屏 */* 所谓清屏是指将已 显 在DOS窗口的所有内容清 */clrscr();/* 在已 进 清屏的DOS窗口中显 Enter a str

12、ing:的提 信息 */printf(Enter a string:);/* gets函数定义在stdio.h头文件中,所 需 #include */* gets函数的作用是接收用户从键盘上输入字符串, 后放入参数a数组中 */gets(a);/* 在DOS窗口中显 The original string is:的提 信息 */printf(The original string is:);/* puts函数定义在stdio.h头文件中,所 需 #include */* puts函数的作用是将参数a数组中的内容输出到DOS窗口 */puts(a);/* fun函数的作用是将a数组中的字符串进

13、逆置 */fun(a);/* 输出 符, 使DOS窗口输出信息的位置移动到一 */printf(n);/* 在 的一 输出The string after modified:提 信息 */printf(The string after modified:); /* 输出参数a数组中的内容, 进 逆置之后的 */puts(a);4分:计算 输出n n 内能被3或7整 的所有 数的 数之和, 计总体思路如:由于计算n n 内能被3或7整 的所有 数的 数之和,所 我们 使用循环一个一个 检查从1到n范围中的 数字是否能被3或 7整 ,如 整 ,则计算当前循环检查的数字i的 数,i的 数计算 如:1

14、.0/i。由于计算的是 数之和,所 程序中需 使用一个变量sum保存 数之和,一个变量初 值应该为0.0, 后每次循环的时候一 当前检查的数字i能被3或 7整 ,将sum变量的值 上数字i的 数, 后将得到的和覆盖sum变量, sum变量 保存当前循环为 检查的能被3或7整 的数字的 数之和。当循环 束的时候,sum变量的值是 。判断数字i能被3或 7整 使用取 算 % 。根据C语言语 ,取 算是取 数,例如5%2=3, 为5 2得到的 为1, 数为3。i的 数计算 如:1.0/i,为什么不写1/i呢?根据C语言的语 ,如整 算符 / 两个 作数都是整数而不是实数的,计算 是整数,不 算 有没

15、有数部分,整 算符的 有整数部分。例如12/10=1,而不是1.2。1.0/i和1/i的 别在于1.0是实数类型 float double 而不是整数类型 int ,由于i是整数类型,1.0/i的算 为了使算 度 能的得到保留, 将是实数类型, 算 的数部分得到保留。而1/i的算 不保留数部分, 为1和i都是整数类型。上所 ,我们希望sum变量保存 数之和,而 数之和一定有数部分,所 sum定义为double类型,而 三处填空处 填写1.0/i,如填写1/i,程序算 将是0。整个程序注如:#include double fun(int n)int i;/* sum用于 符 条件的 数的 数之和,所 初 为0.0 */double sum=0.0;if(n0&n=100)/* 计算n n 内能被3或7整 的所有 数的 数之和 *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号