『壹』 用c語言編寫100!(100的階乘)
// 注釋比較多,希望你不要感到厭煩,呵呵。
// 還記得10進制的乘法么?
// 567
// * 5
// -------
// 2835
// 用編程語言表示出來就是
// 當前的int a[4] ={0, 5, 6, 7}
// 然後從最低位開始用5去乘以每一位,少於10的部分就是這
// 個位新的值超過10的部分就是進位,加入他的前一位的結果
// 那麼從最低位開始a[0]*5=35,由於沒有進位所以a[0]=5, carry
// =3,a[1]*5=30,加上進位3=33,所以a[1] =3, carry=3,以此類推最
// 高位就是a[3] =2;所以我們的到的數組就是a[4] ={2,8,3,5},結果
// 當然就是2835拉。
// 下面我們只是用更大的進制模仿這個過程,XD
#include <stdio.h>
#define SIZE 500 // SIZE 500就可以表示結果在500*6=3000位以內的大整數
#define BASE 1000000 // 目前使用進制的基數,6位的底數可以處理1000以內的階乘
// 超過1000的話會溢出,因為最大的六位數
//乘以4位數可能超過32位整數的范圍
// 當處理大一點的階乘的話就要相應減小這個值
// 所以當你求1千萬的階乘的時候記得base是10,呵呵。
unsigned int a[SIZE];
void jiechen(int n)
{
int i, j;
int carry; //進位
int max =0; //最高位,當前數即表示佔了數組的max+1項
a[0] = 1; //最低位初始化成1
for(i=1; i<=n; i++) {
carry =0; //每讓這個超大的數乘一個新的數字時,進位初始化成0
for(j=0; j<=max; j++) { // 處理每一位
a[j] = a[j]*i +carry;
carry = a[j] / BASE; //超出10000000作為高位的進位 a[j] = a[j] % BASE; //當前位是當前位乘以*i+低位的進位
}
if(carry != 0) //最高位有進位就調整當前最高位
a[++max] = carry;
}
printf("%d!=", n); //以下是列印過程
printf("%d", a[max]); //最高位我們不列印前面的0,不然看起來不爽XD
for(i=max-1; i>=0; i--) //注意:是從高位開始列印的
printf("%06d", a[i]); //列印6位,注意要包括前面的0,還有修改了BASE的話記得改這里!
printf("\n");
}
int main()
{
for(int i=1; i<100; i++) //列印100以內的階乘來驗證我們的成果
jiechen(i);
return 0;
}
『貳』 C語言中,求1到100的和
前一個是先進行(s+i),再進行i++,當i=100時,循環一次s+i之後i=101,退出循環;此時即使計算1+2+---+100;
後一個是先進行i++,再進行s+i,當i=100時,滿足循環要求,繼續循環,s+i,當i=101時s加了一次i,再退出循環的,所以才會出現你的那種情況,多加了101。
『叄』 c語言必背100代碼有哪些
/*輸出9*9口訣。共9行9列,i控制行,j控制列。*/
#include "stdio.h"
main()
{int i,j,result;
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,佔3位*/
}
printf("
");/*每一行後換行*/
}
}
(3)c語言100擴展閱讀:
C語言的字元串其實就是以'