6.編一個程序,輸入10個整數(shù),統(tǒng)計并輸出其中正數(shù)、負數(shù)和零的個數(shù)。
【解】輸入10個整數(shù),統(tǒng)計其中正數(shù)、負數(shù)和零的個數(shù)。程序引入3個計數(shù)器變量,用于統(tǒng)計大于以小于0和等于0的整數(shù)的個數(shù)。開始時,這3個計數(shù)器都置0,然后用循環(huán)逐一輸入10個整數(shù),并判定當前輸入的整數(shù)是大于0,或小于0,或等于0,并按判定結(jié)果累加相應計數(shù)器。最后,程序輸出這3個計數(shù)器的值。程序如下:
# include
main()
{ int i,d,n,z,p;/*變量定義*/
n=Z=p=0;
for(i=1;i<=10;i++) {
print(" 輸入第%d個整數(shù)", i);
scanf("%d",&d);
if(d<0)n++;
else if(d>0)p++;
else z++;
}
printf("負數(shù)有%d個,正數(shù)有%d個,零有%d個。\n",n,p,z);
}
7.編程序,按下列公式計算e的值(精度為1e-6):
e=1+1/1!+1/2!+1/3!+…+1/n!+…
【解】按e的冪級數(shù)展開式計算e的值。這是典型的求級數(shù)和計算問題。通常采用逐項計算,并累計的方法。計算新的項時,可用上一輪循環(huán)計算出的項,這能提高程序的效率。循環(huán)直至當前項的值小于精度要求結(jié)束。程序如下:
# include
main()
{ double e,t,i;/*變量定義*/
e=0.0;t=1.0;i=1.0;
while(t>=1.0e-6) {
e+=t;
t/= i;
i+= 1.0;
}
printf(”e=%.6f\n”, e);
}
8.編程序,按下列公式計算y的值(精度為1e-6):
y=∑1/r*r+1
【解】按所給公式計算數(shù)列的和。類似上一小題的解,逐項計算并累計。程序如下:
# include
main()
{ double y,r,t;/*變量定義*/
y=0.0;r=1.0;
while((t=1.0/(r*r+1.0))>=1.0e-6) {
y+=t;
r+=1.0;
}
printf("y=%.6f\n", y);
}
9.編一個程序顯示ASCII代碼0x20至ox6f的十進制數(shù)值及其對應字符。
【解】顯示ASCII代碼為十六進制0x20至ox6f的字符的十進制代碼值與其字符。程序可用一個循環(huán),讓變量i順序地取0X20至OX6f的值,并逐一輸出其十進制代碼和對應的字符,程序如下:
# include
main()
{ int i,k=0;
for(i=0x20; i<=0x6f;i++) {
if(k++== O)/*每行十個*/
printf("\n");
printf("=(%C)", i,i);
}
printf("\n");
}
10.用三種循環(huán)語句分別編寫程序顯示1至100的平方值。
【解】用三種循環(huán)語句分別編寫顯示1至100的平方值的程序。直接寫出3個程序如下:
(1) 用輸循環(huán)實現(xiàn)的程序
# include
main() /*用for循環(huán)*/
{ int i,k=0;
for(i=l;i<=100;i++) {
if(k++%5==0) /*每行五個*/
printf("\n");
printf("=*==]",i,i,i*i);
}
printf("\n");
}
(2) 用while循環(huán)實現(xiàn)的程序
# include
main() /*用 while循環(huán)*/
{ int i,k=0 ;
i=1;
while(<=100){
if(k++%5==0)/*每行五個*/
printf("\n");
printf("=*==]", i,i,i*i);
1++;
}
printf("\n");
}
(3) 用do-while循環(huán)實現(xiàn)的程序
# include
main() /*用do-while循環(huán)*/
{ int i, k=0 ;
i=1;
do{
if(k++%5==0) /*每行五個*/
printf("\n");
printf("=*==]",i,i,i*i);
1++;
} while(<=100);
printf("\n");
}