请编写一个c语言函数,该函数将一个字符串逆序。
#include<stdio.h>
#define SIZE 5
int main()
{
char str[SIZE];
int i;
printf("请输入一个字符串:\n");
scanf("%s",str);
printf("逆序字符串:\n");
for(i=SIZE-1;i>=0;i--)
{
printf("%c",str[i]);
}
while(1);
return 0;
}
请编写一个C函数。该函数可以将一个整数转换成任意进制数输出。
#include<stdio.h>
void Totwo(int *n)
{
int str[10];
int i, j=0;
while((j%8!=0)||(*n)!=0)
{
str[j++]=((*n)%2);
(*n)/=2;
}
printf("转换为二进制数为:");
for(i=j-1;i>=0;i--)
{
printf("%d",str[i]);
}
printf("\n");
}
void Toeight(int *n)
{
int str[10];
int i, j=0;
while((*n)!=0)
{
str[j++]=((*n)%8);
(*n)/=8;
}
printf("转换为八进制数为:");
for(i=j-1;i>=0;i--)
{
printf("%d",str[0]);
}
printf("\n");
}
void Tosixteen(int *n)
{
int str[10];
int i, j=0;
while((*n)!=0)
{
str[j++]=((*n)%16);
(*n)/=16;
}
printf("转换为十六进制数为:");
for(i=j-1;i>=0;i--)
{
switch(str[i])
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:printf("%d",str[i]);break;
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
}
printf("\n");
}
int main()
{
int num, choice;
printf("请输入一个整数:\n");
scanf("%d",&num);
printf("*************************\n");
printf(" 1、转为二进制 \n");
printf(" 2、转为八进制 \n");
printf(" 3、转为十六进制 \n");
printf("*************************\n");
printf("请输入你的选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1:Totwo(&num);break;
case 2:Toeight(&num);break;
case 3:Tosixteen(&num);break;
default:printf("error!\n");
}
while(1);
return 0;
}
输入一个字符串,计算字符串中子串出现的次数。
#include<stdio.h>
#include<string.h>
int compare(char p[],char s[])
{
int i=0,j=0,count=0;
while(j!=strlen(p))
{
if(p[j]!=s[i])
{
j++;
i=0;
}
if(p[j]==s[i])
{
j++;
i++;
if(i==strlen(s))
{
count++;
i=0;
}
}
}
return count;
}
int main()
{
char ptr[100];
char subptr[10];
int sum;
printf("请输入一个字符串:\n");
scanf("%s",ptr);
printf("请输入子串:\n");
scanf("%s",subptr);
sum=compare(ptr,subptr);
printf("字符串中子串的个数为:%d\n",sum);
while(1);
return 0;
}
编写一个C函数,将“I am from shanghai”倒置为“shanghai from am I”,即将句子中的单词位置倒置,而不改变单词的内部结构。
#include<stdio.h>
int main()
{
int i=0;
char str[1000]={0};
char ch,*p=str;//p指向数组第一个元素
while((ch=getchar())!='\n')
{
str[i]=ch;//保存输入语句
i++;
}
while(*p!='\0')//将p指向最后一个字符,并将空格替换为\0
{
if(*p==' ')
{
*p='\0';//替换
}
p++;
}
while(p!=str)//p往前移,指向每个字符串首地址加一输出
{
p--;
if(*p=='\0')
{
printf("%s ",p+1);
}
}
printf("%s\n",p);
while(1);
return 0;
}
输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串的合法的帧识别出来。
#include <stdio.h>
int find(char *s,char *a,char *b);
int main()
{
char s[100],a[100],b[100];
printf("Enter the long string : \n");
scanf("%s",s);
printf("Enter the head string : \n");
scanf("%s",a);
printf("Enter the tail string : \n");
scanf("%s",b);
find(s,a,b);
return 0;
}
int find(char *s,char *a,char *b)
{
int head,tail;
int i = 0,j = 0,k = 0,flag = 0;
while(s[i] != '\0')
{
if((s[i] == a[j]) && !flag)
{
head = i;
while((s[i] == a[j]) && s[i] != '\0')
{
i++;
j++;
flag = 1;
}
}
if((a[j] == '\0') && flag)
{
while((s[i] == b[k]) && s[i] != '\0')
{
i++;
k++;
flag = 0;
}
}
if((b[k] == '\0') && !flag)
{
tail = i;
for(i = head;i < tail;i++)
{
printf("%c",s[i]);
}
printf("\n");
break;
}
i++;
}
return 0;
}