-
Training4:字符串训练
- 题目: 请编写一个C函数,该函数将一个字符串逆序
- 代码:
#include <stdio.h> int main() { int count=0; char str[20]; printf("请输入一串字符,以空格结束:\n"); scanf("%s", str); printf("您输入的是:%s",str); printf("\n"); for(int i = 0; i <20;i++) { if(str[i] != '\0') {count++; } else break; }printf("倒过来是:"); for(int i= count-1;i>=0; i--) { printf("%c",str[i]); } printf("\n"); return 0; }
结果:
- 代码:
- 题目: 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
- 代码:
#include <stdio.h> void dtob(int n) { int a[2000]; int i,j; for(i=0;n!=0;i++) { a[i]=n%2; n=n/2; } for(j=i-1;j>=0;j--) { printf("%d", a[j]); } } int main() { void dtob(int n); int n; printf("请输入一个整数\n"); scanf("%d", &n); printf("十进制:%d", n); printf("\n"); printf("二进制:"); dtob(n); printf("\n"); printf("八进制:%o", n); printf("\n"); printf("十六进制:%x", n); printf("\n"); return 0; }
结果:
- 代码:
- 题目: 输入一个字符串,计算字符串中子串出现的次数
- 代码:
#include <string.h> #include <stdio.h> int main() { char a[100],b[100]; printf("请输入一个字符串:\n"); scanf("%s",a); getchar(); printf("输入子串:\n"); scanf("%s",b); getchar();//输入字符串和子串 char *c = a; char *d = b; int num=0; int n=strlen(d); while(strlen(c)>0) { if(strncmp(c,d,n)==0) { num++; c=c+n; } else{ c++; } } printf("%d\n",num); return 0; }
结果:
- 代码:
- 题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.
-
#include <stdio.h> char *convert(char *p, int len) { int i; char c; for (i = 0; i < len / 2; i++) { c = p[i]; p[i] = p[len - i - 1]; p[len - i - 1] = c; } return p; } int main() { char str[100]="I am from shanghai"; int i = 0; int len = 0; //printf("Enter a string:\n"); //scanf("%[^\n]", str); while (str[i] != '\0') { while (' ' == str[i]) { if (len != 0) { convert(&str[i - len], len); len = 0; } i++; } if (str[i] != '\0') { len++; i++; } if ('\0' == str[i]) { if (len != 0) { convert(&str[i - len], len); } convert(str, i); } } printf("convert string is:%s\n", str); return 0; }
-
- 题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
-
提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧
-
#include <stdio.h> int main() { char a[30]; int i = 0; int first = 0; int local1 = 0, local2 = 0; printf("please input a string:"); scanf("%s", a); while (a[i] != '\0') { if (a[i] == 'h' && first == 0) { if (a[i + 1] == 'e' && a[i + 2] == 'a' && a[i + 3] == 'd') { local1 = i; i = i + 3; first++; } } if (a[i] == 't') { if (a[i + 1] == 'a' && a[i + 2] == 'i' && a[i + 3] == 'l') { local2 = i; } } i++; } if ((local2 - local1) > 4) { for (i = local1; i <= local2 + 3; i++) { printf("%c", a[i]); } printf("找到了!\n"); } else printf("not found!"); return 0; }