苏嵌暑期实训----day7

今日任务 字符串训练
Q1:编写一个C函数,该函数将一个字符串逆序   1 #include<stdio.h>                                                                            
  2 #include<string.h>
  3 
  4 int main()
  5 {
  6     char str[100] = {0};
  7 
  8     printf("请输入一个字符串:\n");
  9     scanf("%s",str);
 10 
 11     int i;
 12 
 13     for(i = (sizeof(str) / sizeof(str[0])); i >= 0; i--)
 14     {
 15         if(str[i] != 0)
 16         {
 17             printf("%c",str[i]);
 18         }
 19     }
 20     printf("\n");
 21 
 22 
 23     return 0;
 24 }
Q2:请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出   1 #include<stdio.h>                                                                                                                                                                                       
  2 #include<string.h>
  3 
  4 
  5 void Fun(int num,int sys)
  6 {
  7     int str[64] = {0};
  8     int i,n = 0;
  9     int temp;
 10 
 11 
 12     if(sys != 16)
 13     {
 14         while(num != 0)
 15         {
 16             str[n++] = num % sys;
 17             num /= sys;
 18         }
 19 
 20         printf("转换成%d进制数为:  ",sys);
 21         for(i = n - 1; i >= 0; i--)
 22         {
 23             printf("%d",str[i]);
 24         }
 25 
 26             if(sys == 2)
 27             {
 28             printf("(B)\n");
 29             }
 30 
 31             else
 32             {
 33             printf("(O)\n");
 34             }
 35     }
 36     else
 37     {
 38         while(num != 0)
 39         {
 40             temp = num % sys;
 41 
 42 
 43             switch(temp)
 44             {
 45                 case 1:
 46                     str[n++] = '1';

 47                     break;

 48                 case 2:
 49                     str[n++] = '2';
 50                     break;
 51                 case 3:
 52                     str[n++] = '3';
 53                     break;
 54                 case 4:
 55                     str[n++] = '4';
 56                     break;
 57                 case 5:
 58                     str[n++] = '5';
 59                     break;
 60                 case 6:
 61                     str[n++] = '6';
 62                     break;
 63                 case 7:
 64                     str[n++] = '7';
 65                     break;
 66                 case 8:
 67                     str[n++] = '8';
 68                     break;
 69                 case 9:
 70                     str[n++] = '9';
 71                 case 10:
 72                     str[n++] = 'A';
 73                     break;
 74                 case 11:
 75                     str[n++] = 'B';
 76                     break;
 77                 case 12:
 78                     str[n++] = 'C';
 79                     break;
 80                 case 13:
 81                     str[n++] = 'D';
 82                     break;
 83                 case 14:
 84                     str[n++] = 'E';
 85                     break;
 86                 case 15:
 87                     str[n++] = 'F';
 88                     break;
 89             }
 90             
 91                                                                                                                                           92             num /= 16;
 93         }
 94 
 95     printf("转换成16进制数为:  ");
 96     for(i = n - 1; i >= 0;  i--)
 97     {
 98          printf("%c",(char)str[i]);
 99     }
100 
101     printf("(H)\n");
102 
103     }
104 
105 }
106 
107 
108 
109 int main()
110 {
111     int num,sys;
112 
113     printf("请输入一个十进制整型数:\n");
114     scanf("%d",&num);
115 
116     printf("请输入需要转换成的进制(2或8或16):\n");
117     scanf("%d",&sys);
118 
119     Fun(num,sys);
120 
121     return 0;
122 
123 }                                                                                

Q3:输入一个字符串,计算字符串中子串出现的次数
 1 #include<stdio.h>                                                                            
  2 #include<string.h>
  3 
  4 int main()
  5 {
  6     char arr1[100];
  7     printf("请输入字符串:\n");
  8     scanf("%s",arr1);
  9     char *str1 = arr1;
 10 
 11     char arr2[100];
 12     printf("请输入一个子字符串:\n");
 13     scanf("%s",arr2);
 14     char *str2 = arr2;
 15 
 16     int n,num = 0;
 17 
 18     n = strlen(str2);
 19 
 20 //  printf("%d",n);
 21 
 22     while(strlen(str1) > 0)
 23     {
 24         if(strncmp(str1,str2,n) == 0)
 25         {
 26             num++;
 27             str1 += n;
 28         }
 29         else
 30         {
 31             str1++;
 32         }
 33     }
 34 
 35     printf("子字符串出现的次数为:%d\n",num);
 36 
 37     return 0;
 38 
 39 }
Q4:编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.

 1 #include<stdio.h>                                                                            
  2 #include<string.h>

  3 #include<stdlib.h>

  4 
  5 
  6 int main()
  7 {
  8     char *str = (char *) malloc(sizeof(char) * 64);
  9     char ch;
 10     char *p = str;
 11     int i = 0;
 12 
 13 
 14     printf("请输入一个英语句子:\n");
 15     while((ch = getchar()) != '\n')
 16     {
 17         str[i] = ch;
 18         i++;
 19     }
 20 
 21 //  printf("%s\n",str);
 22 
 23     while(*p != '\0')
 24     {
 25         if(*p == ' ')
 26         {
 27             *p = '\0';
 28         }
 29 
 30         p++;
 31     }
 32 
 33 //  printf("%s\n",str);
 34 
 35     while(p != str)
 36     {
 37         p--;
 38 
 39         if(*p == '\0');
 40         {
 41             printf("%s",p + 1);
 42             printf(" ");
 43         }
 44     }
 45 
 46     printf("%s\n",str);
 47 
 48     return 0;
 49 }      
Q5:

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

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


#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
  char str1[100];
char str2[100];
printf("Please enter your string:\n");
gets(s);
printf("Please enter the frame head:\n");
gets(str1);
printf("Please input pin the tail:\n");
gets(str2);

char *p   = s;
char *p1  = str1;
char *p2  = str2;
char *p3  = NULL;
char *p4  = NULL;
printf("Legal frame in the string:\n");
while(*p)
{
if(strncmp(p,p1,strlen(str1))==0)
{
p3=p;
while(*p3)
{
if(strncmp(p3,p2,strlen(str2))==0)
{
int j=p3-p+strlen(str2),i;
p4 = p;
for(i=0;i<j;i++)
{
printf("%c",*p4++);
}
puts("\0");
}
*p3++;
}
}
*p++;
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/zjb231425/article/details/81052847
今日推荐