苏嵌学习第7天

高瑞  2018.7.15

1. 题目: 请编写一个C函数,该函数将一个字符串逆序 

#include<stdio.h>
#include<string.h>
#define N 50

 

void strRev(char *s)
{
  char temp;
  char *end = s + strlen(s) - 1;
  while (end > s)
  {
    temp = *s;
    *s = *end;
    *end = temp;
    --end;
    ++s;
  }
}

int main()
{
  char s[N];
  printf("Input string!\n");
  fgets(s,N,stdin);

strRev(s);

printf("The strRcv string!");

puts(s);

while(1);

return 0;

}

 

2. 题目: 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

#include <stdio.h>

void change(int num,int n);


int main()

{
  int num,n;

  printf("Please enter a number to change:");

   scanf("%d",&num);

  printf("请输入要转换的进制(如2或8,16等):");

   scanf("%d",&n);

 

   change(num,n);


        printf("\n");
   return 0;

}

 

void change(int num,int n)            //利用递归函数的实现反序输出

{

        int r;

 

        r = num % n;

        if(num > 0)

                change( num / n,n );

        putchar( '0' + r);
                while(1);

return 0;
 

    }

 

3. 题目: 输入一个字符串,计算字符串中子串出现的次字数

#include <stdio.h>


float  paixu(float b[5]);//声明paixu函数
int main()
{
float a[5];//存放5个数包括小数
int i;


printf("请输入5个数:\n");


for(i = 0;i < 5;i++)//输入5个数
scanf("%f",&a[i]);
paixu(a);

printf("排序后结果是:\n");
for(i = 0;i < 5;i++)
printf("%2.1f\t",a[i]);//以2位,小数部分一位的格式输出,制表
printf("\n");


    return 0;
}


float  paixu(float b[])//从小到大排序,实参传入形参b[]
{
int i, j;
float t = 0.0;//t用来交换数


for(i = 0;i < 5;i++)
{
for(j = i + 1; j < 5;j++)//将每一个数与后面的数字依次比较
{
if(b[j] < b[i])//将较小的数存放在数组
{
t = b[i];
b[i] = b[j];
b[j] = t;
}
}
}


}

4. 题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main()
{


    int i = 0;
    int j = 0;
    int len  = 0;
    char *temp;
    char *str[] = { "I", "am","from","shanghai" ,NULL};
    while (str[i] != NULL)
    {
        i++;
        len++;
    }
    for(i = 0, j = len - 1; j  > i; i++,j--)
    {
        temp =*(str+i);
        *(str+i) = *(str+j);
        *(str+j) = temp;
    }
    for(i = 0; i < len; i++)
    {
        printf("%s ", *(str+i));
    }
    printf("\n");

   while(1);
    return 0;
}

5. 题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.

提示:帧头和帧尾分别是head和tail  字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧

#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;
}

猜你喜欢

转载自blog.csdn.net/Martial1/article/details/81057589
今日推荐