数组的使用 用C语言编译程序

img


用C语言编译:密码只能由数字或英文字母组成;密码不少于6位,不超过15位;如果设置的密码不符合要求,输出反馈信息。 输入格式:第一行输入一个正整数N,随后输入N行用户密码,以回车结束。 输出格式:对输入的N行密码输出反馈信息。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    int n;
    char str[20];
    scanf("%d", &n);

    for (int i=1; i<=n; i++) {
        scanf("%s", str);

        int len = strlen(str);
        if (len < 6 || len > 15) {
            printf("第%d行错误:字符串长度不符合要求\n", i);
            continue;
        }

        int flag = 1;
        for (int j=0; j<len; j++) {
            if (!isdigit(str[j]) && !isalpha(str[j])) {
                printf("第%d行错误:字符串包含非法字符\n", i);
                flag = 0;
                break;
            }
        }

        if (flag) {
            printf("第%d行正确\n", i);
        }
    }

    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7550895
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【C语言】从键盘输入n个数,用冒泡法对这n个数进行排序(由小到大)。
  • 除此之外, 这篇博客: C语言链栈实现数制转换中的 当十进制数N不为零时 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1.将N对C取模所得余数入栈
    2.N更新为N与C的商

  • 以下回答来自chatgpt:

    问题解答

    密码校验功能

    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    
    int main() {
        int n;
        printf("请输入需要校验的密码数量n:");
        scanf("%d", &n);
        getchar();
        while (n--) {
            char password[20];
            printf("请输入一个长度不小于6位且不超过15位的密码:");
            fgets(password, 20, stdin);//使用fgets获取用户输入
            int len = strlen(password) - 1;//fgets会将回车符读取进来,需要减去
            if (len < 6 || len > 15) {//长度不符合要求
                printf("密码必须由数字或英文字母组成,长度不少于6位且不超过15位!\n");
            } else {
                int flag = 1;
                for (int i = 0; i < len; i++) {//检查是否只包含数字或者英文字母
                    if (!isalnum(password[i])) {//不是数字或者英文字母
                        flag = 0;
                        break;
                    }
                }
                if (flag) {//符合要求
                    printf("密码校验通过!\n");
                } else {//不符合要求
                    printf("密码必须由数字或英文字母组成,长度不少于6位且不超过15位!\n");
                }
            }
        }
        return 0;
    }
    

    数组中查找数字的下标

    #include <stdio.h>
    
    int main() {
        int n;
        printf("请输入数组长度:");
        scanf("%d", &n);
        int a[n];
        for (int i = 0; i < n; i++) {
            printf("请输入第%d个数字:", i+1);
            scanf("%d", &a[i]);
        }
        int num;
        printf("请输入你要查找的数字:");
        scanf("%d", &num);
        int index = -1;//初始化下标为-1
        for (int i = 0; i < n; i++) {
            if (a[i] == num) {//找到了数字
                index = i;
                break;
            }
        }
        if (index != -1) {//找到了数字
            printf("数字%d的下标为%d\n", num, index);
        } else {//没找到数字
            printf("找不到数字%d\n", num);
        }
        return 0;
    }
    

    指针排序

    #include <stdio.h>
    #include <stdlib.h>
    
    void sort(int **arr, int n) {
        int temp;
        for (int i = 0; i < n; i++) {
            int min = i;
            for (int j = i + 1; j < n; j++) {//查找从i开始后面的最小值
                if (**(arr + j) < **(arr + min)) {
                    min = j;
                }
            }
            if (min != i) {//交换arr[i]和arr[min]的值
                temp = **(arr + i);
                **(arr + i) = **(arr + min);
                **(arr + min) = temp;
            }
        }
        printf("排序后的数组为:\n");
        for (int i = 0; i < n; i++) {
            printf("%d ", **(arr + i));
        }
        printf("\n");
    }
    
    int main() {
        int n;
        printf("请输入数组元素个数:");
        scanf("%d", &n);
        int a[n];
        for (int i = 0; i < n; i++) {
            printf("请输入第%d个数字:", i + 1);
            scanf("%d", &a[i]);
        }
        int *p[n];
        for (int i = 0; i < n; i++) {
            p[i] = &a[i];
        }
        sort(p, n);
        return 0;
    }
    

    输入n个数进行排序,先按奇偶分类,再按从小到大排序

    #include <stdio.h>
    
    int main() {
        int n;
        printf("请输入总个数:");
        scanf("%d", &n);
        int num[n], initval[n];
        printf("请开始输入数字:\n");
        for (int i = 0; i < n; i++) {
            scanf("%d", &initval[i]);
        }
        int odd[n/2+1];//奇数
        int even[n/2+1];//偶数
        int odd_len = 0, even_len = 0;//奇数和偶数个数的下标
        for (int i = 0; i < n; i++) {//划分奇偶数组
            if (initval[i] % 2 == 0) {//偶数
                even[even_len++] = initval[i];
            } else {//奇数
                odd[odd_len++] = initval[i];
            }
        }
        // 奇数部分排序
        for (int i = 1; i < odd_len; i++) {
            int temp = odd[i];
            int j = i - 1;
            while (j >= 0 && odd[j] > temp) {
                odd[j + 1] = odd[j];
                j--;
            }
            odd[j + 1] = temp;
        }
        // 偶数部分排序
        for (int i = 1; i < even_len; i++) {
            int temp = even[i];
            int j = i - 1;
            while (j >= 0 && even[j] > temp) {
                even[j + 1] = even[j];
                j--;
            }
            even[j + 1] = temp;
        }
        int index = 0;
        for (int i = 0; i < odd_len; i++) {//先输出排序后的奇数部分
            num[index++] = odd[i];
        }
        for (int i = even_len - 1; i >= 0; i--) {//再输出排序后的偶数部分
            num[index++] = even[i];
        }
        for (int i = 0; i < n; i++) {//输出排序后的数组
            printf("%d ", num[i]);
        }
        return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^