今日任务 | 字符串训练 |
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: |
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> 3 #include<stdlib.h> 45 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; } |
苏嵌暑期实训----day7
最新推荐文章于 2018-08-01 11:34:15 发布