TEST5
1.折半查找整形有序数组,找出想要数字,返回下标.
每次都从中间开始查找.
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[10] = { 1,3,5,7,9,11,13,15,17,19 };
int to_find = 3;
int left = 0, right = sizeof(arr)/sizeof(arr[0])-1;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (to_find < arr[mid]) {
right = mid - 1;
}
else if (to_find > arr[mid]) {
left = mid + 1;
}
else
break;
}
if (left <= right) {
printf("下标是%d\n", mid);
}
else {
return -1;
}
system("pause");
return 0;
}
2.模拟三次密码输入的场景.
比较输入的字符串与所给定字符串是否相等,循环三次.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int i;
for (i = 0; i < 3; i++) {
printf("请输入密码: \n");
char password[20] = " ";
scanf("%s", password);
if (strcmp(password, "nflying") == 0) {
printf("登陆成功!\n");
break;
}
else {
printf("密码错误,请重新输入!\n");
}
}
if (i == 3) {
printf("失败超过三次,禁止登陆!");
}
system("pause");
return 0;
}
3.如果是小写字符输出大写字符,如果是大写字符输出小写字符,数字不输出.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int isBigLetter(char ch) {
return ch <= 'Z'&&ch >= 'A';
}
int isSmallLetter(char ch) {
return ch <= 'z'&&ch >= 'a';
}
int main() {
char ch;
while (1) {
ch = getchar();
if (ch == '@') {
break;
}
if (isSmallLetter(ch)) {
putchar(ch - 32);
}
else if (isBigLetter(ch)) {
putchar(ch + 32);
}
else if (isalnum(ch)) {
//do nothing
}
else {
putchar(ch);
}
}
system("pause");
return 0;
}