明解c语言练习4-2我们可以看到题目:
编写一段程序,像右面这样读取两个整数的值,然后计算出他们之间所有整数的和。
上次我发了一段这个练习4-2的代码可以看一下
#include<stdio.h>
int main(void)
{
int a, b, max, min;
int sum = 0;
printf("请输入两个整数: ");
scanf("%d %d", &a, &b);
if (a >= b)
{
min = b;
max = a;
}
else
{
min = a;
max = b;
}
do
{
sum = sum + min;
min = min + 1;
}while (min <= max);
printf("这两个整数及其之间所有整数的和为%d.\n", sum);
return 0;
}
也可以用高中的等差数列求和公式来写出此代码:
#include<stdio.h>
int main()
{int a=0;
do{puts("请输入两个整数。");
int q;
int p;
printf("整数a:");scanf("%d",&q);
printf("整数b:");scanf("%d",&p);
int max=q;
int min=p;
if(p>q)
{max=p;
min=q;}
printf("大于等于%d小于等于%d的所有整数的和是%d",min,max,(max-min+1)*(max+min)/2);
printf("是否要继续\n");
printf("YES——0 NO——1:");
scanf("%d",&a);
}while(a==0);
return 0;
}
那么我们不由得想起高中某个经典数列{n²}我们是否可以想起如何用do语句来解决这个数列的前n项和呢?
那我们经过思考就可以打出循环:do{sum=sum+min*min;
min=(min+1);
}while(min<=max);
如此便得到代码:
#include<stdio.h>
int main()
{int retry;
puts("请输入两个整数。");
int a;
int b;
int sum=0;
printf("整数a:");scanf("%d",&a);
printf("整数b:");scanf("%d",&b);
int max=a;
int min=b;
if(b>=a)
{max=b;
min=a;}
do{sum=sum+min*min;
min=(min+1);
}while(min<=max);
printf("%d到%d的平方和为%d",a,b,sum);
return 0;
}
注意此代码第二个整数值不能太大,不然会输出为0
我们也可以想到高中学习的阶乘是否也可以用do语句来写呢?
我们仔细思考便得到循环:
do{sum*=a;
a--;
}while(a>0);
如此便得到代码:
#include<stdio.h>
int main()
{int a;
int sum=1;
printf("请输入一个正整数");
scanf("%d",&a);
do{sum*=a;
a--;
}while(a>0);
printf("该数的阶乘是%d",sum);
return 0;
}
该代码用于求出某个正整数的阶乘。
来自一位入门小白的见解。
标签:min,int,max,sum,明解,整数,入门篇,printf,2do From: https://blog.csdn.net/2401_87607041/article/details/143190087