简单的递归算法和简单的printf函数模拟

来源:互联网 发布:淘宝图片举报撤销吗 编辑:程序博客网 时间:2024/05/18 00:58
直接上代码吧!
1,  递归实现n^k;/*#include<stdio.h>#include<stdlib.h>int fun(int n,int k){if(k>0)return n*fun(n,k-1);return 1;}int main(){int n = 2;int k = 3;int ret = fun(n,k);printf("%d\n",ret);return 0;}*/2. 递归求出一个非负整数的每一位之和/*#include<stdio.h>#include<stdlib.h>int DisitSum(int n){if(n>9)return (n%10)+DisitSum(n/10);elsereturn n%10;}int main(){int n = 0;scanf("%d",&n);if(n<0){printf("请输入一个非负整数\n");scanf("%d",&n);}printf("%d\n",DisitSum(n));return 0;}*/3. 递归实现字符串的反向输出/*#include<stdio.h>void reverse_string(char *str){if(*str!='\0')reverse_string(str+1);printf("%c ",*(str-1));}int main(){char *str = "abcdef";reverse_string(str);return 0;}*///使用可变参数列表模拟printf();函数#include<stdio.h>#include<stdarg.h>void print(char *str, ...){const char *p = NULL;char ch;char c;va_list arg;//定义一个char 类型的指针va_start(arg,str);while(*str){switch(*str){case 's':p = va_arg(arg,const char *);while(*p){putchar(*p);p++;}++str;break;case 'c':ch = va_arg(arg,char);putchar(ch);++str;break;case ' ':++str;break;case '\n':putchar('\n');                        ++str;break;default:break;}}va_end(arg);}int main(){print("s ccc \n","hello",'b','i','t');//printf("%s","strstr");return 0;}

0 0
原创粉丝点击