折半查找有序数组,用C语言实现。。
运用函数调用。
#include<stdio.h>
int find(int arr[],int key,int size) // arr 需要排序的数组 key 查找的值 size 数组长度
{
int left = 0;
int right = size;
int mid = 0;
while(left<=right) // 当left 大于right时说明未查找到
{
mid = left + (right - left)/2;
if(arr[mid]>key)
{
right = mid - 1;
}
else if(arr[mid]<key)
{
left = mid + 1;
}
else if(arr[mid] == key)
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9};
int size = sizeof(arr)/sizeof(arr[0])-1;
int key = 9;
int p = find(arr,key,size);
if(arr[p] == key)
{
printf("%d\n",p);
}
else
{
printf("未找到\n");
}
return 0;
}
getchar() 结束Ctrl+z
用getchar()在写出输入字母输出相应的大小写。
代码
#include<stdio.h>
int main()
{
char c;
while((c = getchar())!= EOF)//从键盘上一个一个获取字符。
{
if(c>='a'&&c<='z')
{
c = c - 32;//小写字母aASC码值97.A为65。
putchar(c);//打印键盘获取的字符。
}
else if(c>='A'&&c<='Z')
{
c = c + 32;
putchar(c);
}
}
return 0;
}