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 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
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
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 */ 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库北理C语言作业及答案3在线全文阅读。
相关推荐: