日期 2022.11.19
目录
实验报告一 第一题 2
实验报告二 第二题 3
实验报告三 第三题 4
实验报告四 第四题 5
实验报告五 第五题 6
实验报告六 第六题 7
实验报告一 第一题
一、实验目的
由1,3,4,5,7,8这六个数字所组成的六位数中,找能被11整除的最大的数
二、实验内容
(实验题目描述)
由1,3,4,5,7,8这六个数字所组成的六位数中,能被11整除的最大的数是多少?
各位数字和为1+3+4+5+7+8=28
所以偶数位和奇数位上数字和均为14
为了使得该数最大,首位必须是8,第2位是7,14-8=6
那么第3位一定是5,第5位为1
该数最大为875413。
三、实验过程
(实验源码、实验结果)
#include
int main()
{int a,b,c,d,e,f;
for(a=8;a>0;a--)
if(a-2&&a-6)
for(b=8;b>0;b--)
if(b-a&&b-2&&b-6)
for(c=8;c>0;c--)
if(c-a&&c-b&&c-2&&c-6)
for(d=8;d>0;d--)
if(d-a&&d-b&&d-c&&d-2&&d-6)
for(e=8;e>0;e--)
if(e-a&&e-b&&e-c&&e-d&&e-2&&e-6)
{f=1+3+4+5+7+8-a-b-c-d-e;
if(a+c+e==b+d+f)
{printf("%d%d%d%d%d%d",a,b,c,d,e,f);
return 0;
}
}
return 0;
}
四、实验总结
(实验心得体会)
C语言写的,用多个循环可以解决
实验报告二 第二题
一、实验目的
用1,2,5,7,8,9这六个数字(每个数字至多用一次)来组成一个五位数,使得它能被75整除
二、实验内容
(实验题目描述)
请用1,2,5,7,8,9这六个数字(每个数字至多用一次)来组成一个五位数,使得它能被75整除,并求出这样的五位数有几个?
75=3×25
若被3整除,则各位数字和是3的倍数,1+2+5+7+8+9=32
所以应该去掉一个被3除余2的,因此要么去掉2要么去掉8
先任给一个去掉8的,17925即满足要求
若去掉8
则末2位要么是25要么是75,前3位则任意排,有3!=6种排法
因此若去掉8则有2*6=12个满足要求的数
若去掉2
则末2位只能是75,前3位任意排,有6种排法
所以有6个满足要求
综上所述,满足要求的五位数有18个
三、实验过程
(实验源码、实验结果)
#include
#include
using namespace std;
int main()
{
int a[5] = { 1,2,7,8,9 },b[4];
while (next_permutation(a, a + 5))
{
for (int i = 0; i < 4; i++)
{
b[i] = a[i];
}
int sum = b[0] * 10000 + b[1] * 1000 + b[2] * 100 + b[3] * 10 + 5;
if (sum % 75 == 0)
cout << b[0] << b[1] << b[2] << b[3] << 5 << endl;
}
system("pause");
return 0;
}
四、实验总结
(实验心得体会)
借助全排列函数,末尾是5,其余四位b[4]在a[5]中取,然后判断
实验报告三 第三题
一、实验目的
一个小于200的自然数,被7除余2,被8除余3,被9除余1,求这个数是多少?
二、实验内容
(实验题目描述)
一个小于200的自然数,被7除余2,被8除余3,被9除余1,这个数是多少?
注意到7-2=8-3=5
也就是说该数加上5以后可被7和8整除,也就是56的倍数
因此这个数只可能是56-5 562-5 563-5
经检验发现只有56*3-5=163被9除余1符合要求,因此该数为163
三、实验过程
(实验源码、实验结果)
#include
int main(){
int i=1;
for(;i<200;i++){
if(i%7==2&&i%8==3&&i%9==1)
printf("这个数是%d",i);
}
return 0;
}
四、实验总结
(实验心得体会)
蛮算
实验报告四 第四题
一、实验目的
找数,在所有的两位数中,十位上的数字比个位上的数字要大的共有多少个?三位数中佰位比个位大的数字有多少呢?
二、实验内容
(实验题目描述)
在所有的两位数中,十位上的数字比个位上的数字要大的共有多少个?三位数中佰位比个位大的数字有多少呢?
三、实验过程
(实验源码、实验结果)
#include
int main()
{
int m,n,sum=0,i,a,b,c;
scanf("%d%d",&m,&n);
if(m>=10&&m<n&&n<=100)
{
for(i=m; i<=n; i++)
{
a=i%10;
b=i/10;
c=b%10;
if(c>a)
{
sum=sum+i;
}
}
printf("%d",sum);
}
return 0;
}
三位数,改一下范围,改一下a,b,c,d(同水仙花数)
四、实验总结
(实验心得体会)
和水仙花数有相同原理可类比
实验报告五 第五题
一、实验目的
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字
二、实验内容
(实验题目描述)
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
【Input】
一行:两个数a,b。中间用一个空格隔开。1<=a<=9,1<=b<=200。
【Output】
计算后的结果。
【样例输入一:】
5 3
【样例输出一:】
615
【样例输入二:】
3 5
【样例输出二:】
37035
三、实验过程
(实验源码、实验结果)
package com.ljy.tencent;
import java.util.Scanner;
public class AddNumerical
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");
int n = input.nextInt();
System.out.println("请输入需要相加的个数:");
int number = input.nextInt();
input.close();
//调用计算方法
System.out.println("计算输出结果为:");
System.out.print("s=");
System.out.print(count(n, number));
}
//求和表达式以及求和
public static int count(int n, int number)
{
int s = 0;//s为每一个叠数
int sum = 0;//sum为最后的总和
//循环从1次幂到number次幂的叠数
for(int i = 1; i <= number; i++)
{
//调用形成叠数的方法
s = coumpute(n, i);
//利用if...else区分是否为最后一个加数,从而保证最后一个数后面不添加"+"
if(i == number)
{
System.out.print(s);
}
else
{
System.out.print(s + "+");
}
sum += s;
}
System.out.print("=");
return sum;
}
//叠数的形成
public static int coumpute(int n, int number)
{
int m = 0;
for(int i = 0; i < number; i++)
{
//从0次幂到number次幂形成叠数,如22222=2*10^4+2*10^3+2*10^2+2*10^1+2*10^0
m += (int) (n * Math.pow(10, i));
}
return m;
}
}
四、实验总结
(实验心得体会)
好难……
实验报告六 第六题
一、实验目的
按照键盘输入的数值N的大小,打印菱形
二、实验内容
(实验题目描述)
按照键盘输入的数值N的大小,打印如下图形
*
***
*****
*******
*********
*******
*****
***
*
N为图形的行数。要求使用循环实现。
【Input】
显示的行数
【Output】
图形。
【样例输入:】
9
三、实验过程
(实验源码、实验结果)
package lianxi;
public class lingxing{
public static void main(String[] args) {
//打印菱形
//1.
for(int i=0;i<5;i++){
for (int k=0;k<5-i;k++){
System.out.print(" ");
}
for(int j=0;j<2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
//2.倒的等腰三角形
for(int i=4;i>=0;i--){
for (int k=0;k<5-i;k++){
System.out.print(" ");
}
for(int j=0;j<2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
四、实验总结
(实验心得体会)
对称有规律,做一半另一半改一下就好了