1.写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 9 //方便更改数组长度
main(){
int arr[N],tep;
printf("请输入你的数组:\n");
for (int i = 0; i < N; i++){
printf("arr[%d]=",i);
scanf("%d", &arr[i]);
printf("\n");
}
printf("请输入你要查的数:");
scanf("%d", &tep);
int left = 0;
int right = N;
int i;
while (left <= right){ //left左边的下标,right右边的下标
i = (left + right) / 2; //i为中间的下标
if (arr[i] > tep){
right = i - 1;
}
else if (arr[i] < tep){
left = i + 1;
}
else
break;
}
if (left <= right){
printf("找到了,下标是%d\n", i);
}
else
return -1;
system("pause");
}
2.编写代码模拟三次密码输入的场景。
最多输入三次密码,密码正确,提示“登录成功”,密码错误,
可以重新输入,最多输入三次。三次均错,则提示退出程序。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
main(){
char str[] = "hello"; //首先定义初始密码
char str1[10]; //定义用户要输入的密码
int i = 0; //i的作用是记录用户输入错误三次后需要退出程序
while (1){
printf("请输入你的密码:");
gets(str1);
if (strcmp(str, str1)==0){ //strcmp 字符串比较函数
printf("登陆成功\n");
break;
}
else{
i++;
if (i == 3){
printf("你已经失忆了,再见\n");
break;
}
printf("密码错误,请重新输入\n");
}
}
system("pause");
return 0;
}
3.编写一个程序,可以一直接收键盘字符
如果是小写字符就输出对应的大写字符,
如果接收的是大写字符,就输出对应的小写字符,
如果是数字不输出。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main(){
char i;
while (1){
i=getchar();
if (i >= 65 && i <= 90){
printf("%c\n", i + 32);
}
else if (i >= 97 && i <= 122){
printf("%c\n", i - 32);
}
else{
printf("\n");
}
}
system("pause");
return 0;
}
由于忘了字符的输入,所以手动添加
一、输入数字可以用scanf输入。
如果输入的是整型数据,可以用
int a;
scanf("%d",&a);
实现把输入的数字赋值给a的效果。
类似的,如果是float, double,short,long等类型的数据,那么就要把变量定义成对应的类型,然后使用各自的格式字符%f,%lf,%hd,%ld等进行输入。
二、输入单个字符。
输入单个字符可以用以下两种函数。
定义char c;
1 scanf("%c", &c);
这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。
2 c = getchar();
getchar函数的功能就是读入一个字符,并以返回值形式返回。
三、输入一串字符(以空白字符分隔)。
可以用scanf的%s格式。
char str[100];//空间要定义足够大
scanf("%s", str);//将字符串读入并存在str中
四,读入一行数据。
可以用gets函数。gets的功能就是读入一整行数据,以换行符为结束。
char str[100];//同样要足够大的空间
gets(str);