C语言题,求高手指点!?
程序没有问题,但是数字太大后多次递归造成运行栈溢出,其实你不用递归,用一个数组从f(3)开始依次向f(4), f(5) 递推不就没有问题了,也不会溢出,速度也快得多
你算阶乘和x的n次幂的算法都有问题。
先说阶乘,应该是
y*=n*(n-1)
当n为3时y=3*2
当n为5时y=5*4*刚才的y.这样就没错了。要不你那个只是y=n*(n-1)
而x*=x*x就更不是算n次幂的方法了。
当x为5时,计算为x*=x*x是没问题的。这时x=125
但到了下一步,x=125*125*125=5^9,显然不对。应该定义一个m,一开始让m=x,然后m*=x*x才对。
最后程序应该是这样(只写了主要部分的)
double m = x;
for(i=2;i<=10;i++)
{
n+=2;
y*=n*(n-1);
m*=x*x;
z*=-1;
sum+=x*z/y;
}
你试一下吧
答案A 错误纠正
int p;
scanf("%d",&p);
--------------------------------
int *p,a;
p=&a;
scanf("%d",p);
--------------------------------------
以上两种都可以。
分析:编译器不会对“局部变量” 初始化,全局变量 会默认被初始化为0.
答案A 在使用指针变量P之前没有对其初始化,不能使用。
2. 答案B 错误纠正
int *s,k;
s=&k;
*s=100;
通A,都是指针在使用前没有初始化。
3.答案C 正确
4. 答案D 错误
s=p;是错误的
因为s是 一个整型数指针,而p是字符型指针。指针类型不同的两个变量不能赋值。
======================================================
希望我的回答对你有所帮助,很高兴和你一起学习和讨论C语言编程。
ABD有错误。D的错误为:int为4字节(一般),char为1字节,如果直接赋值,会导致3字节之后的内存空间被访问
关键点:
在指针使用前,必须确保指针指向的地址是初始化过或者有确定意义的地址。
A、B的指针都是空指针,D在c++中是不可能隐式转换的,会报错
CD都没问题,AB都是指针没有分配内存就使用
C语言题,求高手指点!?
答案A 错误纠正 int p;scanf("%d",&p);--- int *p,a;p=&a;scanf("%d",p);--- 以上两种都可以。分析:编译器不会对“局部变量” 初始化,全局变量 会默认被初始化为0.答案A 在使用指针变量P之前没有对其初始化,不能使用。2. 答案B 错误纠正 int *s,k;s=&k;s=100;通A,都...
一道关于C语言的题,求教,求指点。谢谢!
由于N值是确定的,那么M取值也很容易导出,比如N为6,那么M就只能取1,2,3,6(也就是可以整除N的素数,当然,1,6不是素数,也就是说除了本身和1以外,其它的取值都是素数)当N,M值确定时,X的取值就是M*1,M*2,M*3(也就是M乘以素数的值),为保证M是最大公约数,这里的素数是不能...
求c语言高手指点关于if函数的问题
这个问题有点意思。说实话,第一种写法是不被推荐的,因为第一个 if 的括号里面的意思是:先运算 a > 0 ,再运算 b > 0 ,最后取 b > 0 的值(真或假,即非0或0)作为 if 的判断条件。逗号也是 C 语言中的运算符,在 C 语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值...
c语言编程问题,求高手解答(高分)
一、第一行包含的文件不存在,这一行应该删除。二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:int main()三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:scanf("%d%d",&n,&k);...
C语言编程遇到问题,请求高手指点,是统计区间个数的问题
for(i=1;i<c;i++){ for(j=0;j<最大的个数;j++){ if(a[i]>minin&&a[i]<(minin+division)){ 存储链表 } } minin+=division;在链表中存储一个标记符 } 存储 因为不知道 大小 应该用链表
...输出结果不对,但是不知道错在哪里,求高手指点。
这是我的选择排序法:include<stdio.h>void xuanze(int *a,int len);#define size 10int main(){int shuzu[10],i;printf("请输入10个整数:\\n");for(i=0;i<size;i++){scanf("%d",&shuzu[i]);}xuanze(shuzu,size);printf("排序后:\\n");for(i=0;i<size;i++){printf("%5d...
C语言三个数求最大求高手指点
include<stdio.h> int max(int x,int y){ return x>y?x:y;} int main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);printf("%d\\n",max(max(a,b),c));return 0;}
求高手指点排列组合问题
1个fr,4个r 30种 1个fop,2个fr,2个r 12种 1个fop,3个fr 4种 2个fop,3个r 10种 2个fop,1个fr,1个r 12种 3个fop 1种 131个单词在这个语言里面
关于c语言整型数据的溢出问题~~求高手多指点~~
就可以得到原码。假设你是16位系统。100000000000000 求补=1 11111111111111+1=00..00 b就溢出为0了。不过现在都是32位系统了,int类型都是4个字节的都,a表示成00..00100000000000000了。楼主的的这个程序不能造成溢出。所以printf ("%d",b);打印出来的b应该是32768,也不是 -32768 ...
C语言知道经纬度求两地距离的题目,求高手指点哪里错了,对了再加分
最后的计算s的公式有问题,因为反余弦函数y=arccosx中,y的取值范围只能是-π\/2 ≤ y ≤ π\/2,而地球上两点间的夹角明显在0到180°之间,所以这个地方你还应该加上角度判断语句,另外你的R的单位是km,最后的结果页应该是km。