C语言编程问题求解!

请大神写出正确程序,感谢!... 请大神写出正确程序,感谢! 展开
 我来答
流星不死
2013-11-16 · TA获得超过1662个赞
知道小有建树答主
回答量:1621
采纳率:0%
帮助的人:1314万
展开全部
#include<stdio.h>
#include<math.h> 
int fun(int a); 
main() 
{
int i,j,k,n;
scanf("%d",&n);
k=fun(n); 
if(k)
{
for(i=-n/2;i<=n/2;i++)
{
for(j=0;j<n/2-fabs(i);j++)
printf(" ");
for(j=0;j<fabs(i)*2+1;j++)
printf("*");
printf("\n"); 

}
else
printf("Error!"); 


}
int fun(int a)
{
if(a%2==0)
return 0;
return 1; 
}

您好,很高兴为您解答,流星不死为您答疑解惑

如果本题还有不懂的地方请追问,望采纳我的回答。

祝楼主学习进步。

cdyzxy
2013-11-16 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3721万
展开全部
以图示7行来进行分析,再推广到n行:
-由于图中星号没有紧挨着,所以输出最小单位是"* "或“ ”(即星号空格或连续两个空格),下面分析中用星号和空格表示这一最小单位;
-输出7行,用循环循环变量i在每行分别等于0,1,2,3,4,5,6,即0,1,2,3,...,n-1;
-每行星号前面的空格数:0,1,2,3,2,1,0,对应i的取值,用i来计算:abs(i-3)=3,2,1,0,1,2,3,
3-abs(i-3)=0,1,2,3,2,1,0,由于是7行即7/2-abs(i-7/2),即n/2-abs(i-n/2),
其中除法利用int型数据仅保留整数部分;
-每行星号数:7,5,3,1,3,5,7,i=0,1,2,3,4,5,6,abs(i-3)=3,2,1,0,1,2,3,
abs(i-3)*2+1=7,5,3,1,3,5,7,即abs(i-n/2)*2+1
-那么程序由一个i循环开始,循环体中有三部分:循环输出星号前的空格、循环输出星号、输出换行。
【程序】
#include<stdio.h>
#include<stdlib.h>
int Pattern(int n)
{ int i,j;
if ( n%2==0 || n<=0 ) return 0;
for ( i=0;i<n;i++ )
{ for ( j=0;j<n/2-abs(i-n/2);j++ ) printf(" ");
for ( j=0;j<abs(i-n/2)*2+1;j++ ) printf("* ");
printf("\n");
}
return 1;
}
追问

大神再帮我看一个吧,新手请见谅!很感谢!

追答
【分析】
-用循环变量i控制项数,i=1,2,...,n,每循环一次计算当前的项并进行累加,e初始值为1,i每次循环加1,结束条件是判断当前项与前项的差是否小于给定的1.0e-5
-每项的计算:阶乘实际上是累乘,比如3!=3*2!=当前项数*前项的分母=i*m,m初始值为1

#include
#include

#include
void Sum2()
{ double e,t1,t0,m; //e当前累加值,t0前项,t1当前项,m当前项分母

int i;
e=1; i=0; m=1; t0=t1=0;

do

{ i++; t0=t1; //记住前一项得数

m*=i; //累乘计算当前项分母
t1=1.0/m; //当前项计算
e+=t1;

} while ( abs(t1-t0)>=1.0e-5 ); //注意差有正有负,需要用绝对值进行判断
printf("e值=%lf,总累加项数=%d\n",e,i);

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惊之柜在昨风岛
2013-11-16 · 超过25用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:44.3万
展开全部
占个位置再来慢慢看哈~!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式