字符串左旋
#include<stdio.h>
#include<string.h>
//字符串左旋
void My_get(char *arr,int sz)
{
//创建临时变量
char tmp = 0;
//输入左旋字符
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
//将首元素放到临时变量里
tmp = arr[0];
for (j = 0; j < sz - 1; j++)//sz-1是因为已经将首元素放到临时变量里,因此总元素少一个
{
//将左旋外的元素移到前面位置
arr[j] = arr[j + 1];
}
//最后将临时变量的值放到最后位置
arr[sz - 1] = tmp;
}
}
int main()
{
char arr[] = "abcd";
//计算元素个数
int sz = strlen(arr);
My_get(arr, sz);
printf("%s\n", arr);
return 0;
}
杨氏矩阵
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//杨氏矩阵
//杨氏矩阵本质是一个二维数组,
//每一行从左到右依次递增
//每一列从上到下依次递增
//要求一个杨氏矩阵中的数
//最简单的办法就是遍历一遍,但考虑到时间复杂度问题
//因此我们可以采取比较法,一行中最右的数为该行最大的数
//与查找数进行比较,如果最大数小于查找数,那我们可以排除掉一整行的数字
//如果最大数大于查找数,再对该行每个数进行比较,直到查找数等于最大数
void code_a(int a[3][3], int row, int col, int n)
{
//x,y作为访问数组的下标
int x = 0;
int y = col - 1;//col-1的目的是为了查找一行中最大的数
while (x < row && y>0)
{
//比较是否小于查找数
if (a[x][y] < n)
{
x++;//小于的话代表不在该行,++到下一行
}
//比较是否大于查找数
if (a[x][y] > n)
{
y--;//大于的话则--,依次遍历该行
}
if (a[x][y] == n)//等于时找到该数
{
printf("找到了,下标是:%d %d\n", x, y);
break;
}
else
{
printf("找不到\n");
}
}
}
int main()
{
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int n = 0;//查找数n
scanf("%d", &n);
code_a(a, 3, 3, n);
return 0;
}
//设计一个小程序来判断当前机器的字节序
int check_sys()
{
int i = 1;
//将i的地址强制类型为char型
//由四字节变为一字节
//再根据大小端的特性
//大端地址按顺序存储
//小端逆序存储
//因此访问地址中的第一个字节就能判断
//为大端还是小端了
return (*(char*)&i);
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}