求助各位C语言编程高手~帮我做3道题~

我们同学考我3道题~把哦、我难住了~特意跑来向各位高手求救~我是学计算机科学与技术的~同学考我3道C语言编程的题~
第一题:编写一个函数,计算并返回给定正整数m与n的最大公约数与最小公倍数~
第二题:排序,10个数排序,散乱数字,从小到大排 32 9 45 22 15 48 47 8 55 1 函数的调用来实现冒泡法,选择法。主函数调用子函数,用数组来实现。
第三题:打击一个菱形,画七行 ,用循环来做
*
***
*****
*******
*****
***
*
做好了发到我的邮箱:cuixu2807@sina.com 做好后还给追加分数~
拜托大家了~
图案是个菱形~本人做的不好~没有做出来~大概意思是那样~最上面一个星~第二排3个星~第三排5个星~第四排7个星~第五排5个星~第六排3个星~第七排1个星~再次感谢大家~

第1个回答  2007-07-04
#include <stdio.h>
#include <string.h>

#define N 4

/*-----------------------------------------
                   第一题
-------------------------------------------*/
void Diamond(const char* s, int n, int len) 
{
    printf("%*s%-s\n", len, s + n - 1, s + n);
    if(n > 1)
        Diamond(s, n - 1, len);
    printf("%*s%-s\n", len, s + n, n == len ? s + n : s + n + 1); 
}

/*-----------------------------------------
                   第二题
-------------------------------------------*/
typedef struct
{
    int gcd;
    int lcm;
}pair;

void GCD_LCM(int a, int b, pair * p)
{
    int tmp;
    int product = a * b;
    while(b % a)
    {
        tmp = a;
        a = b % a;
        b = tmp;
    }
    p->gcd = a;
    p->lcm = product / a;
}

/*-----------------------------------------
                   第三题
-------------------------------------------*/
void Swap(int* lhs, int* rhs)
{
    int tmp = *lhs;
    *lhs = *rhs;
    *rhs = tmp;
}

void BubbleSort(int* beg, int* end)
{
    for(; beg != end; ++beg)
        for(int* p = end - 1; p != beg; --p)
            if(*p < *(p - 1))
                Swap(p, p - 1);
}

void SelectSort(int* beg, int* end)
{
    for(; beg != end; ++beg)
    {
        int* max = beg;
        for(int* p = beg + 1; p != end; ++p)
            if(*max < *p)
                max = p;
        Swap(beg, max);
    }
}

void Print(int* beg, int* end)
{
    while(beg != end)
        printf("%d ", *beg++);
    putchar('\n');
}

int main()
{
    /*一*/
    char pt[N+1] = {0};
    memset(pt, '*', N);
    Diamond(pt, N, N);
    
    /*二*/
    pair p;
    GCD_LCM(3, 6, &p);
    printf("%d %d\n", p.gcd, p.lcm);
    
    /*三*/
    int a[] = {32, 9, 45, 22, 15, 48, 47, 8, 55, 1};
    Print(a, a + 10);
    BubbleSort(a, a + 10);
    Print(a, a + 10);
    SelectSort(a, a + 10);
    Print(a, a + 10);
}
第2个回答  2007-07-04
第一题有人写了,我就不回了。
第二题:
1、冒泡法:
#include "stdio.h"

void Print(int a[10],int n);
void Order(int a[10],int n);

main()
{
int a[10]={32,9,45,22,15,48,47,8,55,1};

Print(a,10);
Order(a,10);
Print(a,10);

}
void Print(int a[10],int n)
{
int i;

for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}

void Order(int a[10],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}

}

2、选择法:

#include "stdio.h"

void Print(int a[10],int n);
void Order(int a[10],int n);

main()
{
int a[10]={32,9,45,22,15,48,47,8,55,1};

Print(a,10);
Order(a,10);
Print(a,10);

}
void Print(int a[10],int n)
{
int i;

for(i=0;i<n;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}

void Order(int a[10],int n)
{
int i,j,temp,m;
for(i=0;i<n;i++)
{
m=i;
for(j=i+1;j<n;j++)
{
if(a[m]>a[j])
{
m=j;
}
}
if(m!=i)
{
temp=a[m];
a[m]=a[i];
a[i]=temp;
}
}

}

第三题:
#include "stdio.h"
#include "math.h"
main()
{
int i,j;

for(i=1;i<=7;i++)
{

for(j=1;j<=fabs(4-i);j++)
{
printf(" ");
}
for(j=1;j<=(4-fabs(4-i))*2-1;j++)
{
printf("*");
}
printf("\n");
}
}

以上三个程序均经过Turbo C2.0调试通过,结果正确。本回答被提问者采纳
第3个回答  2007-07-04
很简单的嘛!
第4个回答  2007-07-04
晚上帮你做

C语言高手帮忙做这三道题,要详解 谢谢拉!!
1、A while()是判断括号里的是真还是假,若表达式为0,就是假,若表达式非0,就是真。"!"是非逻辑运算符,简单说就是把非0变成0,把0变成1。。。"while(!x)”就是"(!x)"取真是进行循环,就是"!x"的值为非0时,就是"x"的值为0时。所以就是x==0.2、C 这题和上题一样,就是(m...

求助各位C语言编程高手~帮我做3道题~
\/*三*\/ inta[]={32,9,45,22,15,48,47,8,55,1};Print(a,a+10);

C语言编程题目三道
:an=n1\/n2;break; case '%':an=n1%n2;break; } printf("%d%c%d=%d\\n",n1,f,n2,an);}include<stdio.h>#include<string.h>void count(char *str1,char *str2);int main(){ char str1[100]={0},str2[8]={0}; gets(str1); scanf("%s",str2); coun...

C语言求做三道题,万分感谢
2、四个空格分别填入:a[0] 8 min=a[i] t 3、输出结果是 2

C语言选择题(3道题),帮忙解答一下,谢谢!
你好:第一题:先执行循环体:b-=a; a++;b=b-a=10-1=9,a=2,再判断条件:b--<0 b=9>0 然后b-- (注意无论判断条件是否满足,都执行),b=8 第二题:答案错了,应选D 程序应该这么看:int a=3,b=2,c=1;int x=10,y=20;if(ab就不满足条件,所以下面的不执行!if(b!=0)...

求高手帮忙做一些C语言试题
第三题、判断题(每题1分,5道题共5分)1、表达式18\/4*sqrt(4.0)\/8值的数据类型为double。正确 2、逻辑关系“a≥10或a≤0”正确表示的C语言表达式是:a>=10 or a<=0 。错误 3、a=b=58是合法的C语言赋值表达式。正确 4、C语言表达式值的类型可以根据环境来确定。错误 5、若有int...

C语言3道选择题。每道题要说明理由。我做错的,但不知道原因。谢谢_百 ...
第一题:规则规定不能给char *型指针赋值一个字符串常量,char *型指针只可以用一个字符串“初始化”。即char *p="English"正确,而char *p;p="English";不正确,前者是初始化,后者是赋值。第二题:ps+2是指针,不是取值;若是*(ps+2)就取到m了。第三题:一共9个元素,顺序从0排到8,...

求助C语言编程题
a=m\/100; \/\/百位 b=m\/10%10; \/\/十位 c=m%10; \/\/个位 c*100+b*10+a; \/\/这就是反序的数。综合起来就是 (m%10)*100+(m\/10%10)*10+m\/100

C语言编程,有谁可以帮我编出来啊~~~救命啊~
int sex;int tal;printf("请键入性别,1表示男,2表示女:\\n");scanf("%d",&sex);printf("请键入身高(cm):\\n");scanf("%d",&tal);if(sex==1){ if(tal==105) printf("体重正常!");else if(tal>105) printf("体重偏轻!");else if(tal<105) printf("体重偏重!");} else ...

电脑C语言编程,求高手帮忙
men<30;men++)for(women=1;women<30;women++)for(children=1;children<30;children++){ if(men+women+children==30&&men*3+women*2+children==50){ i++;printf("%d.men:%d,women:%d,children:%d,",i,men,women,children);printf("%d*3+%d*2+%d*1=50\\n",men,women,children);...

相似回答
大家正在搜