数据内存存储

来源:互联网 发布:php集成环境包 编辑:程序博客网 时间:2024/06/07 22:02

1.使用宏实现两个数中求较大值。 

#include<stdio.h>

#include<stdlib.h>
#define max(x,y) ((x)>(y)?(x):(y))
int main()
{
int a = 0;
int b = 0;
printf("请输入a、b\n");
scanf_s("%d%d", &a, &b);
printf("%d和%d相比较%d大\n", a, b, max(a, b));
system("pause");

}

2.实现一个函数,可以左旋字符串中的k个字符。

ABCD左旋一个字符得到BCDA 

ABCD左旋两个字符得到CDAB 

#define _CRT_SECURE_NO_WARNINGS  //用于消除使用scanf的警告
#include<stdio.h>  
#include<Assert.h>  
void levo(char *pstr, int SZ, int key)
{
assert(pstr != NULL);
int i = 0;
int j = 0;
for (i = 0; i < key; i++)
{
char tmp = pstr[0];
for (j = 0; j < SZ - 1; j++)
{
pstr[j] = pstr[j + 1];
}
pstr[SZ - 1] = tmp;
}
}
int main()
{
char str[] = "ABCD";
int key = 0;
int SZ = sizeof(str) / sizeof(str[0]) - 1;
printf("请输入你要旋转字符的个数");
scanf("%d", &key);
levo(str, SZ, key);
printf("%s", str);
system("pause");
}
3.判断一个字符串是否为另外一个字符串旋转之后的字符串。 
例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. 
AABCD左旋一个字符得到ABCDA 
AABCD左旋两个字符得到BCDAA 
AABCD右旋一个字符得到DAABC 

#include<stdio.h>
#include<string.h>
#include<Assert.h> 
int torate(char* ptr1,char* ptr2)
{
assert(ptr1 != NULL);
assert(ptr1 != NULL);
int len1;
int len2;
int i, j;
len1 = strlen(ptr1);
len2 = strlen(ptr2);
if (len1 != len2)
{
return 0;
}
else
{
char* str = ptr1;
for (i = 0; i < len1; i++)
{
char temp = ptr1[0];
for (j = 0; j < len1 - 1; j++)
{
ptr1[j] = ptr1[j + 1];
}
ptr1[len1 - 1] = temp;
if (strcmp(ptr1 ,ptr2) == 0)
{
return 1;
}
}
for (i = 0; i < len1; i++)
{
char temp = str[len1-1];
for (j = len1-2; j >0; j++)
{
str[j] = str[j - 1];
}
str[0] = temp;
if (strcmp(str , ptr2) == 0)
{
return 1;
}
}

}
}
int main()
{
char arr1[] = "AABCD";
char str[] = "AABCD";
char arr2[] = "BCDA";
if (torate(arr1, arr2))
{
printf("%s旋转得到%s\n", str, arr2);
}
else
{
printf("%s不能通过旋转得到%s\n", str, arr2);
}
system("pause");
}

原创粉丝点击