C语言问题,求高手解答~

1.【问题描述】已知费波那契数列为1,1,2,3,5,8,.......,即第1,2项都为1,从第三项开始为前两项之和。利用数组输出前20项
【输入形式】
【输出形式】数列的前20项,5个一行输出
【样例输入】
【样例输出】
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
【样例说明】 输出时每个整数占四列左对齐,然后后面空一格

2.【问题描述】从键盘输入一个字符串S和一个字符C,编程实现将字符串S中所有的C字符去除
【输入形式】一个字符一个字符串吗,字符和字符串中间以空格隔开
【输出形式】参见样例输出
【样例输入】a Shanghai,I am coming!
【样例输出】 Shnghi,I m coming!
【样例说明】字符和字符串中间以空格隔开

要求有详解,满意的话加分~

第一题

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

int main()
{
int f[20]={1,1},i;
for(i=2;i<20;i++)
{
f[i]=f[i-1]+f[i-2];
}
for(i=0;i<20;i++)
{
printf("%-4d ",f[i]);
if(i%5==4&&i>0)puts("");
}
return 0;

}
第二题

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

int main()
{
char s[100],ch[20];
int i;
scanf("%s",ch);
getchar();
gets(s);
for(i=0;s[i];i++)
{
if(s[i]!=ch[0])
putchar(s[i]);
}
puts("");
return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-04
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
Press any key to continue

#include <stdio.h>
main()
{
int i,cnt=2,a[20]={1,1};
printf("%-4d %-4d ",a[0],a[1]);
for (i=2;i<20;i++)
{
a[i]=a[i-2]+a[i-1];
printf("%-4d ",a[i]);
cnt++;
if (cnt==5)
{
printf("\n");
cnt=0;
}
}
}

a Shanghai,I am coming!
Shnghi,I m coming!
Press any key to continue

#include <stdio.h>
main()
{
char *p,s[80]={0},c;
p=s;
scanf("%c",&c);
gets(s);
while (*p)
{
if (*p!=c)
{
printf("%c",*p);
}
p++;
}
printf("\n");
}追问

*p是什么意思?

追答

指针 *p是s里的字符

相似回答