0
点赞
收藏
分享

微信扫一扫

C语言学习笔记(函数,递归,数组,小题)

Sky飞羽 2022-02-19 阅读 89

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//#include <string.h>
#include <math.h>
#include <windows.h>
#include <time.h>
#include "add.h"


//int main()
//{
//    /*char arr[]="你好世界!!!!!!";
//    memset(arr,'a',5);
//    printf("%s\n",arr);*/
//
//    char str[] = "almost every programmer should know memset!";
//  memset (str,'-',6);
//  puts (str);
//return 0;
//}


//int swap1(int a,int b)
//{
//int tmp=0;
//tmp=a;
//a=b;
//b=tmp;
//return a,b;
//}//失败,形参数值的改变不影响实参的数值改变,所以用指针去操作内存,保证两个内存地址是一样的


//void swap2(int *px,int *py)
//{
//int tmp=0;
//tmp=*px;
//*px=*py;
//*py=tmp;
//}


//int main()
//{
//int x=50;int y=60;
//swap2(&x,&y);
//printf("x=%d   y=%d\n",x,y);
//return 0;
//}

//int just1(int a)
//{
//    if(((a%4==0)&&(a%100!=0))||(a%400==0))
//        return 1;
//    else
//        return 0;
//}

//int main ()
//{
//    int i=0;
//    printf("闰年为:");
//    for(i=0;i<=2022;i++)
//    {
//    if(just1(i)==1)
//    {printf("     %4d   ",i);}
//    }
//return 0;
//}

//void add(int *a)
//{
//(*a)++;//这里指针一定要加括号
//}
//
//int main()
//{
//    int a=0;
//    add(&a);
//    printf("这个数是%d\n",a);
//    add(&a);
//    printf("这个数是%d\n",a);
//return 0;
//}

//int main ()
//{
//    int x=0;int y=0;
//    int sum=0;
//    printf("请输入x的值:");
//    scanf("%d",&x);
//    printf("请输入y的值:");
//    scanf("%d",&y);
//    sum=add(x,y);
//    printf("结果为:%d\n",sum);
//return 0;
//}

递归,接受一个无符号的整形数,按顺序打印他的每一位
//void print(int n)
//{
//if(n>9)
//{
//print(n/10);//递归调用函数print,当输出为1时,一层一层返回
//           //递归(自身调用自己的编程函数)两必要条件:1有限制条件 2每次递归调用都都越来越接近限制条件
//}
//printf("%d ",n%10);
//}
//
//int main()
//{
//    int num=123456;
//    print(num);
//return 0;
//}

//int Strlen(char *str)
//{
//int count=0;
//while(*str!='\0')
//{
//count++;
//str++;
//}
//return count;
//}


int Strlen(char *str)
{
if(*str!='\0')
    return 1+Strlen(str+1);//一个字符一个字符的移动
    
    return 0;
}


//int main ()
//{
//    char arr[]="avbshdshdksdj";
//        int len =Strlen(arr);
//        printf("%d\n",len);
//return 0;
//}

//递归求n的阶乘
int factorial( int a)
{
if(a<=1)
    return 1;
else
    return a*factorial(a-1);//当数字超过34时,栈溢出(stack overflow)
}

//斐波那契数(递归),1 1 2 3 5 8 13 21 34 55..........
//int fib(int n)
//{
//if(n<=2)
//    return 1;
//else
//    return fib(n-1)+fib(n-2);
//}

int fib(int n)
{
    int i=0;int a=1;int c=0;
    int sum=1;
    if(n<=2)
        return 1;
    else
        for(i=2;i<n;i++)
        {
        c=sum;
        sum=a+c;
        a=c;
        }
        return sum;
}


//int main()
//{
//    static int b=0;int sum=0;int n=1;
//    for(;n;)
//    {
//    printf("请输入数字:");
//    scanf("%d",&b);
//    //sum=factorial(b);
//    sum=fib(b);//斐波那契数(递归)
//    printf("结果为:%d\n",sum);
//    printf("请输入判断数字:");
//    scanf("%d",&n);
//    }
//return 0;
//}


void bubble_sort(int arr[],int sz)
{
    int a=0;int b=0;
    int temp=0;
    for(;a<sz-1;a++)
    {
    for(b=0;b<sz-a-1;b++)
    {
        if(arr[b]>arr[b+1])
        {
    temp=arr[b];
    arr[b]=arr[b+1];
    arr[b+1]=temp;
        }
    }
    }
}

//void bubble_sort(int *arr[])//失败,数组是一个特殊的指针,所以这种用指针的方式不能用
//{
//    int a=0;int b=0;
//    int sz=sizeof(arr)/sizeof(arr[0]);
//    int temp=0;
//    for(;a<sz-1;a++)
//    {
//    for(b=0;b<sz-a-1;b++)
//    {
//        if(arr[b]>arr[b+1])
//        {
//    temp=*arr[b];
//    *arr[b]=*arr[b+1];
//    *arr[b+1]=temp;
//        }
//    }
//    }
//}

int main()
{
    int arr[]={1,2,5,6,8,9,4,5,6,5,6,10};
    int sz=0;int a=0;
    sz=sizeof(arr)/sizeof(arr[0]);
    bubble_sort(arr,sz);
    for(;a<sz;a++)
    {
    printf("%d ",arr[a]);
    }
    return 0;
}

//int main()
//{
//    int a=1;
//    for(;a;)
//    {
//    int arr[]={0};
//    printf("请输入数字:");
//    scanf("%d",&arr);
//    printf("%d\n",*arr);
//    printf("请输入判断数字:");
//    scanf("%d",&a);
//    }
//}

举报

相关推荐

0 条评论