班级 通卓161 姓名 艾志奇 日期2018.7.15
1.字符串倒置
#include<stdio.h>
#include<string.h>#include<stdlib.h>
#define SIZE 1000
int i;
void input(char *s)
{
printf("请输入一个字符串\n");
scanf("%s",s);
i=strlen(s);
i--;
}
void invert(char *s1)
{
char *s2=(char *)malloc(sizeof(char)*64);
for(;i>=0;i--)
{
printf("%c",s1[i]);
}
}
main()
{
char *str=(char *)malloc(sizeof(char)*64);
input(str);
invert(str);
}
2.十进制#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void change(int a,char *s,int n)
{
int i,j=0;
for(i=0;i<32;i++)
{
s[i]=a%n;
a=a/n;
if(a==0)
{
break;
}
}
for(;i>=0;i--,j=0)
{
if(s[i]>=10)
{
switch(s[i])
{
case 10:s[i]='A';printf("%c",s[i]);j++;break;
case 11:s[i]='B';printf("%c",s[i]);j++;break;
case 12:s[i]='C';printf("%c",s[i]);j++;break;
case 13:s[i]='D';printf("%c",s[i]);j++;break;
case 14:s[i]='E';printf("%c",s[i]);j++;break;
case 15:s[i]='F';printf("%c",s[i]);j++;break;
default :printf("大于16进制只用数字表示\n");break;
}
}
if((i=i-j)>=0)
{
printf("%d",s[i]);
}
}
}
main()
{
int a,n;
char *s=(char*)malloc(sizeof(char)*64);
printf("输入一个整数\n");
scanf("%d",&a);
printf("输入转换成几进制数\n");
scanf("%d",&n);
change(a,s,n);
printf("\n");
}
2.c十进制转换任意进制
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void change(int a,char *s,int n)
{
int i,j=0;
for(i=0;i<32;i++)
{
s[i]=a%n;
a=a/n;
if(a==0)
{
break;
}
}
for(;i>=0;i--,j=0)
{
if(s[i]>=10)
{
switch(s[i])
{
case 10:s[i]='A';printf("%c",s[i]);j++;break;
case 11:s[i]='B';printf("%c",s[i]);j++;break;
case 12:s[i]='C';printf("%c",s[i]);j++;break;
case 13:s[i]='D';printf("%c",s[i]);j++;break;
case 14:s[i]='E';printf("%c",s[i]);j++;break;
case 15:s[i]='F';printf("%c",s[i]);j++;break;
default :printf("大于16进制只用数字表示\n");break;
}
}
if((i=i-j)>=0)
{
printf("%d",s[i]);
}
}
}
main()
{
int a,n;
char *s=(char*)malloc(sizeof(char)*64);
printf("输入一个整数\n");
scanf("%d",&a);
printf("输入转换成几进制数\n");
scanf("%d",&n);
change(a,s,n);
printf("\n");
}
3.字符串中子字符串的计算
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int lenth1,lenth2,num;
void input(char *s1,char *s2)
{
printf("输入字符串;\n");
scanf("%s",s1);
printf("输入子字符串\n");
scanf("%s",s2);
lenth1=strlen(s1);
lenth2=strlen(s2);
}
void count(char *s1,char *s2)
{
int i,j;
if(lenth1<lenth2)
{}
else
{
for(i=0,j=0;i<lenth1;i++)
{
if(s1[i]==s2[j])
{
j++;
if(j==lenth2)
{
j=0;
num++;
}
}
}
}
printf("%s has %d %s\n",s1,num,s2);
}
main()
{
char *s1=(char*)malloc(sizeof(char)*64);
char *s2=(char*)malloc(sizeof(char)*32);
input(s1,s2);
count(s1,s2);
}
4.句子倒置但不改变单词内部结构
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void input(char *x[100],int i)
{
int j;
printf("请输入句子单词\n");
for(j=0;j<i;j++)
{
x[j]=(char*)malloc(sizeof(char)*64);
scanf("%s",x[j]);
}
}
void output(char *x[100],int len)
{
int i,j=len;
char *began=(char*)malloc(sizeof(char)*64);
for(i=0;len>j/2;len--,i++)
{
began=x[i];
x[i]=x[len];
x[len]=began;
}
for(i=0;i<j+1;i++)
{
printf("%s ",x[i]);
}
}
main()
{
int i;
char *p[100];
printf("请输入句子单词个数\n");
scanf("%d",&i);
input(p,i);
output(p,i-1);
}
5.字符串合法帧的输出
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int len,start,end;
void input(char *s)
{
printf("输入字符串\n");
scanf("%s",s);
len=strlen(s);
}
void just(char *s0,char *h,char *t)
{
int i,j;
for(i=0,j=0;i<len;i++)
{
if(s0[i]==h[j])
{
j++;
}
else
{
j=0;
}
if(4==j)
{
start=i-3;
break;
}
}
for(i=0,j=0;i<len;i++)
{
if(s0[i]==t[j])
{
j++;
}
else
{
j=0;
}
if(4==j)
{
end=i;
break;
}
}
}
void print(char *s)
{
int i;
if(start!=0&&end!=0)
{
for(i=0;&s[start+i]!=&s[end+1];i++)
{
printf("%c",s[start+i]);
}
}
}
main()
{
char *h,*t,*s=(char*)malloc(sizeof(char)*64);
h="head",t="tail";
input(s);
just(s,h,t);
print(s);
}