C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:607 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:729 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:563 |
C语言考试练习题_排列 (C语言代码)浏览:767 |
【偶数求和】 (C语言代码)浏览:588 |
WU-printf基础练习2 (C++代码)浏览:2061 |
校门外的树 (C语言代码)浏览:733 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:628 |
简单的a+b (C语言代码)浏览:878 |
Cpp 2023-12-06 11:13:35 |
找了半天,终于知道这个代码差什么了。a[0]=1,a[1]以后的都没有赋值,所以不能直接用a[j]=a[j]*i,要先在a[0]=1后面加上for(i=1;i<=10000;i++) { a[i]=0; }
Cpp 2023-12-06 11:14:00 |
错了
Cpp 2023-12-06 11:14:10 |
me
Cpp 2023-12-06 11:14:31 |
说错话了૮ ºﻌºა站岗
Cpp 2023-12-06 11:15:48 |
但加上for(i=1;i<=10000;i++) { a[i]=0; }才能正确
Cpp 2023-12-06 11:16:12 |
哦,没错
Cpp 2023-12-06 11:16:38 |
为什么不能撤回
Cpp 2023-12-06 11:19:56 |
#include<stdio.h> int main() { int i,j,k; int a[10000]; //用数组存储结果 a[0]=1; //先存储1! k=0; //用k来表示数组中数的第一位的下标 for(i=1;i<=10000;i++) { a[i]=0; } for(i=2; i<=1977; i++) //从1乘到1977 { for(j=0; j<=k; j++) //用i乘以每个数 a[j]=a[j]*i; for(j=0; j<=k; j++) //判断每个数是否大于10;大于10就进位 { if(a[k]>=10) //判断数的第一位是否大于10;大于10 k就自加 k++; if(a[j]>=10) //判断每一位的数是否大于10,大于就进位 { a[j+1]=a[j+1]+a[j]/10; a[j]=a[j]%10; } } } for(i=k; i>=0; i--) //输出,从数的第一位开始输出 printf("%d",a[i]); return 0; }
Cpp 2023-12-06 11:24:11 |
上面是改编版,验证过了,是对的
Cpp 2023-12-06 11:24:39 |
下面是我的仿版
Cpp 2023-12-06 11:24:55 |
#include <stdio.h> int main() { int i,j,k=0; int a[10000]; a[0]=1; for(i=1; i<=10000; i++) { a[i]=0; } for(i=2; i<=1977; i++) /*阶乘每一位数*/ { for(j=0; j<=k; j++) /*k使位数限定,即每次a[j]*=i时都只乘一位数*/ { a[j]*=i;/*阶乘每一位数*/ } for(j=0; j<=k; j++) { if(a[k]>=10)/*判断首位是否大于十,如果大于十,则k++,增加一位数*/ { k++; } if(a[j]>=10)/*判断每一位数,如果该位数大于十,则进位*/ { a[j+1]+=(a[j]/10); a[j]%=10; } } } for(i=k; i>=0; i--) { printf("%d",a[i]); } return 0; }