周六作业

本文介绍使用C语言进行字符串处理及不同进制之间的转换方法。包括字符串反转、子串查找、合法帧检查等实用功能,并实现了从十进制到二进制、八进制和十六进制的转换。
1
#include<stdio.h>
#include<string.h>
void main()
{
 char s[20];
 gets(s);
 int i;
 for(i=strlen(s)-1;i>=0;i--)
 {
  printf("%c",s[i]);
 }

 while(1);
}

2

#include <stdio.h>
int fun2(int num);
int fun16(int num);
int fun8(int num);
int main()
{
    int num,kind;  
 printf("输入数字 : \n");       
 scanf("%d",&num);
 printf("转换成几进制(2 ,16 ,8) :\n");
 scanf("%d",&kind);
 if(kind == 2)      
 {
  fun2(num);
 }
 else if(kind == 16)
 {
  fun16(num);
 }
 else if(kind == 8)
 {
  fun8(num);
 }
 else       
 {
  printf("error!\n");
 }
    while(1);
    return 0;
}

int fun2(int num)      
{
 int s[32] = {0};
 int i,n = 0;
 while(num != 0)
 {
  s[n++] = num % 2;
  num = num / 2;
 }
 printf("二进制数为 :");
 for(i = n - 1;i >= 0;i--)
 {
  printf("%d",s[i]);
 }
 printf("\n");
 return 0;
}
int fun16(int num)        
{
 int s[32] = {0};
 int i,n = 0;
 while(num != 0)
 {
  s[n++] = num % 16;
  num = num / 16;
 }
 printf("十六进制数为 :");
 for(i = n - 1;i >= 0;i--)
 {
  printf("%d",s[i]);
 }
 printf("\n");
 return 0;
}
int fun8(int num)       
{
 int s[32] = {0};
 int i,n = 0;
 while(num != 0)
 {
  s[n++] = num % 8;
  num = num / 8;
 }
 printf("八进制数为 :");
 for(i = n - 1;i >= 0;i--)
 {
  printf("%d",s[i]);
 }
 printf("\n");
 return 0;
}

3

#include <stdio.h>
#include<string.h>
int main()
{
 char a[20],b[20],*p1,*p2;
 int i=0;
 printf("请输入一个字符串:");
 gets(a);
 printf("请输入一个子字符串:");
    gets(b);
 p1=a;
 p2=b;
 while(*p1 != '\0')
    {
        if(*p1 == *p2)
        {
            while(*p1 == *p2 && *p2 != '\0')
            {
                p1++;
                p2++;
            }
        }
        else
            p1++;
        if(*p2 == '\0')
  {
            i++;
            p2=b;
  }
    }
 printf("子字符串出现了%d次",i);
 while(1);
}

4

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
 char *p;
 int i,len;
 p= (char*)malloc(20 * sizeof(char));
 gets(p);
 len=strlen(p);
 for(i=0;i<len;i++)
 {
  if(*p==' ')
  {
   *p='\0';
   p++;
  }
  else p++;
 }
 p--;
 for(i=0;i<len;i++)
 {
  if(*p=='\0')
  {
   printf("%5s",p+1);
      p--;
  }
  else p--;
 }
 printf("%5s",p+1);
 while(1);
}


5

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
 char *p1,*p2,*p3,*p4;
 int i,len;
 p1= (char*)malloc(20 * sizeof(char));
 p2= (char*)malloc(20 * sizeof(char));
 p3= (char*)malloc(20 * sizeof(char));
 p4= (char*)malloc(20 * sizeof(char));
 printf("请输入字符串:");
 gets(p1);
 p4=p1;
 printf("请输入帧头:");
 gets(p2);
 printf("请输入帧尾:");
 gets(p3);

 len=strlen(p1);
 for(i=0;i<len;i++)
 {
  p4++;
 }
 p4=p4-strlen(p3);
 for(i=0;i<len;i++)
 {
  while(*p1==*p2 && *p2 != '\0')
  {
   p1++;
   p2++;
  }
  
 
  while(*p3==*p4 && *p3 != '\0')
     {
      p3++;
      p4++;
     }
 
    
 }
 if(*p2=='\0'&&*p3=='\0')
  {
   printf("字符串是合法帧");
  }
  else printf("字符串不是合法帧%s%s",p2,p3);
  
 while(1);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值