編程SN
『壹』 編程:求Sn=a+aa+aaa+...+aa....a 的值,其中a是一個數字。例如:2+22+222(此時n=3),n由鍵盤輸入.
#include <stdio.h>
#include <math.h>
void main()
{
printf ("\n請分別輸入a和n,用逗號隔開:");
int n=0;
int a=0;
scanf ("%d,%d",&a,&n);
int sum =a;
for (int i=2;i<=n;i++)
{
sum = 2 * sum + a*pow(10,i-1);
}
printf("%d\n",sum);
}
『貳』 如何編程讀取硬碟序列號SN
硬碟的序列號只能採用對硬碟控制器直接操作的方式進行讀取,也就是說只能
採用CPU的I/O指令操作硬碟控制器,讀取的方法如下面的C語言程序所示:
static int WaitIde()
{
int al;
while ((al=inp(0x1F7)) >=0x80) ;
return al;
}
static void ReadIDE()
{
int al;
int i;
WORD pw[256];
WaitIde();
outp(0x1F6,0xA0);
al = WaitIde();
if ((al&0x50)!=0x50) return;
outp(0x1F6,0xA0);
outp(0x1F7,0xEC);
al = WaitIde();
if ((al&0x58)!=0x58) return;
for (i=0;i< 256;i++)
pw[i] = inpw(0x1F0);
}
---- 上面的程序實際上讀取了保存在硬碟控制器內的全部信息,而序列號只是其中
的一部分,位於上面提到的 pw[] 數組的 10 至 20 元素內,即從 &pw[10] 開始的10個WORD內,每個WORD占兩個位元組,共佔用了20個位元組。由於該序列號保存時每個WORD的高、低位元組是非Intel順序,也就是說它的高位元組在前,低位元組在後,所以在使用時需要將高、低位元組顛倒一下,這樣就能得到完整的序列號。
『叄』 C語言編程:求Sn=a+aa+aaa+···+aa··a(n個a)的值,其中a和N鍵盤輸入
#include <stdio.h>
void main()
{
int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d%d",&a,&n);
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+...=%ld\n",sn);
}
『肆』 C語言編程編寫一程序, 求Sn= a+aa+aaa+…+aaa…aaa(n個a)的值,其中a是 1~9之間的一個數字............
#include<iostream>
//n+1代表的是位數,從0開始,即n=0代表一位
intgetValue(inta,intn){
inttemp=a;
while(n>0){
temp=temp*10+a;
n--;
}
returntemp;
}
intmain(){
usingnamespacestd;
inta,n,result=0;
inti=0;
cin>>a>>n;
for(;i<n;i++){
result+=getValue(a,i);
}
cout<<result<<endl;
return0;
}
注意:自己替換一下輸入輸出!C語言的輸入輸出比較麻煩所以,就換成了C++的寫法!總體的演算法不變