码迷,mamicode.com
首页 > 其他好文 > 详细

第一次试验

时间:2017-03-06 22:13:14      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:oid   思路   blog   地址   class   http   实验   while   结束   

试验一:用递归函数计算1+2+....+100的值。

#include<stdio.h>
int sum(int n);
int main()
{
    int num=0;
    num=sum(100);
    printf("%d",num);
    return 0;
}
int sum(int n)
{
    if(n==1)
    return 1;
    else 
    return n+sum(n-1);
}

技术分享

试验二:用递归函数将int 483 转换为字符串 483.

#include<stdio.h>
void ver(int a);
int main()
{
    ver(483);
    return 0;
 } 
 void ver(int a)
 {
     int b=0;
     char c;
     if(a!=0)
     {
         ver(a/10);
         b=a%10;
         c=b+0;
         printf("%c",c);
     }
 }

技术分享

试验三:在子函数中用指针将主函数中的两个数交换数值。

#include<stdio.h>
void f(int *a,int *b);
int main()
{
    int a,b;
    printf("请输入两个数。\n");
    scanf("%d%d",&a,&b);
    f(&a,&b);
    printf("%d\t%d",a,b);
    return 0;
}
void f(int *a,int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

技术分享

实验四:将整数用递归转换为字符串。

#include<stdio.h>
void ver(int n,char a[]);
int main()
{
    int b=0;
    char a[100];
    scanf("%d",&b);
    ver(b,a);
    puts(a);
    return 0;
}
void ver(int n,char a[])
{
    static i=1;
    int q=n,num=0,b=0;
    while(q!=0)
    {
        q=q/10;
        num++;
    }
    if(n!=0)
    {
        b=n%10;
        a[num]=b+0;
        i++;
        ver(n/10,a);
    }
    else 
    {
        a[i]=\0;
    }
}

技术分享

总结:想清楚递归的思路,它是如个一次一次调用本身,并当到临界条件时,又一次次返回到第一次调用的。

  在子函数中交换主函数中的两个数值,比如向形参传递地址,而非数值,如果传递数值,那么在子函数中交换的只是形参,当函数调用结束后,形参内存释放,主函数中数值并没有改变。传递地址,通关指针间接访问主函数中的两个数值,交换主函数中的数值。

 

第一次试验

标签:oid   思路   blog   地址   class   http   实验   while   结束   

原文地址:http://www.cnblogs.com/TX980502/p/6512160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!