由于昨天版幅有限,不能够把第6章所有的习题写下,现在写下剩余的题目。
12.编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为2的前8次幂,然后打印出它们的值。使用for循环来设置值;为了变化,使用do while循环来显示这些值。
#include <stdio.h>
#include <math.h>
int main(void)
{
int sz[8];//设置大小为8的int型数组
int n;
for (n=0;n<8;n++)
{
sz[n]=pow(2,n);//读入数据
}
n--;
do
{
printf("%5d",sz[n]);//打印数据
n--;
} while (n>=0);
printf("\n");
return 0;
}
13.编写一个程序,创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值。程序把第二个数组的元素设置为第一个数组元素的累积和。例如,第二个数组的第4个元素应该等于第一个数组的前4个元素的和。最后,使用一个循环来显示两个数组中的内容,第一个数组在一行中显示,而第二个数组智能光的每个元素在第一个数组的对应元素之下进行显示。
#include <stdio.h>
int main(void)
{
int sa[8],sb[8];//sa[8]用户输入数组,sb[8]累加和数组
int i;
int sum=0;
printf("请用户输入8个数字:");
for(i=0;i<8;i++)
scanf("%d",&sa[i]);
for(i=0;i<8;i++)//输出sa数组元素
printf("%4d",sa[i]);
printf("\n");
sb[0]=sa[0];
for(i=1;i<8;i++)//累加计算sb数组
sb[i]=sa[i]+sb[i-1];
for(i=0;i<8;i++)
printf("%4d",sb[i]);
printf("\n");
return 0;
}
14.编写一个程序读入一行输入,然手方向打印改行。
#include <stdio.h>
int main(void)
{
char lin[255];
int n;//记录该行有多长
int i;
printf("输入一行:");
gets(lin);//这里使用gets()而不用scanf()是因为gets()遇到换行符才返回
n=strlen(lin);
printf("反向输出该行:");
for(i=n-1;i>=0;i--)
printf("%c",lin[i]);
printf("\n");
return 0;
}
15.Daphne以10%的单利息投资了100美元(也就是说,每年投资赢得的利息等于原始投资的10%)。Deirdre则以每年5%的复合利息投资了100美元(也就是说,利息是当前结余的5%,其中包括以前的利息。)编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne,并且显示出到那是的两个人的投资额。
#include <stdio.h>
int main(void)
{
int i=1;//过了i年
int sum_a=0,sum_b=100;
do
{
sum_a=100*0.1*i+100;//Daphne
sum_b+=sum_b*0.05;//Deirdre
i++;
} while (sum_b<=sum_a);//当Deirdre的投资超过Daphne时退出循环
printf("计算得需要 %d 年Deirdre的投资额才会超过Daphne.\n",i);
printf("Daphne的投资额是 %d.\n",sum_a);
printf("Deirdre的投资额是 %d.\n",sum_b);
return 0;
}
16.Chuckie Lucky赢了100万美元,他把它存入一个每年赢得8%的账户。在每年的最后一天,Chuckie取出10万美元。编写一个程序,计算需要多少年 Chuckie就会清空他的账户。
#include <stdio.h>
int main(void)
{
int i=1;
float sum=1000000;//起始金额100万
do
{
sum+=sum*0.08-100000;//每年结余的钱
i++;
} while (sum>0);
printf("计算得需要 %d 年Chuckie就会清空他的账户.\n",i);
return 0;
}
欢迎讨论。<转载请注明出处>