定义字符串s="abcde",采用递归方式,将字符串s相反顺序输出,即:“edcbd”。
void fun(char *p);
int main(void) {
char *p = "abcde";
fun(p);
}
void fun(char *p) {
if (*p != '\0') {
// p++;
fun(++p);
printf("%c", *(--p));
}
}
输入字符串,统计其中的单词,单词之间用空格分隔开
#include <stdio.h>
int main(void) {
//char
char string[] = " hello world ";
int num;
int tag = 0;
for (int i = 0; string[i] != '\0'; ++i) {
if (string[i] == ' ') {
tag = 1;
} else {
if (tag) {
num++;
}
tag = 0;
}
}
printf("%d", num);
return 0;
}
类似斐波拉契数列,有一个数列,前三项是0 0 1,没个数都等于他前三个数相加,显示前20项,每行5个数。
非递归
#include <stdio.h>
int main(void) {
int a[20] = {};
a[0] = 0;
a[1] = 0;
a[2] = 1;
//char
for (int i = 0; i < 20; ++i) {
if (i > 2) {
a[i] = a[i - 1] + a[i - 2] + a[i - 3];
}
}
for (int j = 0; j < 20; ++j) {
if (j != 0 && j % 5 == 0) {
printf("\n");
}
printf("%d ", a[j]);
}
return 0;
}
递归方法
int fun(int a);
int main(void) {
for (int i = 0; i < 20; ++i) {
if (i % 5 == 0 && i != 0) {
printf("\n");
}
printf("%d ", fun(i));
}
return 0;
}
//求第n项第值
int fun(int a) {
if (a == 0) {
return 0;
} else if (a == 1) {
return 0;
} else if (a == 2) {
return 1;
} else {
return fun(a - 1) + fun(a - 2) + fun(a - 3);
}
}
从键盘输入一个字符,从特定的字符中删除这个字符
int main(void) {
char str[] = "abcdef";
char a;
scanf("%c", &a);
int k = 0;
for (int i = 0; str[i] != '\0'; ++i) {
if (str[i] != a) {
str[k] = str[i];
k++;
}
}
str[k] = '\0';
printf("%s", str);
return 0;
}
网友评论