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

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元的枚数,总金额元数

求大神帮助!感激不尽!!!!!如果全都正确绝对追加!!!!!!拜托!!!

我只做了第二题,第一题没做过这类,所以暂时不做,看有没有大神能回答~顺便学习~~

至于第二题,我的思路是先自己构成公式,因为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元,总金额
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-28
程序一:
#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不满足条件(厚度不一致)!本回答被提问者和网友采纳
第2个回答  2012-09-28
#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");
}
第3个回答  2012-09-28
现在没有空,晚上给你写。

求教C语言大神!!!最好讲一下理由,万分感谢
结果是cbade 原因如下:首先,主函数只进行了一个fun操作,其他的就是定义和输出,所以字符串(或者说字符数组)的调整完全由fun决定 fun中首先定义了x和y,因为s的长度是5,所以y = (strlen(s) - 1) \/ 2=(5-1)\/2=2 因此:循环开始时,初始值是x=0,y=2,s="abcde",进入循环 第一次...

求c语言大神给解!!⊙▽⊙
\\t, -- tab 键 \\"相当于"\\n是换行 \\\\, -- 就是 \\ 号 所以答案是12 选D

关于c语言程序设计的问题求大神帮忙!万分感谢!
(1)编辑(把程序代码输入,交给计算机)(2)编译(成目标程序文件.obj)编译是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析、语法分析、语义检查和中间代码生成、代码优化、目标代码...

用C语言怎么编程啊?求大神
if (n == 1){return 1;} else if(n == 2) { \/\/n=2时,有两种方案:1步再1步,或直接2步return 2;\/\/ n >2时,要么是从n-1阶走一步达到n阶的,\/\/要么是从n-2阶直接跨2步达到n阶的,两者相加即可。} else{return func(n-1)+func(n-2);}}int main(){int n,res;scanf(...

怎么用C语言编写对话的形式?急啊!!!谢谢啦!!1
void main(){ int a;printf("1+1=?");scanf("%d",&a);if(a==2)\/\/当用户输入的数值是2是就执行if下以行,否则的话就执行else后面的语句 printf("Very Good\\n");else printf("ERROR\\n");\/\/error是错误的意思 } 要按你的意思的话,就要用if判断语句,当怎么样时...就怎么样... ...

c语言简易计算器代码!!急求大神帮助,好了给加分
int main(){ int x = 0, y = 0;char i ;printf("请输入你要计算的方式:\\n + - * \/ % \\n");scanf("%c",&i);printf("输入两个数字,一个数字输入完成后按一次回车\\n");scanf("%d",&x);scanf("%d",&y);switch (i){ case '+':printf("=%d\\n",x+y);break;case ...

c语言,求大神解答!
scanf格式化输入,scanf("%c",&c)这句代码,读取一个字符,并赋值给c,也就是‘1’(注意,此时是字符1,不是数字1,实际上c如果按照整形输出的话,等于49);接着是第二次格式化输入scanf("%d",&i),也就是23。因为scanf一次性接收的数据会因为空格而结束,在输入缓冲区里面,123中的‘1’被...

一道c语言编程,求大神
include <stdio.h>#include <stdlib.h>\/\/ 定义比较函数int cmp (const void* a, const void* b){int i1 = *((int*)a);int i2 = *((int*)b);return i2 - i1;}\/\/ 用于输出整数数组void print_arr (int* p, int n){int i;for (i = 0; i < n; ++i){printf ("%d "...

C语言结构体编程题,求助大神啊
二、输入信息直接写在main函数,实际软件开发应单独写输入函数,输入验证我只写了性别和婚姻状态的验证,其余成员的输入验证需要自己添加。(实际开发,验证也应单独写函数调用)。三、输出单独函数。include <stdio.h> typedef union maType\/\/结婚状态共用体 { int type;\/\/0未婚1已婚2离异 }MTE;typede...

求大神!! c语言编程,请编写一个程序寻找一种特殊整数:一个 n 位的正...
int main(){int m,n,i,j,s,t=1,k=0,t1,i1,j1;scanf("%d",&n);for(i=1;i<n;i++)t*=10;for(i=t;i<10*t;i++){j=i;s=0;for(;j;j\/=10){t1=j%10;for(j1=t1,i1=1;i1<n;i1++)j1*=t1;s+=j1;} if(s==i){printf("%d\\n",s); k++;} } if(!k)...

相似回答