北理C语言作业及答案3

2019-03-16 14:36

C语言作业3 43. 缩写展开

成绩: 10 / 折扣: 0.8

在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。例如用A-Z表示ABCD...XYZ,1-5表示12345,c-f表示cdef。 输入:

包含缩写形式的字符串 输出:

将缩写形式进行还原后的字符串 说明:

只分别对大写字母、小写字母和数字进行压缩,对于形如9-A,a-C这样的缩写不进行处理。

时额间内存外限限制进制 程 164M 0 秒 测试输入 期待的输出 测以文本方式显示 试用1. 0-9? 例 1 测以文本方式显示 试用1. G-I? 例 2 测以文本方式显示 试用1. ABDG-K035-9abd-h? 例 以文本方式显示 1. 0123456789? 以文本方式显示 1. GHI? 164M 0 秒 以文本方式显示 1. ABDGHIJK0356789abdefgh? 164M 0 秒 3 测以文本方式显示 试用1. abcdef ghi jkl mn? 例 4 测以文本方式显示 试用1. 1-1? 例 5 以文本方式显示 1. abcdef ghi jkl mn? 164M 0 秒 以文本方式显示 1. 1-1? 164M 0 秒 #include int main() {

int i=0; char s[100]; gets(s); while(s[i]!='\\0') {

if(s[i+1]!='-') {

printf(\ i++; } else {

if(s[i+2]>s[i] && ((s[i]<=57)+(s[i+2]<=57)!=1) && (s[i]<=57||s[i]>=65)) {

while(s[i]!=s[i+2]){ printf(\ } i+=2; }

else printf(\ } } printf(\

return 0; }

44. 函数递归

成绩: 10 / 折扣: 0.8

编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。 f( n ) =

1

f(n-1) + f(n-3) f(n-2) + f(n-4) -1

当 n >= 0 且 n <= 4 时 当 n > 4 且n为偶数 时 当 n > 4 且n为奇数 时 其他

函数原型如下:

int findf(int n);

参数说明:n 项数;返回值是第n项值。 例如输入:10,输出:8

预设代码

前置代码

view plaincopy to clipboardprint?

1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.

3. #include 4.

5. int main()

6. { int n,s, findf( int ); 7. scanf(\, &n); 8. s = findf(n);

9. printf(\, s); 10. return 0; 11. } 12.

13. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */#include int main(){ int n,s, findf( int ); scanf(\ s = findf(n); printf(\ return 0;}/* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 测试输入 期待的输出 时间限制 内存限制64M 额外进程0 以文本方式显示 以文本方式显示 无限制 测试用例 1 1. 10? 1. 8? int findf(int n) { if(n>=0&&n<=4) return 1; else if(n>4&&n%2==0) return findf(n-1) + findf(n-3); else if(n>4&&n%2==1) return findf(n-2) + findf(n-4); else return -1; }

45. 大家再来做游戏

成绩: 10 / 折扣: 0.8

还是那个大家做游戏的问题:

幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,给出开始报数的小孩的编号后,从这个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,接着从下一个小朋友在从1开始报数,直到只剩下一位小朋友游戏才中止。

输入: 小朋友的个数(<=50) 开始报数的小孩的编号 要被练习的数字 输出: 最终被留下的小朋友的序号 例如输入:4 1 3

输出:The left child is NO 1.

说明:这次,以函数的方式实现上述问题。主函数已经给出,仅需提交自己编写的函数。你可以尝试用递归方法来解决呦! 这个问题是著名的约瑟夫问题,基于著名犹太历史学家 Josephus讲述的一个,所以函数的名字是josephus。 函数原型:

int josephus( int * boy, int n, int m, int r) 参数说明:

int * boy:保存参加游戏的小孩编号的整型数组的首地址。小孩的编号从1开始。 int n:开始参加游戏的小孩总数。

int m:开始时第一次报数的小孩的编号。 int r:要被练习的数字。

预设代码

josephus.c

view plaincopy to clipboardprint?

1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.

3. #include \

4. int josephus( int *boy, int n, int m, int r ); 5.

6. int main( )

7. { int i, boy[50]={0}, n, m, r; 8. scanf(\,&n,&m,&r);

9. if( n<=0 || n>50 || m<=0 || m>50 || r<=0 ) 10. printf(\ ); 11. else 12. {

13. for( i=0; i

15. printf( \, josephus( boy, n, m, r ) ); 16. }

17. return 0; 18. } 19.

20. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */


北理C语言作业及答案3.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(试行)火车采样机的操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: