zoukankan      html  css  js  c++  java
  • C语言题目复习前7章重点程序

    /**
    #include <stdio.h>
    #include <stdlib.h>
    
    int max(int n1, int n2)
    {
        return (n1 > n2) ? n1 : n2;
    }
    
    int main()
    {
        int a, b, c;
        if(a == max(a, b))
        {
            if(a == max(a, c))
                printf("%d
    ", a);
            else if(c == max(b, c))
                printf("%d
    ", c);
            else
                printf("%d
    ", b);
        }
        return 0;
    }
    */
    /**失误代码告诉我,不要尝试抖机灵。。。,越写越垃圾。。。*/
    ///能正确实现功能的程序,就是好程序
    /**
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a, b, c;
        scanf("%d %d %d",&a, &b, &c);
        if(a > b)
        {
            if(a > c)
                printf("%d
    ", a);
            else{
                printf("%d
    ", c);
            }
        }else{
            if(b > c)
                printf("%d
    ", b);
            else{
                printf("%d
    ", c);
            }
        }
        return 0;
    }
    */
    /**
    #include <stdio.h>
    #include <stdlib.h>
    
    int judge_year(int y)
    {
        if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
            return 1;
        return 0;
    }
    
    int main()
    {
        int year;
        scanf("%d", &year);
        if(judge_year(year))
        {
            puts("leap year!");
        }else{
            puts("nonleap year");
        }
        return 0;
    }
    */
    /**
    #include <stdio.h>
    #include <stdlib.h>
    
    double sum_decimals(int n)
    {
        int i;
        double sum = 0;
        for(i = 1; i <= n; ++i)
            if(i % 2 == 0)
                sum += -(1.0/i);
            else
                sum += 1.0/i;
        return sum;
    }
    
    int main()
    {
        int n;
        scanf("%d", &n);
        printf("%f
    ", sum_decimals(n));
        return 0;
    }
    */
    /**
    ///要注意的地方是,乘号,不要忘记了,从数学公式到程序,这个容易丢
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int a, b, c;
        double area, p;
        scanf("%d %d %d", &a, &b, &c);
        if(a+b > c && b+c > a && a+c > b)
        {
            p = (a+b+c+0.0)/2;
            area = sqrt(p*(p-a)*(p-b)*(p-c));
            printf("%f
    ", area);
        }else{
            printf("Do not construct triangle");
        }
        return 0;
    }
    */
    /**
    //char int 存储数据时的区别
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        char c1 = 197, c2 = 198;
        printf("%c %c
    ", c1, c2);
        printf("%d %d", c1, c2);
        return 0;
    }
    */
    
    /**
    //逻辑运算符的结合性都是自左向右的,而且逻辑运算符有短路特性
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int judge(int n, int a, int b, int c)
    {
        int x, y;
        if(n == 1)
        {
            if(a || b+c && b-c)
                return 1;
        }else if(n == 2){
            if(!(a>b) && !c || 1)
                return 1;
        }else if(n == 3){
            if(!(x=a) && (y=b) && 0)
                return 1;
        }else if(n == 4){
            if(!(a+b)+c-1 && b+c/2)
                return 1;
        }
        return 0;
    }
    
    int main()
    {
        int i;
        for(i = 1; i < 5; ++i)
        {
            if(judge(i, 3, 4, 5))
                puts("yes");
            else
                puts("no");
        }
        return 0;
    }
    */
    
    /**
    ///在switch case语句中的要点,在switch括号中的变量,只能是int / char类型
    ///在case后边的,只能是对应的int / char值
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int score;
        scanf("%d", &score);
        switch(score/10)
        {
            case 10: puts("A"); break;
            case 9 : puts("B"); break;
            case 8 : puts("C"); break;
            default:           puts("D");
        }
        return 0;
    }
    */
    
    /**
    ///递归写的时候,注意递归基,和递归结束条件。把握好这两点,递归就行
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int fabonacci(int n)
    {
        if(n == 1 || n == 2)
            return 1;
        else
            return fabonacci(n-1)+fabonacci(n-2);
    }
    
    int main()
    {
        printf("%d %d
    ", 8, fabonacci(8));
        return 0;
    }
    */
    
    
    /**
    ///这道题没什么好说的,很简单
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int num(int i, int base)
    {
        int j;
        for(j = 0; j < i-1; ++j)
        {
            base = base*10 + base%10;
            printf("%d
    ", base);
        }
        return base;
    }
    
    int main()
    {
        int n = 5, sum = 0, i;
        for(i = 1; i <= 5; ++i)
        {
            sum += num(i, 2);
            printf("%d
    ", sum);
        }
        return 0;
    }
    */
    
    /**
    //书上竟然有这样的题目。。。 用int型的话,阶乘达不到20!,就会超出int范围,所以用long long型,注意,long long型输出用 %lld
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    long long factorial(long long n)
    {
        long long i , fac = 1;
        for(i = 1; i <= n; ++i)
        {
            fac = fac * i;
        }
        return fac;
    }
    
    long long main()
    {
        long long sum = 0, i;
        for(i = 1; i <= 20; ++i)
        {
            sum += factorial(i);
            printf("%lld
    ", sum);
        }
        return 0;
    }
    */
    
    
    /**
    ///久违的水仙花数
    ///写程序的时候注意,如果函数的形参可以不动,尽量不动。因为改动了之后,就找不回了,程序运行完成之后,它会被释放掉
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int cude(int n)
    {
        return n*n*n;
    }
    
    int judge_num(int n)
    {
        int bit[3], i = 0, tmp = n;
        while(tmp)
        {
            bit[i] = tmp % 10;
            tmp /= 10;
            i++;
        }
        if(n == (cude(bit[0]) + cude(bit[1]) + cude(bit[2])))
        {
            return 1;
        }
        return 0;
    }
    
    int main()
    {
        int i;
        for(i = 100; i < 1000; ++i)
        {
            if(judge_num(i))
                printf("%d is!
    ", i);
        }
        return 0;
    }
    */
    
    /**
    //不说了,很简单
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int judge(int n)
    {
        int i, fac_sum = 0;
        for(i = 1; i < n; ++i)
        {
            if(n % i == 0)
                fac_sum += i;
        }
        if(n == fac_sum)
            return 1;
        return 0;
    }
    
    int main()
    {
        int i;
        for(i = 1; i <= 1000; ++i)
        {
            if(judge(i))
            {
                printf("%d!
    ", i);
            }
        }
        return 0;
    }
    */
    
    
    /**
    ///斐波那契数列的变形
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int i, n1 = 1, n2 = 1, tmp;
        double sum = 0;
        for(i = 0; i < 20; ++i)
        {
            tmp = n1 + n2;
            printf("%f
    ", (tmp+0.0) / n2);
            sum += (tmp+0.0) / n2;
            n1 = n2;
            n2 = tmp;
        }
        printf("%f
    ", sum);
        return 0;
    }
    */
    
    /**
    ///牛顿迭代法求根,这个要记住
    ///这个程序,除了记住牛顿迭代法的方法外,还要注意, double类型要用 %lf  进行读入
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    double my_sqrt(double n)
    {
        double a1 = 2, a2 = 0, tmp;
        while(fabs(a1 - a2) > 0.00001)
        {
            a2 = 0.5*(a1 + n/a1);
            //printf("%f
    ", n);
            //printf("%f %f %f
    ", a1, a2, tmp);
            tmp = a2;
            a2 = a1;
            a1 = tmp;
        }
        return a1;
    }
    int main()
    {
        double n1;
        while(scanf("%lf", &n1) != EOF)
            printf("%f
    ", my_sqrt(n1));
        return 0;
    }
    */
    
    /**
    ///注意,字符串的大小是根据 “字典序” 来定义的,这里我用指针写了写
    #include <stdio.h>
    #include <string.h>
    
    int judge_str(char *str1, char *str2)
    {
        int i, len1 = strlen(str1), len2 = strlen(str2);
        for(i = 0; i < len1 && i < len2; ++i)
        {
            if(*(str1 + i) < *(str2 + i))
                return 1;
            else if(*(str1 + i ) > *(str2 + i))
                return -1;
        }
        return 0;
    }
    
    int main()
    {
        int i,j;
        char str[3][10] = {"china", "japan", "indin"}, *max;
        for(i = 0; i < 3; ++i)
        {
            for(j = i+1; j < 3; ++j)
            {
                if(judge_str(str[i], str[j]) == 1)
                {
                    max = str[i];
                }
            }
        }
        puts(max);
        return 0;
    }
    */
    
    /**
    ///简单选择排序
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void swap(int *a, int *b)
    {
        int tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    void select_sort(int *arr, int n)
    {
        int i, j, index;
        for(i = 0; i < n; ++i)
        {
            index = i;
            for(j = i+1; j < n; ++j)
            {
                if(arr[j] > arr[index])
                {
                    index = j;
                }
            }
            if(index != i)
            {
                swap(&arr[i], &arr[index]);
            }
        }
    }
    
    int main()
    {
        int i, arr[10] = {1, 4, 5, 6, 8, 7, 9, 0, 2, 3};
        select_sort(arr, 10);
        for(i = 0; i < 10; ++i)
        {
            printf("%d   ", arr[i]);
        }
        puts("");
        return 0;
    }
    */
    
    /**
    ///冒泡排序
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    void swap(int *a, int *b)
    {
        int tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    void bubble_sort(int *arr, int n)
    {
        int i, j;
        for(i = 0; i < n; ++i)
        {
            for(j = i+1; j < n; ++j)
            {
                if(arr[i] > arr[j])
                    swap(&arr[i], &arr[j]);     ///上边写的,这里就错了,总是忘了 '&' 符号,注意,注意
            }
        }
    }
    
    int main()
    {
        int i, arr[10] = {1, 4, 5, 6, 8, 7, 9, 0, 2, 3};
        bubble_sort(arr, 10);
        for(i = 0; i < 10; ++i)
        {
            printf("%d   ", arr[i]);
        }
        puts("");
        return 0;
        return 0;
    }
    */
    
    /**
    ///将一个数,插入到已经有序的数组中
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void insert_num(int *arr, int n, int num)
    {
        int i, j;
        for(i = 0; i < n; ++i)
        {
            if(num < arr[0])
                break;
            if(num >= arr[i] && num < arr[i+1])         ///注意这里的写法,
                break;
        }
    
        for( j = n; j > i; --j)
        {
            arr[j] = arr[j-1];
        }
        arr[i] = num;
    }
    
    void print_arr(int *arr, int n)
    {
        int i;
        for(i = 0; i < n; ++i)
        {
            printf("%d   ", arr[i]);
        }
    }
    int main()
    {
        int arr[10] = {2, 3, 4, 5, 5, 7, 8};
        insert_num(arr, 7, 9);
        print_arr(arr, 8);
        return 0;
    }
    */
    
    
    /**
    ///将数组中的数,逆序排放
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    void swap(int *a, int *b)
    {
        int tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    void print_arr(int *arr, int n)
    {
        int i;
        for(i = 0; i < n; ++i)
        {
            printf("%d   ", arr[i]);
        }
    }
    
    void inverst_arr(int *arr, int n)
    {
        int i;
        for(i = 0; i < n/2; ++i)
        {
            swap(&arr[i], &arr[n-i-1]);
        }
    }
    
    int main()
    {
         int arr[10] = {2, 3, 4, 5, 5, 7, 8};
        inverst_arr(arr, 10);
        print_arr(arr, 10);
        return 0;
    }
    */
    
    
    /**
    ///杨辉三角,前10行
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void printf_yh_triangle()
    {
        int i, j, arr[10][10] = {{1}, {1,1}};
        printf("%d
    ", arr[0][0]);
        for(i = 1; i < 10; ++i)
        {
            for(j = 0; j <= i; ++j)
            {
                if(j == 0 || j == i)
                {
                    arr[i][j] = 1;
                    printf("%d ", arr[i][j]);
                }
                else{
                    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                    printf("%d ", arr[i][j]);
                }
            }
            puts("");
        }
    }
    
    int main()
    {
        printf_yh_triangle();
        return 0;
    }
    */
    
    /**
    ///1~n*n 构成的魔方阵
    ///dfs 的写法 4*4 就跑不动了。。。。。。
    ///其他写法呢??  ->   http://blog.csdn.net/cmutoo/article/details/5487157
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define N  3
    int vis[10000];
    
    int judge(int arr[][N], int n)
    {
        int i, j, a[10] = {0}, b[10] = {0}, x1 = 0, x2 = 0;
        for(i = 0; i < n; ++i)
        {
            for(j = 0; j < n; ++j)
            {
                a[i] += arr[i][j];
            }
        }
        for(i = 0; i < n-1; ++i)
        {
            if(a[i] != a[i+1])
                return 0;
        }
        for(i = 0; i < n; ++i)
        {
            for(j = 0; j < n; ++j)
            {
                b[i] += arr[j][i];
            }
        }
        for(i = 0; i < n-1; ++i)
        {
            if(b[i] != b[i+1])
                return 0;
        }
        for(i = 0; i < n; ++i)
        {
            x1 += arr[i][i];
        }
        for(i = 0; i < n; ++i)
        {
            x2 += arr[n-i-1][i];
        }
        if(a[0] == b[0] && b[0] == x1 && x1 == x2)
            return 1;
        return 0;
    }
    
    void print_dfs(int arr[][N])
    {
        int i, j;
        for(i = 0; i < N; ++i)
        {
            for(j = 0; j < N; ++j)
            {
                printf("%d ", arr[i][j]);
            }
            puts("");
        }
        puts("");
    }
    
    void dfs(int arr[][N], int n, int num)
    {
        int row = num / n;
        int col = num % n;
        int i;
        if(row > n-1)
            return;
        for(i = 1; i <= N*N; ++i)
        {
            if(!vis[i] && arr[row][col] == 0)
            {
                vis[i] = 1;
                arr[row][col] = i;
                if(row == col && row == n-1 && judge(arr, N) == 1)
                {
                    print_dfs(arr);
                }
                dfs(arr, n, num+1);
                arr[row][col] = 0;
                vis[i] = 0;
            }
        }
    }
    
    int main()
    {
        int i, brr[N][N] = {0}; //arr[3][3] = {{8,1,6}, {3,5,7}, {4,9,2}};
        memset(vis, 0, sizeof(vis));
        for(i = 1; i <= N*N; ++i)
        {
            dfs(brr, N, i-1);
        }
        return 0;
    }
    */
    
    ///奇幻方阵的构造方法
    /**
    奇数阶幻方
    最经典的填法是罗伯特法(楼梯法),填写方法是这样:
    把1(或最小的数)放在第一行正中;按以下规律排列剩下的n×n-1个数:
    (1)每一个数放在前一个数的右上一格;
    (2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
    (3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
    (4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;
    (5)如果这个数所要放的格已经有数填入,处理方法同(4)。
    这种写法总是先向“右上”的方向,象是在爬楼梯。
    三阶幻方:
       8   1   6
       3   5   7
       4   9   2
    */
    // 解奇阶幻方的通用模块
    ///写了这么多,也就这点价值高**********************************************************
    /**
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define N 100
    int main()
    {
        int arr[N][N] = {0};
        int n, x, y, i, j;
        scanf("%d", &n);
        x = n / 2;
        y = 0;
        for(i = 1; i <= n*n; ++i)
        {
            arr[y][x] = i;
            if(i%n == 0)
                y++;
            else
            {
                x++;
                y--;
            }
            x = (x%n + n) % n;  ///存在负数时,取模的方法
            y = (y%n + n) % n;
        }
    
        for(i = 0; i < n; ++i)
        {
            for(j = 0; j < n; ++j)
            {
                printf("%d ", arr[i][j]);
            }
            puts("");
        }
        puts("");
        return 0;
    }
    */
    /**
    ///找一个二位数组中的鞍点(可能不存在)
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int judge(int arr[][4], int num, int row, int col)
    {
        int i = 0;
        for(i = 0; i < 4; ++i)
        {
            if(num < arr[row][i])
                return 0;
            if(num > arr[i][col])
                return 0;
        }
        return 1;
    }
    
    int main()
    {
        int i, j, max, min;
        int arr[4][4] = {{1,2,3,4}, {5,6,7,8}, {2,3,4,5}, {6,7,8,9}};
        for(i = 0; i < 4; ++i)
        {
            for(j = 0; j < 4; ++j)
            {
                if(judge(arr, arr[i][j], i, j))
                {
                    printf("%d %d %d
    ",i, j, arr[i][j]);
                }
            }
        }
        return 0;
    }
    */
    /**
    ///二分查找,写最简单的就好了
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int binary_find(int *arr, int n, int num)
    {
        int low, high, mid;
        low = 0;
        high = n-1;
    
        while(low < high)
        {
            //printf("%d %d %d
    ", low, mid, high);
            mid = (low+high) / 2;
            if(arr[mid] == num)
                return mid+1;
            else if(num > arr[mid])
                low = mid;
            else
                high = mid;
        }
        return -1;
    }
    
    int main()
    {
        int arry[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
    
        int index = binary_find(arry, 20, 4);
        if(index)
        {
            printf("%d
    ", index);
        }else{
            puts("Not Found!");
        }
        return 0;
    }
    */
    /**
    ///P.169 连接两个字符串,不用strcat
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int get_str_len(char *str)
    {
        int len = 0;
        while(str[len] != '')
            len++;
        return len;
    }
    ///源码写法,好强
    char *str_cat(char *s1, const char *s2)
    {
        char *s;
        for(s = s1; *s != ''; ++s)
            ;
    
        for(; (*s = *s2) != ''; ++s, ++s2)
            ;
        return s1;
    }
    int main()
    {
        char str1[100], str2[100];
        scanf("%s %s", str1, str2);
        ///将str2 连接在 str1的后边
        int i, j;
        int len1 = get_str_len(str1);
        int len2 = get_str_len(str2);
        for(i = len1, j = 0; j < len2;)
        {
            str1[i++] = str2[j++];
        }
        str1[i] = '';
        puts(str1);
        //--------------
        str_cat(str1, str2);
        puts(str1);
        return 0;
    }
    */
    /**
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    int get_str_len(char *str)
    {
        int len = 0;
        while(str[len] != '')
            len++;
        return len;
    }
    
    ///学会这种写法,很nice
    int str_cmp(const char *str1,const char *str2)
    {
        //不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
        //return返回的比较值实际上是下一个字符。应将++放到循环体中进行。
    //    while(*str1 == *str2)
    //    {
    //        if(*str1 == '')
    //            return 0;
    //
    //        str1++;
    //        str2++;
    //    }
        ///用for写的近似于ASCI C源码
        for(;*str1 == *str2; ++str1, ++str2)
            if(*str1 == '')
                return 0;
        return *str1 - *str2;
    }
    
    int main()
    {
        char str1[100], str2[100];
        gets(str1);
        gets(str2);
    
        int len1 = get_str_len(str1);
        int len2 = get_str_len(str2);
    
        printf("%d
    ", str_cmp(str1, str2));
        return 0;
    }
    */
    /**
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    ///源码写法,简直优美!!
    char *str_cpy(char *s1, const char *s2)
    {
        char *s;
        for(s = s1; (*s++ = *s2++) != ''; )
            ;
        return s1;
    }
    
    int main()
    {
        char str1[100], str2[100];
        gets(str2);
        str_cpy(str1, str2);
        puts(str1);
        return 0;
    }
    */
    /**
    ///练练hanoi塔的写法,会写还是很简单的
    ///课本P 190
    #include <stdio.h>
    void move(char a, char c)
    {
        printf("%c -> %c
    ", a, c);
    }
    
    void hanoi(int n, char a, char b, char c)
    {
        if(n == 1)
            move(a, c);
        else{
            hanoi(n-1, a, c, b);
            move(a, c);
            hanoi(n-1, b, a, c);
        }
    }
    
    int main()
    {
        char A = 'A', B = 'B', C = 'C';
        hanoi(3, A, B, C);
        return 0;
    }
    ///搞定
    */
    /**
    ///求最大公约数,最小公倍数,
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    ///这种实现很简单
    int gcd(int a, int b)
    {
        if(b == 0)
            return a;
        else
            return gcd(b, a%b);
    }
    
    int lcm(int a, int b)
    {
        return (a*b)/(gcd(a, b));
    }
    
    int main()
    {
        int n1, n2;
        scanf("%d %d", &n1, &n2);
        printf("%d %d
    ", gcd(n1, n2), lcm(n1, n2));
        return 0;
    }
    */
    
    /**
    ///将矩阵转置
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void trans(int arr[3][3])
    {
        int i, j, tmp;
        for(i = 0; i < 3; ++i)
        {
            for(j = i; j < 3; ++j)
            {
                tmp = arr[j][i];
                arr[j][i] = arr[i][j];
                arr[i][j] = tmp;
            }
        }
    }
    
    int main()
    {
        int i,j;
        int a[3][3] = {0,1,2,3,4,5,6,7,8};
        trans(a);
        for(i = 0; i < 3; ++i)
        {
            for(j = 0; j < 3; ++j)
                printf("%d ", a[i][j]);
            puts("");
        }
        return 0;
    }
    */
    /**
    ///字符串反转
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void str_reversed(char *str)
    {
        int i;
        char tmp;
        int len = strlen(str);
        for(i = 0; i < len/2; ++i)
        {
            tmp = str[len-i-1];
            str[len-i-1] = str[i];
            str[i] = tmp;
        }
    }
    
    int main()
    {
        char str[] = "qwerqwer";
        str_reversed(str);
        puts(str);
        return 0;
    }
    */
    
    /**
    ///统计字符串中各种元素的个数
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int num1 = 0, num2 = 0, num3 = 0;
    
    void statistics(char *str)
    {
        while(*str != '')
        {
            if((*str >= 'a' && *str <= 'z') ||
               (*str >= 'A' && *str <= 'Z'))
            {
                num1 ++;
            } else if((*str >= '0' && *str <= '9'))
            {
                num2 ++;
            } else if (*str == ' '){
                num3 ++;
            }
            str++;
        }
    }
    
    int main()
    {
        char str[] = "China is a beautiful country 23333!";
        statistics(str);
        printf("%d %d %d
    ", num1, num2, num3);
        return 0;
    }
    */
    /**
    ///冒泡排序,最基本的交换排序
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void bubble_sort(char *str, int len)
    {
        int i, j;
        char tmp;
        for(i = 0; i < len; ++i)
        {
            for(j = i; j < len; ++j)
            {
                if(str[i] > str[j])
                {
                    tmp = str[i];
                    str[i] = str[j];
                    str[j] = tmp;
                }
            }
        }
    }
    
    int main()
    {
        char str[] = "asdfvjkloi";
        bubble_sort(str, 10);
        puts(str);
        return 0;
    }
    */
    /**/
    ///用递归,将数字转化为字符串
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void int_to_str(int num, char *str)
    {
        int tmp;
        if(num / 10 == 0)
        {
            *str = num + '0';
            str++;
            *str = '';
        }
        else
        {
            tmp = num / 10;
            *str = num % 10 + '0';
            str++;
            *str = '';
            int_to_str(tmp, str);
        }
    }
    
    
    int main()
    {
        int num, i;
        scanf("%d", &num);
        char str[100];
        int_to_str(num, str);
        int len = strlen(str);
        for(i = len-1; i >= 0; --i)
            putchar(str[i]);
        puts("");
        return 0;
    }
    

      

  • 相关阅读:
    python_元组
    python_列表
    python_字符串
    python_序列
    RFS一些基本概念
    学习RFS,所有文章的参考
    HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
    第四届河南省ACM SUBSTRING 字符串处理
    蓝桥杯 手链样式 排列组合
    蓝桥杯 牌型种数 DFS
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/5957261.html
Copyright © 2011-2022 走看看