1.字符串逆序
#include<stdio.h>
#include<string.h>
int main()
{
char str[20],tem;
int len,i,j;
printf("input string:");
scanf("%s", &str);
len = strlen(str);
for (i = len-1, j = 0; j < i; i--, j++)
{
tem = str[i];
str[i] = str[j];
str[j] = tem;
}
printf("%s", str);
while (1);
return 0;
}
2.整数转换任意进制字符串输出
#include <stdio.h>
int change2(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 2;
x = x / 2;
}
printf("二进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int change8(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 8;
x = x / 8;
}
printf("八进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int change16(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 16;
x = x / 16;
}
printf("十六进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int main()
{
int num, radix;
printf("输入一个整数:\n");
scanf("%d", &num);
printf("请输入需要转变的进制(2或8或10或16) :\n");
scanf("%d", &radix);
switch (radix)
{
case 2:
change2(num);
break;
case 8:
change8(num);
break;
case 10:
printf("十进制数为:%d", num);
break;
case 16:
change16(num);
break;
default:
printf("error!\n");
}
int change2(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 2;
x = x / 2;
}
printf("二进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int change8(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 8;
x = x / 8;
}
printf("八进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int change16(int x)
{
int s[32] = { 0 };
int i, n = 0;
while (x != 0)
{
s[n++] = x % 16;
x = x / 16;
}
printf("十六进制数为:");
for (i = n - 1; i >= 0; i--)
{
printf("%d", s[i]);
}
printf("\n");
return 0;
}
int main()
{
int num, radix;
printf("输入一个整数:\n");
scanf("%d", &num);
printf("请输入需要转变的进制(2或8或10或16) :\n");
scanf("%d", &radix);
switch (radix)
{
case 2:
change2(num);
break;
case 8:
change8(num);
break;
case 10:
printf("十进制数为:%d", num);
break;
case 16:
change16(num);
break;
default:
printf("error!\n");
}
while (1);
return 0;
}
return 0;
}
3.子串出现次数
#include <stdio.h>#include <string.h>
int main()
{
char str1[20], str2[20], *p1, *p2;
int count = 0;
printf("请输入一个字符串:\n");
scanf("%s", str1);
printf("请输入一个子串:\n");
scanf("%s", str2);
p1 = str1;
p2 = str2;
while (*p1 != '\0')
{
if (*p1 == *p2)
{
while (*p1 == *p2 && *p2 != '\0')
{
p1++;
p2++;
}
}
else
p1++;
if (*p2 == '\0')
count++;
p2 = str2;
}
printf("字串出现次数为:%d", count);
while (1);
return 0;
}
4.字符串中单词位置倒置,不改变结构
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void chang(int m, char *a[])
{
int i;
char *tmp;
for (i = 0; i<m / 2; i++)
#include<string.h>
#include<stdlib.h>
void chang(int m, char *a[])
{
int i;
char *tmp;
for (i = 0; i<m / 2; i++)
{
tmp = a[m - 1 - i];
a[m - 1 - i] = a[i];
a[i] = tmp;
}
}
int main()
{
int i, SIZE;
char *string[100] = { 0 };
scanf("%d", &SIZE);
for (i = 0; i<SIZE; i++)
{
string[i] = (char*)malloc(sizeof(char) * 32);
if (NULL == string[i])
{
printf("failure\n");
return -1;
}
scanf("%s", string[i]);
}
chang(SIZE, string);
for (i = 0; i<SIZE; i++)
{
printf("%s ", string[i]);
}
while (1);
return 0;
}
5.鉴别帧头和帧尾
#include <stdio.h>
#include <string.h>
#define SIZE 1024
int my_strncmp(char *s1, char *s2, int len);
char * find_aim_str(char *head, char *tail, char *src);
int main()
{
char src[SIZE];
char head[SIZE];
char tail[SIZE];
#include <string.h>
#define SIZE 1024
int my_strncmp(char *s1, char *s2, int len);
char * find_aim_str(char *head, char *tail, char *src);
int main()
{
char src[SIZE];
char head[SIZE];
char tail[SIZE];
printf("请输入一个字符串:\n");
scanf("%s", src);
scanf("%s", src);
printf("请输入帧头:\n");
scanf("%s", head);
scanf("%s", head);
printf("请输入帧尾:\n");
scanf("%s", tail);
scanf("%s", tail);
char *result = find_aim_str(head, tail, src);
printf("结果为: %s\n", result);
while (1);
return 0;
}
int my_strncmp(char *s1, char *s2, int len)
{
int i;
return 0;
}
int my_strncmp(char *s1, char *s2, int len)
{
int i;
for (i = 0; i < len; i++)
{
if (*(s1 + i) != *(s2 + i))
{
return -1;
}
}
{
if (*(s1 + i) != *(s2 + i))
{
return -1;
}
}
return 0;
}
char * find_aim_str(char *head, char *tail, char *src)
{
char *temp;
}
char * find_aim_str(char *head, char *tail, char *src)
{
char *temp;
int h_len = strlen(head);
int t_len = strlen(tail);
int t_len = strlen(tail);
while (*src != '\0')
{
if (my_strncmp(src, head, h_len) == 0)
{
temp = src;
src = src + h_len;
{
if (my_strncmp(src, head, h_len) == 0)
{
temp = src;
src = src + h_len;
while (*src != '\0')
{
if (my_strncmp(src, tail, t_len) == 0)
{
*(src + t_len) = '\0';
return temp;
}
{
if (my_strncmp(src, tail, t_len) == 0)
{
*(src + t_len) = '\0';
return temp;
}
src++;
}
}
return NULL;
}
}
src++;
}
return NULL;
}
}
return NULL;
}