请帮我查查原因,0分,运行无输出
查看原帖
请帮我查查原因,0分,运行无输出
1427134
Wang_Yue_Ran楼主2024/9/3 12:42
#include <bits/stdc++.h>
using namespace std;
int i, j, k; /* 分割时,i表示遍历的字符串A的下标,j表示遍历的数组a的下标,k表示遍历的数组里下标为j的字符
                串下标 */
int main() {
	string A, a[100]; //A表示输入的字符串,a表示分割后的字符串数组 
	cin >> A;
	bool flag = true; //flag表示后面的while循环是否执行,如果不执行就变为false并停止循环执行 
	while(flag) { //以下循环为分割字符串进数组的操作 
		if(A[i] == ',') { /* 如果输入的字符串里有逗号,则下标+1,下一个字符存入a字符中下一个字符串的第
		                     一个字符 */ 
			i++;
			j++;
			k = 0;
		}else{
			a[j][k] = A[i];
			i++;
			k++;
		}if(i == A.length()) flag = false;
	}for(int x = 0; x < i; x++) {
		bool FLAG = true; //FLAG表示密码是否合规 
		if(a[x].length() < 6 || a[x].length() > 12) { //判断密码长度条件合不合规 
			FLAG = false;
		}else{
			int APB = 0, apb = 0, num = 0, spec = 0; /* APB为大写个数,apb为小写个数,num为数字个数,
			                                            spec为四种特殊字符个数 */ 
			for(int y = 0; y < a[x].length(); y++) {
				if(a[x][y] >= 48 && a[x][y] <= 57) {
					num++;
				}else if(a[x][y] > 64 && a[x][y] <= 90) {
					APB++;
				}else if(a[x][y] > 96 && a[x][y] <= 122) {
					apb++;
				}else if(a[x][y] == '!' || a[x][y] == '@' || a[x][y] == '#' || a[x][y] == '$') {
					spec++;
				}
			}if(APB + apb == 0 || APB + num == 0 || apb + num == 0) { /* 如果大写字母,小写字母,数字中
			    至少有两种不存在,密码不合规 */ 
				FLAG = false;
			}else if(spec == 0) { //四种特殊字符如果不存在,则密码不合规 
				FLAG = false;
			}else if(APB + apb + num + spec != a[x].length()) { /* 如果四个变量值累加不等于字符串总长
			    度,则必有不合规的字符 */ 
				FLAG = false;
			}if(FLAG == true) { //如果密码合规,则输出密码并换行 
				for(int y = 0; y < a[x].length(); y++) {
					cout << a[x][y];
				}cout << endl;
			}
		}
	}return 0;
}
2024/9/3 12:42
加载中...