C语言编程!!求大神帮助!!!!急啊!!!

1.从键盘上输入n(1<n<21),按样例格式打印n行由字符*构成的W形图案。【输入形式】从键盘输入整数n(1<n<21)。【输出形式】输出用字符*构成的W形图案,样式按... 1.
从键盘上输入n(1<n<21),按样例格式打印n行由字符 * 构成的W形图案。
【输入形式】
从键盘输入整数n (1<n<21)。
【输出形式】
输出用字符 * 构成的W形图案,样式按下面的样例,第1行的起始字符位于第一列

这是以4为例。。。

2.
某人拿了一堆硬币去银行换钱,已知1角的硬币厚1.8mm,5角的硬币厚1.5mm,1元的硬币厚2.0mm。他将1角的硬币放成一叠,将5角的硬币放成一叠,将1元的硬币放成一叠,发现3叠硬币一样高。银行正好把这些硬币换成若干张面值为10元的纸币,问此人至少带了多少钱的硬币(元为单位),每种面值的硬币各有多少枚。输出格式为:1角的枚数,5角的枚数,1元的枚数,总金额元数(样如:50,30,40,60)。
【输入形式】
无输入。
【输出形式】
输出如下用逗号分隔的4个数(样如:50,30,40,60):
1角的枚数,5角的枚数,1元的枚数,总金额元数

求大神帮助!感激不尽!!!!!如果全都正确绝对追加!!!!!!拜托!!!
展开
 我来答
我是比丘猴
2012-09-28 · TA获得超过671个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:188万
展开全部
我只做了第二题,第一题没做过这类,所以暂时不做,看有没有大神能回答~顺便学习~~

至于第二题,我的思路是先自己构成公式,因为1角、5角和1元一样高,所以有相应关系(设个数分别为a,b,c)
则高度上有1.8a=1.5b=2.0c 全部转成跟a相关,则有b=1.2a c=0.9a
因为能换成若干张10元,所以有对应关系 0.1a+0.5b+1c=10n..
即(0.1a+0.5b+1c)%10=0 余数为0,再套用b、c与a的关系,得1.6a%10=0
还有一点~因为c与a关系是c=0.9a~~所以a个位数只能是0,不然c就不是整数了~
接着写程序~如下:
#include <stdio.h>
#define num 1000
void main()
{
int a[50],b[50],c[50],j=0;
for (int i=1;i<num;i++) //这里i到1000,因为没限定多少张10元,所以硬币个数也没限制
{
if ((16*i%100==0)&&(i%10==0)) //这里因为c的关系,i%10余数要等于0
{
a[j]=i;
b[j]=int(1.2*a[j]);
c[j]=int(0.9*a[j]);
j++;
}
}
for(i=0;i<j;i++)
{
printf("%d,%d,%d,%d\n",a[i],b[i],c[i],16*a[i]/10);
}
}

最后得出楼主所要的答案~分别是1角,5角,1元,总金额
kaixingui2012
2012-09-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7766万
展开全部
程序一:
#include <stdio.h>
int main()
{
int n=0;
int i=0;

scanf( "%d" , &n );
for( i=0;i<n;i++ )
{
int width=0 ;
int j=0 ;
width=2*(n-i-1)-1 ;
for ( j=0;j<i;j++ )
printf(" " );
printf("*"); //左边

for ( j=0;j<width;j++ )
printf(" " ); //两*间距
if ( i < n-1 )
printf("*"); //中间*
for ( j=0;j<2*i-1;j++ ) //中间两*间距
printf(" " );
if ( i> 0 && i< n-1 ) //非头尾,有四*
printf("*");
for ( j=0;j<width;j++ )
printf(" " );
printf("*"); //右边
printf("\n");
}
return 0;
}
程序二:
#include <stdio.h>

int main()
{
//为方便程序书写,将厚度扩大10倍,金额以角为单位
//设一角的x个,五角的y个,一元的z个
//于是有 18x = 15y = 20z
//且总金额是 (x+5y+10z)与100的最小公倍数
//18 15 20的最小公倍为3*3*5*2*2=180 ,
//其实这个程序可以利用最小公倍算法来实现任意数据的情况,本程序以解决既定数据为目的,就不写这样函数了。
int x,y,z,m ;

x=180/18 ;
y=180/15 ;
z=180/20 ;
for ( m=1;;m++ )
if ( m*(x+5*y+10*z) %100 == 0 )
break;

printf("%d,%d,%d,%d\n",x*m,y*m,z*m,m*(x+5*y+10*z)/10 );
return 0;
}
输出:
50,60,45,80
显然你举的例子50,30,40,60不满足条件(厚度不一致)!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgao622
2012-09-28 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6552
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
#include<stdio.h>
void put_w(int n);//输出 W
void cacl();//计算资金
int minGBS(int n1, int n2, int n3);//求最小公倍数
void main()
{
put_w(15);
cacl();
}

void cacl()
{
int h1= 18,
h5= 15,
h10= 20;

int GBS= minGBS(18, 15, 20);//最小公倍数
int Min= GBS/h1/10+GBS/h5/2+GBS/h10;//求出最小公倍数下 可以组成多少块钱
for(int i= 1; i <= 10 ; i++)//求出多少倍的 最小公倍数钱 是10块的倍数
{
if( (Min*i)%10==0 )
break;
}

printf("1角的枚数:%d,5角的枚数:%d,1元的枚数:%d,总金额元数:%d\n\n",
GBS/18*i, GBS/15*i, GBS/20*i, Min*i);
}

int minGBS(int n1, int n2, int n3)
{
int n= n1 > n2 ? n1 : n2;
n= n > n3 ? n : n3;

for(n; n < n1*n2*n3; n++)
{
if(n%n1== 0 && n%n2==0 && n%n3==0)
break;
}
return n;
}

void put_w(int n)
{
for(int x= 0; x < n; x++)
{
for(int y= 0; y < 4*n-3; y++)
{
if( y== x ||
y== -x+2*(n-1) ||
y== x+2*(n-1) ||
y== -x+4*(n-1) )

printf("*");
else
printf(" ");
}
printf("\n");
}
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo是只小菜鸟
2012-09-28 · TA获得超过212个赞
知道小有建树答主
回答量:308
采纳率:75%
帮助的人:97.6万
展开全部
现在没有空,晚上给你写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式