| 本帖最后由 Guido 于 2020-11-10 10:00 编辑 
 1.編写以下函数,求字符串数组的长度:
 int StringLength(char str[])
 #include<stdio.h>
int StringLength(char str[])
{
        int i = 0;
        while (str)
        {
                i++;
        }
        return i;
}
int main()
{
        char s[32];
        int a;
        printf("请输入一组少于31个字符的字符串\n");
        scanf_s("%s", s, sizeof(s));                    //这里一定要用%s控制符,这样才能表示连续输入一串,刚开始自己用了%c出错了
        a=StringLength(s);
        printf("%d", a);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   2.编写以下函数,将字符串在数组内反序:
 void Reverse(char str[])
 #include<stdio.h>
void Reverse(char str[])
{
        int i=0;
        int j=0;
        char c;
        while (str) //先计算数组中的元素个数,不包括\0
        {
                i++;
        }
        while (--i>j)      //  1 2 3 4 5    
        {
                c = str[j];
                str[j] = str;
                str = c;
                j++;
        }
}
int main()
{
        char s[32];
        scanf_s("%s", s, sizeof(s));
        Reverse(s);
        puts(s);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   3.编写以下函数,将字符串数组内的所有小写字母转为大写:
 void StringUpper(char str[])
 
 #include<stdio.h>
void StringUpper(char str[])
{
        int i = 0;
        while (str)
        {
                i++;
        }
        while (i--)
        {
                if (str >= 'a'&&str <= 'z')
                {
                        str -= ('a' - 'A');
                }
        }
}
int main()
{
        char s[32];
        scanf_s("%s", s, sizeof(s));
        StringUpper(s);
        puts(s);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   4.编写以下函数,将带入的n个数组元素按从小到大排序:。
 void Sort(int array[],int n)
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   
 #include<stdio.h>
#include<stdlib.h>
void Sort(int s[], int len)
{
        int j = 0;
        int t;
        while (--len)
        {
                j = 0;
                while (j<len)
                {
                        if (s[j] > s[j + 1])
                        {
                                t = s[j];
                                s[j] = s[j + 1];
                                s[j + 1] = t;
                        }
                        j++;
                }
        }
}
int main()
{
        int a[10] = {1,3,2,4,5,0,123,3,0,9};
        int len=_countof(a);
        Sort(a,len);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   
 //由小到大排列,从右边推到左边
#include<stdio.h>
void sort2(int p[], int nLen)
{
        int i = 0;
        int t = 0;
        int j = nLen-1;
        int k = -1;
        while (j)   
        {
                i = nLen-1;
                ++k;                //设置k是为了限制内层循环的次数
                while (i>k)  //内存循环
                {
                        if (p < p[i - 1])
                        {
                                t = p;
                                p = p[i - 1];
                                p[i - 1] = t;
                        }
                        i--;
                }
                j--;
        }
}
int main()
{
        int a[] = { 9,8,7,6,5,4,3,2,1,0 };
        int b = 10;
        sort2(a, b);
        return 0;
}
逆向学习第14天_字符数组代码练习及多种冒泡排序法   5.编写4种置泡排序函数,使用数组作参数:分别将最大值最小值推回头部或尾部。
 (在main函数或全局区定义一个数组,作为实际参数调用4种排序函数进行测试)
 注意:数组在做实际参数时,在被调函数中不能通过sizeof或者countof来测量元素个数;
 因此,每个排序函数中要将数组的元素个数通过参数传递到被调函数;
 例如:
 void sort1(int p[],int nLen)
 void sort2(int p[],int nLen)
 void sort3(int p[],int nLen)
 void sort4(int p[],int nLen)
 .......
 
 //由小到大排列,从左边推到右边
#include<stdio.h>
void sort1(int p[], int nLen)
{
        int i = 0;
        int t = 0;
        while (--nLen)   //外层循环一定要先自身减减,因为数组下标是从0开始的
        {
                i = 0;
                while (i < nLen)  //内存循环
                {
                        if (p > p[i + 1])
                        {
                                t = p;
                                p = p[i + 1];
                                p[i + 1] = t;
                        }
                        i++;
                }
        }
}
int main()
{
        int a[] = { 9,9,7,6,5,4,3,2,1,0 };
        int b = 10;
        sort1(a, b);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   
 //由大到小排列,从左边推到右边
#include<stdio.h>
void sort1(int p[], int nLen)
{
        int i = 0;
        int t = 0;
        while (--nLen)   //外层循环一定要先自身减减,因为数组下标是从0开始的
        {
                i = 0;
                while (i < nLen)  //内存循环
                {
                        if (p < p[i + 1])
                        {
                                t = p;
                                p = p[i + 1];
                                p[i + 1] = t;
                        }
                        i++;
                }
        }
}
int main()
{
        int a[] = { 0,1,2,3,4,5,6,7,8,9 };
        int b = 10;
        sort1(a, b);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   
 //由大到小排列,从右边推到左边
#include<stdio.h>
void sort2(int p[], int nLen)
{
        int i = 0;
        int t = 0;
        int j = nLen-1;
        int k = -1;
        while (j)   
        {
                i = nLen-1;
                ++k;                //设置k是为了限制内层循环的次数
                while (i>k)  //内存循环
                {
                        if (p > p[i - 1])
                        {
                                t = p;
                                p = p[i - 1];
                                p[i - 1] = t;
                        }
                        i--;
                }
                j--;
        }
}
int main()
{
        int a[] = { 0,1,2,3,4,5,6,7,8,9 };
        int b = 10;
        sort2(a, b);
        return 0;
}
逆向学习第14天_字符数组代码练习及多种冒泡排序法   6.编写一个函数在字符串内查找一个字符:
 int StringFind(char str[],char c)
 查找不到就返回-1:
 查找到学符串内包含这个字符,返回的是0到n的数字。
 代表这个学符距离字符串头的相对位置,如果字符串第一个元素就是要查找的字符返回0。
 在main函数中定义一个学符串数组,输入一些文学后调用查找函数测试。
 
 //查找某一个字符串中是否包含某个字符,存在则返回所在位置,不存在这返回-1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int StringFind(char str[], char c)
{
        int i = 0;
        while (str)
        {
                if (str == c)
                {
                        printf("\n%c在字符串%s中的位置为%d", c, str, i);
                        return i;
                }
                i++;
        }
        return -1;
}
int main()
{
        char str[32];
        char c;
        int a;
        printf("请输入小于32个字符的字符串\n");
        scanf_s("%s", str, sizeof(str));
        printf("请输入想要查找的字符\n");
        fflush(stdin);
        c = getchar();
        a=StringFind(str, c);
        return 0;
}
逆向学习第14天_字符数组代码练习及多种冒泡排序法   7.编写函数:
 void StringUpper(char str[])
 void StringLower(char str[])
 在main函数中定义一个字符串数组,输入一些文字后调以上两个函数:
 将实际参数内的文字全部变成大写或者小写。
 
 #include<stdio.h>
void StringLower(char str[])
{
        int i = 0;
        while (str)
        {
                i++;
        }
        while (i--)
        {
                if (str >= 'A'&&str <= 'Z')
                {
                        str += ('a' - 'A');
                }
        }
}
int main()
{
        char s[32];
        scanf_s("%s", s, sizeof(s));
        StringLower (s);
        puts(s);
        return 0;
}
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   8.阅读翻译以下字符串操作函数,
 strlen
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strcpy
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strcat
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strcmp
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strstr
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strtok
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strupr
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strlwr
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   strchr
 
 逆向学习第14天_字符数组代码练习及多种冒泡排序法   仔细测试这些函数的功能,思考自己能否编写代码实现以上函数的功能。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |