输出两个正整数m和n求最小公倍数与最大公约数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一周作业
1输入两个正整数m和n, 求其最大公约数和最小公倍数.
<1> 用辗转相除法求最大公约数算法描述: m对n求余为a, 若a不等于0 则m <- n, n <- a, 继续求余否则n 为最大
公约数<2> 最小公倍数= 两个数的积/ 最大公约数
#include int main()
{
int m, n; int m_cup, n_cup, res; /*被除数, 除数, 余数*/
printf("Enter two integer:\n");
scanf("%d %d", &m, &n);
if (m > 0 && n >0)
{
m_cup = m;
n_cup = n;
res = m_cup % n_cup;
while (res != 0)
{
m_cup = n_cup;
n_cup = res;
res = m_cup % n_cup;
}
2、分别用三种循环语句(while语句、do-while语句、for语句),实现
求1~100的累加和。
第2周的题目:(要求用数组做)
printf("Greatest common divisor: %d\n", n_cup);
printf("Lease common multiple : %d\n", m * n / n_cup); }
else printf("Error!\n");
return 0;
}
2int sum = 0;
int i=0;
while(i<100)
{
sum += (i+1);
i++;
}
printf("%d" , sum);
i=0;
do
{
sum += (i+1);
i++;
}while(i <=100)
printf("%d" , sum);
for(i = 1 ; i <=100 ; i++)
{
sum += i;
}
printf("%d" , sum);
第二周作业
1用冒泡法对输入的10个整数排序。
#include<stdio.h>
#include<malloc.h>
void print(int *a,int n);
void paixu(int *a,int n);
void main()
{
int a[10];
int i;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
paixu(a,i);//排序
print(a,i);//输出
}
int swap(int *a,int *b)//交换
{
int t;
t=*a;
*a=*b;
*b=t;
}
//冒泡排序,从大到小
void paixu(int *a,int n)
{
int i,j=0,k;
printf("==========从大到小排序后=========\n");
for(i=0;i<n-1;i++)
{
for(j=1;j<n-i;j++)
if(a[j-1]<a[j])
swap(&a[j],&a[j-1]);
}
}
void print(int *a,int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",*(a+i));
printf("\n");
}
2、用数组求Fibonacci数列前20个数。
#include<stdio.h>
void main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)
printf("\n");
printf("%10d",f[i]);
}
printf("\n");
}
第三周作业
11、求两个正整数的最大公约数和最小公倍数,用一个函数求最大公约数。
用另一个函数根据求出的最大公约数求最小公倍数。
#include<iostream>
using namespace std;
int greatest_c_divisor(int x,int y); //求最大公约数
int least_c_multiple(int x,int y,int gcd); //求最小公倍数
int main()
{
int x,y,gcd,lcm;
cout<<"请输入两个正整数"<<endl;
cin>>x>>y;
gcd=greatest_c_divisor(x,y);
lcm=least_c_multiple(x,y,gcd);
cout<<"这两个数的最大公约数是"<<gcd<<"\n这两个数的最小公倍数是
"<<lcm<<endl;
}
int greatest_c_divisor(int x,int y)
{
int gcd;
x>y?gcd=y:gcd=x; //两个数中的最小值 for(;x%gcd!=0||y%gcd!=0;gcd--);
return gcd;
}
int least_c_multiple(int x,int y,int gcd)
{
int lcm;
lcm=x*y/gcd;
return lcm;
}
2写一函数,用起泡法对输入的10个字符按从小到大顺序排列。
#include <stdio.h>
void main()
{
int i, j, temp;
int element[10];
int *start, *end;
printf("\n请输入10个数:\n ");
for(i = 0;i < 10;i++)
{
scanf("%d", &element[i]);
}
start = element; /* start 指针指向数组的第一个元素 */
end = element + 10; /* end 指针指向数组的最后一个元素 */ printf("\n原始数组:\n");
/* 输出原始数组 */
for(;start < end;start++)
{
printf("%d ", *start);
}
printf("\n\n排序后的数组:\n");
/* 输出排序后的数组 */
start=element;
for(i = 10;i > 0;i--)
{
for(j = 10 - i;j > 0;j--)
{
if(*(start + j-1) > *(start+j))
{
temp = *(start + j-1);
*(start + j-1) = *(start+j);
*(start+j) = temp;
}
for(start = element;start < end;start++){
printf("%d ", *start);
}
printf("\n");
}
第四周作业
1、将数组a中的n个整数按相反顺序存放。
(要求用指针做)
void inv(int *a, int n)
{
int tmp;
int i, j = n - 1;
for (i = 0; i < j; i++) {
tmp = *(a+i);
*(a+i) = *(a+j);
*(a+j) = tmp;
j--;
}
}
2输入3个学生各学4门课,计算总平均分,并查找一门以上课程不及格的学生,输出其各门课成绩。
(要求用指针做)
#include "stdio.h"
#include "stdlib.h"
struct student
{
char name[10];
int chinese;
int english;
int shuxue;
int lishi;
int sum;
float avg;
};
void main()
{
struct student a[3];
int i,j,k;
for(i=0;i<3;i++)
{
scanf("%s%d%d%d%d",a[i].name,&a[i].chinese,&a[i].english,&a[i].shuxue,& a[i].lishi);
a[i].sum=a[i].chinese+a[i].english+a[i].shuxue+a[i].lishi;
a[i].avg=(a[i].chinese+a[i].english+a[i].shuxue+a[i].lishi)/3; }
printf("\n");
for(i=0;i<3;i++)
{
if(a[i].chinese<60||a[i].english<60||a[i].shuxue<60||a[i].lishi<60)
{
printf("%s chinese:%d english:%d shuxue:%d lishi:%d sum:%d
avf%.2f\n",a[i].name,a[i].chinese,a[i].english,a[i].shuxue,a[i].lishi,a [i].sum,a[i].avg);
}
}
}
第五周作业
1、编写一个函数input,用来输入5个学生的数据记录,再编写一个函数output,用来输
出5个学生的数据记录,每个记录包括学号、姓名和3门课成绩。
下周1之前把写好的程序文件传回来给我(要求用结构体做)
#include<stdio.h>
struct men
{
int num;
char name[8];
char sex[8];
float score;
}boy[5];
void input()
{
int i;
for(i=0;i<5;i++)
{
printf("Input the number:\n");
scanf("%d",&boy[i].num);
printf("Input the name:\n");
scanf("%s",boy[i].name);
printf("Input the sex:\n");
scanf("%s",boy[i].sex);
printf("Input the score:\n");
scanf("%f",&boy[i].score);
}
}
void output()
{
int i;
for(i=0;i<5;i++)
{
printf("NUM\t\t\tNAME\t\t\tSEX\t\t\tSCORE\n"); printf("%d\t\t\t",boy[i].num);
printf("%s\t\t\t",boy[i].name);
printf("%c\t\t\t",boy[i].sex);
printf("%.2f\n\n",boy[i].score);
}
}
int main()
{
void input();
void output();
input();
output();
return (0);
}。