6-2 多项式求值
题目要求:
本题要求实现一个函数,计算阶数为n,系数为a[0] … a[n]的多项式f(x)=∑i=0n(a[i]×xi) 在x点的值。
代码如下:
double f( int n, double a[], double x ){
int cheng=1;
int i;
double sum=a[0];
for(i=1;i<=n;i++){
cheng=cheng*x;
sum=sum+cheng*a[i];
}
return sum;
}
本题思路:
1、注意好每个变量的类型,之前乘积写成了int型,然而x是double型,产生错误。
2、要判断好fx是怎么运作的,a[0]应该放到循环外直接赋值给sum。乘积的作用就是x的阶乘,i等于几就是几次阶乘。
6-7 统计某类完全平方数
题目要求:
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
代码如下:
int IsTheNumber ( const int N ){
int n;
n=N;
if(sqrt(n)-(int)sqrt(n)==0){
int num[10];
int i;
int temp;
for(i=0;i<10;i++){
num[i]=0;
}
while(n>=1){
temp=n%10;
num[temp]++;
n=n/10;
}
for(i=0;i<10;i++){
if(num[i]>=2){
return 1;
}
}
return 0;
}
else{
return 0;
}
}
本题思路:
1、代码中将N改成小n是因为直接用N会提示N是只读的,索性全改了。
2、先判断输入的N是否是完全平方数,给的main函数里有math的库,直接用sqrt就行。
3、我这里借助了一个数组,用来储存N中各个位上的数字分别有多少个,之后判断一下那个数字出现了2次以上就可以。
4、注意一下第一个return 0的位置,是查完所有num[0]~[9]发现不存在2个以上同一个数字后,才返回0。