导读
接着我的C语言算法练习:第1题 - 第5题
第六题:
求a+aa+aaa+a..a的值,其中a是一个数字,几个数字相加由键盘控制。
程序:
#include
main()
{
int unit, num;
int total=0, add=0;
printf("please input unit and number\n");
scanf("%d %d", &unit, &num);
printf("unit=%d, number=%d\n", unit, num);
for(int i=1; i<=num; i++)
{
add=add+unit; //计算新数
total=total+add; //累加总数
unit=unit*10;
printf("%d\n", add);
}
printf("a+aa+...=%d\n", total);
}
运行:
第七题:
一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?
程序:
#include
main()
{
float sn=100, hn=sn/2;
int m;
printf("请输入反弹次数:");
scanf("%d", &m);
for(int n=2; n<=m; n++)
{
sn=sn+2*hn; //第n次落地时共经历的米数
hn=hn/2; //第n此反跳高度
printf("the %-2d is %-9f meters\n", n, hn);
}
printf("\nthe total of road is %f\n", sn);
}
运行:
第八题:
求一个3X3矩阵对角线元素之和
程序:
#include
main()
{
int a[3][3], sum1=0, sum2=0;
int i, j, n=1;
printf("please input nine number:\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("第%d个数是:", n);
scanf("%d", &a[i][j]);
n=n+1;
}
}
printf("\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%-3d", a[i][j]);
// 输出矩阵
}
printf("\n\n");
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i+j==2)
{
sum1=sum1+a[i][j];
// 撇对角线之和
}
}
}
for(i=0; i<3; i++)
{
sum2=sum2+a[i][i];
// 捺对角线之和
}
printf("撇对角线之和是:%d\n", sum1);
printf("捺对角线之和是:%d\n", sum2);
}
运行:
第九题:
给一个不多于五位的正整数,要求:1. 求它是几位数;2. 逆序打印出各位数字。
程序:
#include
main()
{
long a, b, c, d, e, x;
printf("\nplease input a number\n");
scanf("%ld", &x);
a=x/10000; //万位
b=x%10000/1000; //千位
c=x%1000/100; //百位
d=x%100/10; //十位
e=x%10; //个位
if(a!=0)
{
printf("there are 5:\n %ld %ld %ld %ld %ld\n", e, d, c, b, a);
}
else if(b!=0)
{
printf("there are 4:\n %ld %ld %ld %ld\n", e, d, c, b);
}
else if(b!=0)
{
printf("there are 3:\n %ld %ld %ld\n", e, d, c);
}
else if(b!=0)
{
printf("there are 2:\n %ld %ld\n", e, d);
}
else if(b!=0)
{
printf("there are 1:\n %ld\n", e);
}
}
运行:
第十题:
输入一个整数,求出它的所有因子。
程序:
#include
main()
{
int x, i;
printf("\n请输入一个正整数\n");
scanf("%d", &x);
printf("\n所有因子:\n");
for(i=1; i<=x; i++)
{
if(x%i==0)
{
printf("%3d", i);
}
}
}
运行:
to be continued...