1 计算机如何完成多个数相加
2 计算机如何完成通过加法来算乘法
3 标准输入输出流
4 计算机如何完成阶乘
5 计算一个数的颠倒数
6 计算一个数组n的k组合,也就是等于计算一个集合的所有子集,计算一个数组n的k组合排列,也就是要计算一个集合的所有子集的排列,0-K-n。
某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。体育彩票采用整数1、2、3、……、36表示36种体育运动。
代码采用穷举,非常的罗嗦,虽然是我自己写的,但是依然要批评。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
typedef struct databox {
int datasun[8];
int *ponit;
}ps;
int dataint(int *num);
void DataSum(int n);
long JC(int n);
int NI(int sum);
void DataMinus(int n1, int n2, int n3, int n4);
void CP(ps *p);
void Pintobox(int i, ps *box);
void clear(ps *box);
int Mult10(int n);
int main()
{
ps box,*pbox;
pbox = &box;
DataSum(199999990);
DataMinus(3, 4, 5, 6);
int c=NI(1234);
clear(pbox);
CP(pbox);
}
//1.计算数的阶乘
long JC(int n) {
int nn = n;
long sel=1;
while (nn != 1) {
sel = sel*nn;
nn--;
}
return sel;
}
//2.把一个数组的数串,变一个整数,去掉多余的0
int dataint(int *num) {
int sum=0;
int st=0;
for (int j = 7; j >= 0; j--)
{
int zz = *(num + j);
if (zz!=-1) {
int ww = Mult10(st);
int ee = zz*ww;
sum=sum + ee;
st = st + 1;
}
}
//printf("%d", sum);
return sum;
}
//3.计算10的n次方
int Mult10(int n)
{
int sum = 10;
int m;
if (n == 0) return 1;
for (m = 1; m<n; m++) sum *= 10;
return sum;
}
//4.计算一个数的颠倒数