例题1//二分查找
//在一个有序数组中查找具体的某个数
//如果找到了返回,这个数的下标,找不到的返回-
int binary_search(int arr[], int k,int sz)
{
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, k,sz);
if (ret == -1)
{
printf("找不到指定的数字\n");
}
else
{
printf("找到了,下标是:%d\n", ret);
}
}
例题2
int is_leap_year(int y)
{
if ((y % 4 == 0 && y%100 != 0) || (y % 400 == 0))
return 1;
else
return 0;
}
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++)
{
//判断year是否为闰年
if (1 == is_leap_year(year))
{
printf("%d ", year);
}
}
return 0;
}
例题3
//memset 内存设置
//void*memset(void*ptr,int value,size_t,num)涉及指针的地址,整型的值,设置的字节个数及大小
#include<string.h>
int main()
{
char arr[] = "hello world";
memset(arr, '*', 5);
printf("%s\n", arr);
return 0;
}
例题4
运用strcpy函数运行程序
#include<string.h>
int main()
{
char arr1[] = "bit";
char arr2[20] = "###########";
strcpy_s(arr2, arr1);
printf("%s\n",arr2);
return 0;
}
例题5
//关机流程
#include<string.h>
#include<stdlib.h>
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n请输入>:");
scanf_s("%s", input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
例题6
计算1/1-1/2+1/3-1/4+……+1/99-1/100的值,打印出结果
int main()
{
int i = 0;
double sum = 0.0;
int flag = 1;
for (i = 1; i <= 100; i++)
{
sum += flag*1.0/ i;
flag = -flag;
}
printf("%lf\n", sum);
return 0;
}
例题7
判断i是否为素数(试除法)
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (i%j==0)
{
break;
}
}
if (j == i)
{
count++;
printf("%d", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
例题8
给定两个数,求这两个数的最大公约数采用辗转相除法
int main()
{
int m = 24;
int n = 18;
int r = 0;
scanf_s("%d%d", &m, &n);
while (m % n)
{
r = m % n;
m = n;
n = r;
}
printf("%d\n", n);
return 0;
}
例题9
二分查找法是学习c语言个人认为最经典的题型,涉及的内容范围较广,能够较为系统的了解前几章关于c语言函数的运用等,特别还涉及到指针
二分查找法(
在一个有序数组中查找具体的某个数字n,编写 int binsearch(int x,int v[],int n);功能;在v[0]<=v[1]<=v[2]<=……<=v[n-1]的数组中查找x
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
while (left<=right)
{
int mid = (left + right) / 2;
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到\n");
}
return 0;
}