c语言编程问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程问题相关的知识,希望对你有一定的参考价值。
e=1+1/(2!)+1/(3!)…… 怎么求出最后一项小于10^-6的e的近似值。还有怎么求出前50项e的近似值。 求大神帮忙
-用循环控制要求几项的和:for ( i=0;i<50;i++ ) //这样可控制循环体执行50次,i=0 1 2 ... 49-先看每一项的计算,在循环体中可计算累乘,只要用一个变量即可:
double m=1; //累乘,所以初值为1
for ( i=0;i<50;i++ )
m*=(i+1); //第1次循环得1*(0+1)=1就是式子中第1项分母,
//第2次循环得1*(1+1)=2=2!就是式子中第2项分母,
//第3次循环得2!*(2+1)=6=3!就是式子中第3项分母,...,依此类推
-再用个变量计算累加和
double m=1;
double s=0; //累加和的初始值为0
for ( i=0;i<50;i++ )
m*=(i+1);
s+=(1/m); //第1次循环0+1/1,第2次循环1/1+1/2!,...,依此类推
经过循环后你就得到了50项e的近似值
-再看循环的结束条件,如果不是50项结束,而是最后一项小于10^-6,只需要修改上面程序循环的结束条件,那么程序变成:
double m=1,n=1,s=0;
for ( i=0;n>=1E-6;i++ ) m*=(i+1); n=1/m; s+=n;
循环结束后最后一项n小于1E-6 参考技术A 前50项即
int i;
double e = 0.0;
long term = 1;
for (i = 1; i <= 50; ++i)
e += 1.0 / term;
term *= i;
最后一项小于10^-6就是设置一个门限当term < 10^-6的时候终止循环
int i;
double e = 0.0;
long term = 1;
for (i = 1; term >= 10^-6; ++i)
e += 1.0 / term;
term *= i;
没调试,自己试试吧。 参考技术B 麻烦把问题描述清楚,这样会更好的帮助你解决问题。。。。
c语言问题
题目是输入一串英文,把每个单词的首字母变成大写 并输出
我写的是
#include <stdio.h>
#include <string.h>
#define NUM 100
main()
int i;
char c[NUM];
printf("请输入字符串:");
gets(c);
c[0]=c[0]-32;
for(i=0;i<NUM;i++)
if(c[i]=' ')
c[i+1]=c[i]-32;
puts(c);
不知道哪错了
#include <string.h>
#define NUM 100
main()
int i;
char c[NUM];
printf("请输入字符串:");
gets(c);
for (i=0;i<NUM;i++) /*用循环变量来控制数组的下标*/
if(c[i]>='a'&& c[i]<='z') c[i]=c[i]-32;/*判断数组元素是不是小写,是的话转换为大写*/
puts(c);
参考技术B #include <stdio.h>
#include <string.h>
#define NUM 100
void main()
int i;
char c[NUM];
printf("请输入字符串:");
gets(c);
c[0]=c[0]-32;
for(i=0;i<strlen(c);i++) // i 的上限要以字符串的实际长度为准
if(c[i]==' ') //逻辑判断要用两个"="号
c[i+1]=c[i+1]-32;
puts(c);
本回答被提问者和网友采纳 参考技术C #include <stdio.h>
#include <string.h>
#include <ctype.h>
#define NUM 100
main()
int i;
char c[NUM];
printf("请输入字符串:");
gets(c);
i=0;
if(islower(c[i]))
c[i]-=32;
while(c[i])
if(c[i]==' '&&c[i++]&&islower(c[i]))
c[i]-=32;
puts(c);
参考技术D 怎么回不了啊
以上是关于c语言编程问题的主要内容,如果未能解决你的问题,请参考以下文章