是这样的。
C语言中如果涉及到运算的话,如果涉及到的数据都是同一类型的,均按相同类型进行运算,结果也会取相同类型。
代码中的1/n明显都用整数运算,结果小于1,取整数结果就是0了(当n不为1时)
如果防止出错,可以把1/n写成10f/n 其中f表示的是浮点数常数的尾缀
或者使用强制转换为浮点数后再运算
如
s=s+1/(float)n;
抽象类的应用
package comtestsample;
/
1抽象类和最终类的使用
⑴ 定义一个抽象类Shape用于描述图形,具有“名称”(name)
属性以及计算其面积和周长的两个抽象方法GetArea()和GetLength()。
定义一个最终类Circle继承自类Shape,增加了一个描述半径的属性radius及带参的构造函数用于该类对象的初始化 *** 作,
同时实现了Shape类中的两个抽象方法来计算圆的面积和周长。
定义一个最终类Rectangle继承自类Shape,
增加了两个属性length和width用于描述矩形的长和宽及带参的构造函数用于完成对该类对象的初始化,
同时实现了Shape类中的两个抽象方法来计算矩形的面积和周长。
@author Administrator
/
public abstract class Shape {
public static double PI=314;
public String name;
public abstract double GetArea();
public abstract double GetLength();
}
=================================================
package comtestsample;
/
用于圆的子类
@author Administrator
/
public class Circle extends Shape {
private double radius;
public Circle(String name,double radius)
{
thisradius=radius;
thisname=name;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return PIradiusradius;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2PIradius;
}
}
===================================================
package comtestsample;
/
矩形
@author Administrator
/
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(String name,double length,double width)
{
thisname=name;
thislength=length;
thiswidth=width;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return lengthwidth;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2(length+width);
}
}
#include<stdioh>
#define N 10
void main() { FILE fp; int s1[N]={1,2,13,4,5,61,7,8,9,10},s2[N],i,n;
if ( fp=fopen("D:\\filetxt","w+" ) {
for ( i=0;i<N;i++ )fprintf(fp,"%d\n",s1[i]);
fclose(fp);
if ( fp=fopen("D:\\filetxt","r" ) {
n=0; while ( !feof(fp) ) { fscanf(fp,"%d",&s2[n]); if ( s2[n]%2==0 ) n++; }
fclose(fp);
for ( i=0;i<n;i++ ) printf("%d ",s2[i]); printf("\n");
} else printf("无法打开文件读取数据。\n");
}
简单说个算法
输入的时候是输入两个式子的系数,可以用#作为输入结束标志
char ch=‘0’;
while(ch!='#'-‘0’)
{
scanf(%c,&ch);
ch-='0';
}
上面的算法每个循环得到的ch里存放的就是实际的数值
想办法放到p,q数组里去就行了
p,q,s位数分别为pi,qi,si的话
si=pi+qi; //s的幂次必为p,q幂次之和
P、Q的x幂次相加存入S相应位置
至于输入系数的时候
输入没有特别要求的话可以按照x的升序排列
这样0次幂存入p[0],1次幂存入p[1],
三个数组都可以这样安排
方便计算同时可以获取最终式子项数,也就是(幂次+1),在si里
s(x)系数计算
x幂次之和m刚好对应s[ ]下标
for(m=0;m<=si;m++) //计算数组s[ ]
for(i=0;i<=m;i++)
s[m]=p[i]+q[m-i];
然后输出应该就可以了
大概就是这样吧
========================
源程序在这里,Win7+C-Free 50测试通过
先上截图
#include <stdioh>
#include <stringh>
#define MAXLEN 20 //数组长度
void input(); //输入P/Q
void mul(); //多项式乘法
void outputS(); //输出S
int main(void)
{
float p[MAXLEN],q[MAXLEN], //p,q输入元素为原多项式各项系数
s[MAXLEN<<2]; //s中元素为输出多项式
int sn,pn,qn; //分别为多项式的次数
system("cls");
printf("\n\n输入P(x)的次数(正整数):"); //输入P(x)
scanf("%d",&pn);
printf("\n输入P(x)各项系数,P(x)降幂排列:\n");
pn++; //项数=次数+1
input(p,pn);
printf("\n");
printf("\n\n输入Q(x)的次数(正整数):"); //输入Q(x)
scanf("%d",&qn);
printf("\n输入Q(x)各项系数,Q(x)降幂排列:\n");
qn++; //项数=次数+1
input(q,qn);
printf("\n");
sn=(pn+qn-2); //S多项式次数
int i; //S数组初始化
for (i=0;i<sn+1;i++)
s[i]=0;
mul(p,q,s,pn,qn); //做多项式乘法
outputS(s,sn+1); //输出S
printf("\n");
getch();
return 1;
}
void input(float p,int t)
{
int i;
for (i=0;i<t;i++) scanf("%f",&p[i]);
}
void mul(float p,float q,float s, int m, int n)
{
int i,j;
for (i=0;i<m;i++) //扫描P(x)系数
for (j=0;j<n;j++) //扫描Q(x)系数
s[i+j]+=p[i]q[j];
}
void outputS(float s,int t)
{
int i;
printf("\nS(x)各项系数是(S(x)降幂排列):\n");
for (i=0;i<t;i++)
printf("%2f\t",s[i]);
}
呼呼~~终于完成了~~
#include <stdioh>
int main (void)
{
int a[10]={11,22,33,44,55};
int i , j , n=5;
scarf("%d",&j);
//在这里补充程序
/------------------start----------------------/
/------1定义临时变量------/
int removeIndex = 0;
int removeArray[4] = {0,0,0,0};
/------2输入参数有效性判断------/
if(j<1)
{
return;
}
else if((j>=1)&&(j<=5))
{
removeIndex = j-1;
}
else
{
removeIndex = 4;
}
/------3删除数据,同时前移------/
for(i=0;i<n;i++)
{
if(i>=removeIndex)
{
removeArray[i] = a[i+1];
}
else
{
removeArray[i] = a[i];
}
}
n = n - 1;
/------4临时变量赋值到输出数组------/
for(i=0;i<n;i++)
{
a[i] = removeArray[i];
}
/------------------end----------------------/
for (i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
return 0 ;
}
ex1)
输入:2
输出:11 33 44 55
ex2)
输入:3
输出:11 22 44 55
ex3)
输入:6
输出:11 22 33 44
circle 圆?
radian 还是 radius 半径?
用圆形类 一个参数,求 矩形周长面积? 还是求圆形周长面积?
如果是求圆形面积周长,可以参考下边:
import javamathBigDecimal;
//圆形类
public class Circle {
//半径
private double radius = 0;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
thisradius = radius;
}
//获取面积 = π r r; 使用Math中的bigdecimal类进行小数数字计算,结果取值 两位小数,四舍五入
public double getArea(){
BigDecimal r = new BigDecimal(radius);
r = rmultiply(r)multiply(new BigDecimal(MathPI))setScale(2,BigDecimalROUND_HALF_UP);
return rdoubleValue();
}
//获取圆形周长 = π d = 2πr;用Math中的bigdecimal类进行小数数字计算,结果取值 两位小数,四舍五入
public double getCircumference(){
BigDecimal d = new BigDecimal(radius 2);
d = dmultiply(new BigDecimal(MathPI))setScale(2,BigDecimalROUND_HALF_UP);
return ddoubleValue();
}
}
以上就是关于C语言,这个程序出错是不是因为吧n定义为了int型,导致1/n都得0全部的内容,包括:C语言,这个程序出错是不是因为吧n定义为了int型,导致1/n都得0、现在需要以下JAVA程序代码 希望各位大大能够给予帮助 万分感谢 分数不是很高 希望大家能帮忙、用C语言编写读取文件,按照以下要求编写程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)