注册 登录
编程论坛 C语言论坛

c语言,求大神解答

清风萨克斯 发布于 2020-11-02 16:53, 1969 次点击
编程实现:从键盘输入4位的验证码(大写字母,小写字母或数字),将其全部转换为大写或小写字母的方式进行输出。如输入Eg3A,转换为EG3A或eg3a输出
6 回复
#2
风过无痕19892020-11-02 19:54
回复 楼主 清风萨克斯
下面的程序存在的问题是:由于验证码是由数字与字母组合而成,混合存放于字符数组中,输入完成后,可能需要多按一两次回车键
程序代码:

// 从键盘输入4位的验证码(大写字母,小写字母或数字),将其全部转换为大写或小写字母的方式进行输出。如输入Eg3A,转换为EG3A或eg3a输出
#include<stdio.h>
void main()
{
    int i,y = 1;
    char yzm[18];
    while(y)
    {
        printf("请输入四位验证码(字母或数字):");
        scanf_s("%s",&yzm,16);

        for (i = 0;i < 4;i++)
        {
            if (yzm[i] < '0' && (yzm[i] > '9' && yzm[i] < 'A') && (yzm[i] > 'Z' && yzm[i] < 'a') && yzm[i] > 'z')
            {
                printf("输入了非法字符,请重新输入!");
                y = 1;
                break;
            }
            else
            {
                y = 0;                      // 跳出 while 循环
            }
        }

    }

    for (i = 0;i < 4;i++)                   // 转换为小写字母
    {
        if (yzm[i] >= 'A' && yzm[i] <= 'Z')
            yzm[i] += 32;
    }

/*    for (i = 0;i < 4;i++)                   // 转换为大写字母,此段程序与上一段程序任取一段
    {
        if (yzm[i] >= 'a' && yzm[i] <= 'z')
            yzm[i] -= 32;
    }
*/

    printf("%s",yzm);
    printf("\n");

}


[此贴子已经被作者于2020-11-2 20:27编辑过]

#3
清风萨克斯2020-11-02 20:08
回复 2楼 风过无痕1989

y = 1,yzm[18] 什么意思
#4
风过无痕19892020-11-02 20:22
回复 3楼 清风萨克斯
这两个类型错了,应该是整形的,我这就改

 i,是为for循环准备的,y = 1 是为了让 while 循环无休止的进行下去,直到所输入的字符要求,y 就等于 0 了,循环也就终止了
 数组资金积累了是18个单元,是为了防止四位全是数字时溢出,本来有16就够了,第17个存字符串终止符,再富余一个
#5
清风萨克斯2020-11-02 20:51
回复 4楼 风过无痕1989
用for循环 怎么写,while 不懂
#6
风过无痕19892020-11-02 22:18
以下是引用清风萨克斯在2020-11-2 20:51:48的发言:
用for循环 怎么写,while 不懂


让我说什么呢?我的百度网盘里有几本书,你先下载下来看看吧

C Primer Plus 第6版:https://pan.baidu.com/s/17TzjiGxOYJOVPgLqUK7vkA,提取码:2kof

谭浩强《C语言程序设计》第五版及学习指导:https://pan.baidu.com/s/1rWu0lnsBxWOCx6vN6n_MnA  提取码:yzv0
#7
清风萨克斯2020-11-02 22:29
回复 5楼 清风萨克斯
谢谢
1