主页 > 无人机 >C语言编程数列求和

C语言编程数列求和

作者: 时间:2020-07-04 420° 无人机
C语言编程数列求和
最低0.27元开通文库会员,查看完整内容>

原发布者:来晶晶tianyu

幻灯片42;
1.1编写程求下面数列40项的和。结4位小数。1,1/2^4,1/3^4,1/4^4,……,1/n^4,…中,^表示幂运算)

#include/*#include是C语言的预编译指令,表示包含stdio.h文件,sstdio.h文件中包含printf函数的说明*/
main()/*main表示主函数,每个C程序必须有一个main函数,函数体由大括弧括起来*/
{
intn;/*定义一个变量整形变量*/
doublesum=0,j;/*定义两个double型变量,由于sum要做累加,所以赋初值为0,注意此处不能写成doublefloat*/

for(n=1;n<=40;n++)/*这是一个循环语句for语句*/
{
j=n*n*n*n;/*此处是一个赋值语句,把每次求出的n的4次方的值赋给j
sum=sum+1/j;/*此处是一个累加求和并赋值的语句,求出的j值与上次保存的sum值累加后重新赋给sum*/

printf("%.4f",sum);/*输出变量sum的值,用%f表示输出实数,%.4f表示整数部分全部如数输出,小数部分只输出4位小数*/

如果用while循环怎么做这个题
#include
main()
{
intn;
doublesum=0,j;
n=1;
while(n<=40)
{
j=n*n*n*n;
sum=sum+1/j;
n=n+1;

printf("%.4f",sum);

如果用do--while循环怎么做这个题
#include
main()
{
intn;
doublesum=0,j;
n=1;
do
{
j=n*n*n*n;
sum=sum+1/j;
n=n+1;
while(n<=40);这是c语言的语法啊sum += double(b) / a等 sum = sum + double(b) / a
右边的sum表示变量sum的地址 在等号的左边所以也左值
所以是把 sum的值加 转换成double类型的b和a的商 储存于 sum变量的地址中
明白了吗?+=的意思就在字面上表示出来了,
inta+=intb表示inta=inta+intb, C语言的简洁
那句代码就是sum = sum + (double(b) / a)
基础还是要打扎实追问

理解了一点。但是这个式子不简便的写法是什么呢?sum=double(b)/a+?还有为什么括号只括起了b而没有像这个样子(b/a)?实再不太好理解,麻烦详细说一下,我是初学者。追答

b声明为了int类型, a也是int类型, 结果也是整型, 那么程序就不正确了. 这里的语法是C风格的强制类型转换, 可以写作(double)b也可以写作double(b), 目的是迫使编译器以浮点类型对待b, 这样算出来的sum类型也是一个浮点值. 其实不光可以对b做转换, 对a做强制浮点转换或者a和b都做都是可以的, 不过只要一个就够了.
计算中有一个操作数是浮点就会使用浮点计算指令, 如果两个都是整型就使用整型计算指令, 得不到浮点结果本回答被提问者采纳其实这个题目根用求出s,用担心它会超出int范
因为是数列,所以就要从数列规律上去找结果。
比如a=1,n=5,s=3.列竖式
1
11
111
1111
11111
------
12345
后3位是345.
个位是5,它是怎么计算出来的?a*n
十位是4,怎么算出来的?a*(n-1)+个的进位(如果有)
百位是3,怎么算出来的?a*(n-2)+低位的进位(如果有)
照这个规律,根本不用计算s。
定义一个数组int
sm[10].sm[0]保存个位,sm[1]保存十位数字就行了,。。。
我没有写出完整的程序,只是给你一个思路。自己理解一下,很好写出代码。遇到问题请教是好事。全排

#include

void swap(int a[], int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}

int sum(int array[], int n, int k) {
if (n == k) {
int out[5], i;
for (i = 0; i < 5; i++) {
out[i]=array[i];
}
printf("%d+%d+%d+%d+%d=%d\n",out[0], out[1], out[2], out[3], out[4],out[0] + out[1] + out[2] + out[3] + out[4]);
} else {
int j;
for (j = k; j < n; j++) {
swap(array, k, j);
sum(array, n, k + 1);
swap(array, j, k);
}
}
}

int main(){
int i, j;
for(i=0;i<15-4;i++){
int in[5];
for(j=0;j<5;j++){
in[j]=i+1+j;
}
sum(in, 5, 0);
}
}
C语言编程求和


全排列

#include

void swap(int a[], int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}

int sum(int array[], int n, int k) {
if (n == k) {
int out[5], i;
for (i = 0; i < 5; i++) {
out[i]=array[i];
}
printf("%d+%d+%d+%d+%d=%d\n",out[0], out[1], out[2], out[3], out[4],out[0] + out[1] + out[2] + out[3] + out[4]);
} else {
int j;
for (j = k; j < n; j++) {
swap(array, k, j);
sum(array, n, k + 1);
swap(array, j, k);
}
}
}

int main(){
int i, j;
for(i=0;i<15-4;i++){
int in[5];
for(j=0;j<5;j++){
in[j]=i+1+j;
}
sum(in, 5, 0);
}
}for(a=1,a<11,a++)
for(b=a+1,b<12,b++)
for(c=b+1,a<13,a++)
for(d=c+1,d<14,d++)
for(e=d+1,a<15,e++)
{
printf("m="%d,a+b+c+d+e);
}

个思路,代码可能有很写c了~#include
main()
{
int a,b,c,d,e,m;

for(a=b=c=d=e=1; a<15;a++)
for(;b<15;b++)
for(;c<15;c++)
for(;d<15;d++)
for(;e<15;e++)
{
{
if(a=b!=c!=d!=!e)
m=a+b+c+d+e;
}
printf("m=%d",m);
}
getch();
}
应该我没怎么我做过这题
/*********************************************************************************************
*

述:有数序列:2/1,3/2,5/3,8/5,13/8,21/13...求个数列的前20项之和(题)
*
*

者:紫
*
*
创建日期:2008年3月6日
*
*********************************************************************************************/
#include
void
main()
{
int
fm=1,fz=2,i,t;
//声明变量,分母fm、分子fn、for循环计数器i、过度数t
float
fs,sum=0;
//声明变量,分数fs(即fz/fm的值)、和sum
for(i=1;i<=20;i++)
{
fs=(float)fz/fm;
//求分数(即fz/fm的值)
sum+=fs;
//求和
t=fm;
//把原来的分母先分在t里,以便后面使用
fm=fz;
//原来的分子赋值给新分数的分母
fz=fz+t;
//新分数的分子等于原来的分数的分子加分母
}
printf("\n2/1,3/2,5/3,8/5,13/8,21/13,…这个数列的前20项之和为:%f\n",sum);
//打印结果
}让你下,会有帮助嘀
//2/1+3/2+5/3+8/5+13/8......这个数列的20项和
#include
using
namespace
std;
int
main()
{
float
a=1,b=2,c,sum=0;
for(c=1;c<=20;c++)
{sum=sum+b/a;
b=a+b;
a=b-a;
}
cout<<"2/1+3/2+5/3+8/5+13/8...前20项:"<
评论
0
0
加载更多
c语言程序设计求和
递归

#include
int factorial(int n) {
return n<=0?0:n+factorial(n-1);
}
int main(){
int total = 0;
for (int i=1;i<=20;i++)
total += factorial(i);

printf("result=%d\n",total );
}void main()
{
int m,n;
printf("请输入m和n:");
scanf("%d,%d",&m,&n);
printf("这数的的和为:");
z(m,n);
}

void z(int m,int n)
{
//求整数m的n阶乘和,嵌套调用求和函数f

int i,j;
float s1,s2,s=0;
for(i=1,s1=1;is1= (i+1)*s1;//m的阶乘m!

for(j=1,s2=1;js2= (j+1)*s2;//得到n的阶乘n!
s = f(s1,s2);
printf("%f",s);
}

float f(float s1,float s2)
{
float s;
s=s1+s2;
return s;
}
-------------------------------
不知道行不行试吧c程序设计问题(3)?

标签: c语言,程序设计

输入3,abcde 求:
#include"stdio.h"
move(char *str,int n)
{ char temp;int i;
temp=str[n-1];
for(i=n-i;i>0;i--)
str[i]=str[i-1];
str[0]=temp;
}
main()
{ char s[50];
int n,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++)
move(s,z);
printf("%s\n",s);
}
我在TC2.0上的得到结果是ddebd 书上给出的答案是却cdeba 这是为什么? 拜家帮我详细讲解下move函数的功能.

问题补充:
恩 这个for循环可能上打印错了.但是改成for(i=n-1;i>0;i--)
得到的是cdeab 就是二楼的这个代码我运行了下是cdeab .2008-12-02 17:45
这个可能是书上有问题2008-12-09 17:49用一个fun函求阶乘
#include
long fun(int i);
void main()
{ int n,i;
long Sn=0;
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
Sn+=fun(i);
printf("Sn=%ld\n",Sn);
}

long fun(int i)
{ if(i==1) return 1;
return i*fun(i-1);
}
数的方法往单又易懂
以后编多用函数#include "stdio.h"
main()
{
int i,p=1,sum=0;
for(i=1;i<=20;i++)
{
p=p*i;
sum=sum+p;
}
printf("%ld\n",sum);
}

结 268040729
输入三个数 将所有正数求和 用C语言怎么编程?
#include
void main()
{
int a,b,c,sum=0;
printf("入三个整:");
scanf("%d%d%d",&a,&b,&c);//这里输入时用
if (a>0)
sum=sum+a;
if (b>0)
sum=sum+b;
if (c>0)
sum=sum+c;
printf("abc数的和为sum=%d\n",sum);
}# include
void main()
{
signed int a[3],b[3];
int i,j=0,sum=0,n=1;
printf("现在进行三个数求和");
for (i=0;i<3;i++)
{
printf("\n请输%d个x=",n++);
scanf("%u",&a[i]);
if (a[i]>0)
{
b[j++]=a[i];
sum+=a[i];
}
}
printf("\n这三个正数的和=%d",sum);
}#include "stdio.h"
void main()
{int a[4],i,s=0;
printf("入三个数字");
for (i=0;i<3;i++)
scanf("%d",&a[i])/*输用空格*/;
for (i=0;i<3;i++)
{if(a[i]>0)
s+=a[i];
}
printf("所以正和为:%d\n",s);

}思路是输入3个数scanf("%d,%d,%d",&a,&b,&c);
判断正负数
若为负忽略,为正的数相加输出
很简单的#include

int main(void)
{
int i,a,s=0;
for (i = 0; i<3; i++) {
scanf("%d",&a);
s+=a>0?a:0;
}
printf("%d\n",s);
return 0;
}
上一篇:
下一篇:

中国食品科技网|广州友邦资讯科技招聘|深圳科技资讯|网站地图