星期日作业

班级 通卓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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值