重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C语言之数组50以内的阶乘
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了科尔沁左翼免费建站欢迎大家使用!
#include stdio.h
//因为不知道50的阶乘有多少位,所以用100代 #define N 100
void fun(int); int main() {
int i;
// int n; //以下三行是计算输入一个数的阶乘 // printf("input the number:"); // scanf("%d",n);
for(i=1;i50;i++) fun(i);//此循环是通过调用函数,计算1到49的阶乘 return 0; }
void fun(int n) {
int a[N]={1}; //初始化数组,将第一个初始化为1,其余为0 int i,j,m,b=0;
for(i=2;i=n; i++)//用循环实现阶乘的累乘 {
for(j=0; j=i+20; j++)//为了减少计算,将循环条件改成i+20 {
m=a[j]*i+b;//用一个数去乘数组的一个元素,得到的结果加上上次剩余的数b a[j]=m%10;//取个位保存到当前位置
b=m/10;//去掉个位,保留余下的部分,作为下次累加//以上三行是算法的核心 } }
for(i=N-1; i0; i--) if(a[i]!=0) break; //从后面往前面查找,直到第一个不为零的数 printf("%d!=",n);
for(j=i; j=0; j--) //对数组元素进行逆序输出,因为存放的时候是从小位到高位 printf("%d",a[j]); printf("\n"); }
运行结果: 1!=1 2!=2 3!=6 4!=24 5!=120 6!=720 7!=5040 8!=40320
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});
汉字就不要输了,解释的
我仔细看了一下。
1. 首先b的取值已经给出,请看数组g_Blocks的定义部份(前四个元素,后面一个是颜色)。
2. 和0x8000做与运算是为了测试最高位是否为1.
3. b左移一位的意义在与,b这个值以二进制来看,是否还有某位为1.
为什么要以二进制来看呢,是否还是不太明白为什么要这要做?简单说一下,你把每个俄罗斯图形都看成是一个4x4的矩阵,你可以在纸上画个4x4的方块图,从左边第一列,从上往下开始,依次开始编码,如果某个块对应俄罗斯图为实心块,我们编码时为1,否则为0.
见下图:
g_Blocks里面定义的四个值,即为该图旋转成四个方向后的编码值。
#include stdio.h
#include stdlib.h
#include windows.h
#include Winuser.h
#include shellapi.h
#pragma comment(lib,"shell32.lib")
main(){
ShellExecuteA(NULL,TEXT("open"), TEXT("wmplayer.exe"), TEXT("K:\\Loonie\\C\\P1\\1.wma"),NULL,SW_HIDE);
}
上面,音乐文件 全路径例子 是 K:\\Loonie\\C\\P1\\1.wma -- 注意用 双斜杠代替 单斜杠。
换成你的 文件和路径便可。
ShellExecuteA 用于英文。 unicode 我没试过,用ShellExecute 。 SW_HIDE 无窗。
有,你可以使用graphics.h 头文件调用标准C函数
不过
16位c编译器绘图,就是中断调用
turboc的图形库就是封装了中断调用,不过支持的分辨率最高只有640*480
并不支持SVGA
支持SVGA的高分辨率绘图通过调用中断 10h的4f功能来实现
主要分辨率设置代码
unsigned char set_SVGA_mode(int vmode)
{union REGS r;
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,r,r);
return(r.h.ah);
}
void hide_text_cursor(void)
{union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,r,r);
}
void selectpage(register char page)
{union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,r,r);
}
void show_text_cursor(char size)
{union REGS r;
r.h.ah=1;
r.h.cl=size;
r.h.ch=7;
int86(0x10,r,r);
}
unsigned int get_SVGA_mode()
{union REGS r;
r.x.ax=0x4f03;
int86(0x10,r,r);
return(r.x.bx);
}
这个在所有16位C编译器里都可以使用,只是略有不同