主题:大一计算机专业C语言问题请教
顽皮小小猪
[专家分:0] 发布于 2008-04-17 20:10:00
1、求S=2*4*6*8*…*34
#include<stdio.h>
void main()
{
long double s,i=1;
s=2;
for(;s<34;)
{i=i*s;s=s+2;}
printf("%d\n",i);
}
我自己不管怎么改,要不就是出现负数,要不就与计算器算出来的相差太大了,计算器算出来是20位。。
2、使用循环编写以下图案,要求用户输入排数。
* * * *
* * *
* *
*
这个我跟本不知道怎么用循环写char类型的程序,还有 一个就是如果用户要你输出N个3的程序,会不会用到数学模型10^n*(3/9)?
3、使用二分迭代法求方程f(x)=2x^3-4x^2+3x-7=0的实根,直到 |Xn-Xn-1|<10^(-6)为止,n和n-1都为下标。
求求各位大哥了,小弟实在不知道怎么办了。。
回复列表 (共8个回复)
沙发
illusionjcw [专家分:1400] 发布于 2008-04-17 21:37:00
#include<stdio.h>
void main()
{
long double i=1;
int t=2;
for(int s=1;s<17;s++)
{
i=i*t;
t=t+2;
}
printf("%d\n",i);
}
这样我看着顺点
板凳
顽皮小小猪 [专家分:0] 发布于 2008-04-17 22:02:00
第2题有点问题:
就是问题是要求输出
*_*_*_*_*
_*_*_*_*_
__*_*_*__
___*_*___
____*____
要求输出排数
3 楼
顽皮小小猪 [专家分:0] 发布于 2008-04-17 22:05:00
前面中间后面都是空格,要求输入排数,输出图像。。。先谢谢了
4 楼
wyf181515335 [专家分:0] 发布于 2008-04-18 00:08:00
稍作改动
#include<stdio.h>
void main()
{
long double s=2,i=2,t;
s=2;
for(i=2;i<=17;i++)
{t=2*i;
s=s*t;}
printf("%f\n",s); //long double定义的是实型变量,
}
5 楼
顽皮小小猪 [专家分:0] 发布于 2008-04-18 13:22:00
第3题已经有人做出来了,程序仅供参考,。。。
首先方程只有一个实根。
因为:f(2)=-1<0;f(3)=20>0,所以方程在2和3之间必有一根。
又对函数f(x)求导得 f(x)'=6(x^2-(4/3)x+(4/9))+(1/3)恒大于0,说明函数f(x)递增,故方程有且仅有一解(实根,因为复根是成对出现的)。
接下来就是编程求解了:
#include<stdio.h>
#include<math.h> /* 包含fabs() */
const double ep=1e-6; /* 也可以用define 宏,但我建议你用const常变量 */
int main()
{
double a=2.0;
double b=3.0;
double mid=(a+b)/2;
double f1;
do
{
f1=2*mid*mid*mid-4*mid*mid+3*mid-7; /*计算新的函数值 */
if(f1>0) { /* 若大于0,则应mid左移 */
b=mid;
mid=(a+mid)/2;
}
else if(f1<0)/*mid右移 */
{
a=mid;
mid=(mid+b)/2;
}
else break; /* 等于0,则说明已取得真实根,但基本不可能,因为实际问题中往往不存在有理数根 */
}while(fabs(2*mid*mid*mid-4*mid*mid+3*mid-7-f1)>=ep);/* fabs(double) */
printf("the root is : %f\n",mid);
return 0;
}
注意:对double型的数,不能用乘方" ^ ",和abs(int)函数。
上述程序不知道是否正确。。但是希望谁能把第2题做起哈。。。谢谢~了先
6 楼
f-wind [专家分:1240] 发布于 2008-04-21 15:36:00
#include <stdio.h>
int main(void)
{
int n=0;
scanf("%d", &n);
for(int i=0; i<n; i++){
for(int j=0; j<i; j++)
printf(" ");
for(int k=0; k<(n-i); k++)
printf("* ");
printf("\n");
}
return 0;
}
7 楼
lizhi200404520 [专家分:0] 发布于 2008-04-25 21:37:00
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
long double i=1;
int s=2;
while(s<=34)
{
i=i*s;
if(s<34)
cout<<s<<"*";
else if(s=34)
cout<<s;
s=s+2;
}
cout<<endl;
cout<<i<<endl;
}
我写的,看看啊
8 楼
清爽的海风 [专家分:0] 发布于 2008-04-26 00:26:00
呵呵,刚才没事干看了看你的程序,其实第一个,你写的程序只有一个地方错了,稍做改动就行了,不用按楼上说的那样做大手术。
错误的原因就是因为你写的这个句子,因为你不理解“%d”是什么
printf("%d\n",i); //错误的根源
你改成这样就行了:
cout<<i<<endl;
这时,加个头函数就行了,加这个:
#include<iostream.h>
我来回复