對文件的讀和寫是最常用的文件操作。在C語言中提供了多種文件讀寫的函數(shù):
字符讀寫函數(shù) :fgetc和 fputc
字符串讀寫函數(shù):fgets和 fputs
數(shù)據(jù)塊讀寫函數(shù):freed和 fwrite
格式化讀寫函數(shù):fscanf 和fprinf
【案例描述】
編程實(shí)現(xiàn):輸入一個(gè)正整數(shù),輸出其為全部質(zhì)因數(shù)的乘積。
輸入:900
輸出:900=2×2×3×3×5×5
【案例分析】
輸出正整數(shù)m為其全部質(zhì)因數(shù)的乘積的基本思路是:
1、從最小的可能因子2開始搜索:k=2
2、如果m不能被k整除,則轉(zhuǎn)步驟4
3、輸出質(zhì)因數(shù)k,m=m/k,轉(zhuǎn)步驟2
4、k=k+1
5、如果k<=m,轉(zhuǎn)步驟2
6、結(jié)束
說明:
以上算法沒有判斷k是否為質(zhì)數(shù)。這是因?yàn)?,?dāng)找到最小的正整數(shù)k(k>1)是m的約數(shù)時(shí),k一定是質(zhì)數(shù)。如:m=900
(1)k=2,是900的因數(shù),也肯定是900的質(zhì)因數(shù):m=900/2=450
(2)2是450的質(zhì)因數(shù):m=450/2=225
(3)2不能整除255,k=k+1后k=3
(4)3是255的因數(shù),也是900的質(zhì)因數(shù):m=255/3=85
(5)3是85的質(zhì)因數(shù):m=85/3=25
(6)3不能整除25,k=k+1后k=4
(7)4不能整除25,k=k+1后k=5
(8)5是25的質(zhì)因數(shù),也是900的質(zhì)因數(shù):m=25/5=5
(9)5是5的質(zhì)因數(shù):m=5/5=1
(10)k<=m不再成立,輸出結(jié)束。
【參考代碼】
main()
{ int k,m,f=0; //f用于確定是否找到質(zhì)因數(shù)
scanf("%d",&m);
printf("%d=",m);
for(k=2;k<=m;k++)
for(;m%k==0;m/=k)
if(f==0){f=1;printf("%d",k);}
else printf("×%d",k);
}