编程论坛
注册
登录
编程论坛
→
C语言论坛
c语言,求大神解答
清风萨克斯
发布于 2020-11-02 16:53, 1969 次点击
编程实现:从键盘输入4位的验证码(大写字母,小写字母或数字),将其全部转换为大写或小写字母的方式进行输出。如输入Eg3A,转换为EG3A或eg3a输出
6 回复
#2
风过无痕1989
2020-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
风过无痕1989
2020-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
风过无痕1989
2020-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