记录了两个代码和一个C语言switch的题。代码【错误的集合】使用到了hash,【密码检查】是对多个字符串输入的检查,有一些条件细节。两个代码都是关于数组内容操作的题目。
每日代码
1.错误的集合
错误的集合-力扣(LeetCode
也是数组的操作,注意此题要对参数 *returnSize 进行传值。
int* findErrorNums(int* nums, int numsSize, int* returnSize) {
int* returnnums = (int*)malloc(sizeof(int)*2);
*returnSize = 2;
int rep = 0;
int sum = 0;
int* hash = (int*) malloc(sizeof(int)*(numsSize + 1));
for(int i = 0; i <= numsSize; i++){
hash[i] = 0;
}
for(int i = 0; i < numsSize; i++){
++hash[nums[i]];
if(hash[nums[i]] == 2) rep = nums[i];
sum += nums[i];
}
returnnums[0] = rep;
int num = (1 + numsSize)*numsSize / 2 - sum;
returnnums[1] = rep + num;
return returnnums;
}
2.密码检查
密码检查_牛客题霸_牛客网
检查一下输入的数组是否符合以下要求,有n个输入。
#include <stdio.h>
#include <string.h>
int main() {
int n = 0;
scanf("%d",&n);
for(int x = 0; x < n; ++x){
char password[100] = {0};
scanf("%s",password);
int length = strlen(password);
//记录各种类型出现的次数
int count_num = 0;
int count_up = 0;
int count_down = 0;
for(int i = 0; i < length; ++i ){
if(length < 8){
printf("NO\n");
break;
}
else if(password[0] >= '0' && password[0] <= '9')
{
printf("NO\n");
break;
}
if(password[i] >= '0' && password[i] <= '9'){
count_num++;
}
else if(password[i] >= 'a' && password[i] <= 'z'){
count_down++;
}
else if(password[i] >= 'A' && password[i] <= 'Z'){
count_up++;
}
else{
printf("NO\n");
break;
}
}
if(count_num + count_down + count_up == length){
if((count_num > 0 ) + (count_down > 0) + (count_up > 0) >= 2){
printf("YES\n");
}
else {
printf("NO\n");
}
}
}
return 0;
}
if((count_num > 0 ) + (count_down > 0) + (count_up > 0) >= 2)
这里实现的是密码要至少两种字符类型,这是我之前没想到的(只会超长的条件判断)。
C语言破碎知识
今日掉坑
若运行以下程序时,从键盘输入 ADescriptor<回车> ,则下面程序的运行结果是( )
#include <stdio.h> int main() { char c; int v0=0,v1=0,v2=0; do { switch(c=getchar()) { case'a':case'A': case'e':case'E': case'i':case'I': case'o':case'O': case'u':case'U':v1 += 1; default:v0+= 1;v2+=1; } }while(c!='\n'); printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2); return 0; }
A: v0=7,v1=4,v2=7 B: v0=8,v1=4,V2=8 C: v0=11,v1=4,v2=11 D: v0=12,v1=4,v2=12
答案:D
因为switch语句中没有break;所以即使是AEIOU也会使v0,v2的值增加。
-The End-