在做三级上机的时候出的问题。。。
因为和答案想法不是很一样参考价值不大。。
下面是题目和程序。。。各位大大帮忙看哈~~~谢了
某级数的前两项A1=1,A2=1,以后各项具有如下关系:
An=An-2+2An-1(注:n-2与n-1为下标)
下列程序prog1.c的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn<M且Sn+1>=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsValue()函数来实现此功能, 最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。
请勿改动主函数main()和写函数writeDat()的内容。
#include<stdio.h>
int b[3];
void writeDat();
void jsValue( )
{
int i;
int a[1000000],s[100000];
a[0]=1;
a[1]=1;
for(i=2;i<100000;i++)
a[i]=a[i-2]+2*a[i-1];
for(i=0;i<100000;i++)
{s[i]=s[i-1]+s[i];
if(s[i]<100&&s[i+1]>=100)
b[0]=i;
if(s[i]<1000&&s[i+1]>=1000)
b[1]=i;
if(s[i]<10000&&s[i+1]>=10000)
b[2]=i;
}
}
void main()
{
jsValue( );
printf("M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],b[2]);
writeDat();
}
void writeDat()
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
fclose(fp);
}
void jsValue( )为我自己编的内容
其他是题目给出的。。。
参考资料:my smart brain, 同时庆祝我c++问题的采纳率终于突破了50% !!
c语言编程,编译无错,运行出错
1 你所谓的运行时问题,即栈溢出(stack overflow), 解决方法是使用c语言的malloc函数(相当于C++的new操作符)在堆上分配内存(当然最后根据输出文件的答案来看,你确实数据给大了)2 逻辑问题,如楼上各楼所说:s[i]=s[i-1]+A[i];而不是s[i]=s[i-1]+s[i];你中学数学知识都忘了。。。
c语言中输入一个程序后显示无错误,为什么不能运行
因为编译器所能检测到的错误信息是有限的,它能检测C语言的语法错误和语义错误,而逻辑错误一般是检测不出来的. 当你输入的程序语法和语义都没有出错但是逻辑出错时,编译会通过,但是运行的时候就通不过了,你需要重新检查你的代码,找出错误改正过来....
Keil或是伟福用C编写的程序,在编译时显示无错,但是仿真的时候发现有些...
c语言的编译器有优化选项,keil好象有九级,可设置,你那段代码可能被优化了,例如代码有重复,或者代码在程序运行过程中不可能被执行 你可以认真审查你的代码,或者把优化等级设置为0,如图
请问我这个C语言程序为何编译无错 但是一打开就提示有错误需要关闭呢...
if (*(p+i)<*(p+i+1))\/\/在这个被调函数中你的*p未赋值就在引用,是野指针。{ t=*(p+i);
c语言编译无错为什么运行不了
应该是:#include <stdio.h> <stdio.h>是系统带的头文件 “stdio.h”是自己定义的头文件
...结果大于原来的二倍小于三倍,这个程序怎么运行不了呢,编译无错...
void main(){ int i,j,k,m,n;for(i=1;i<=2;i++)for(j=0;j<=9;j++)for(k=2;k<=9;k++){ n=100*i+10*j+k;m=100*k+10*j+i;if(m>=2*n&&m<3*n){ printf("合适的数为: %d\\n", n);} }\/\/大括号应该加在这里,不然,整个三个循环跑完了才最后确定m,n的值...
全国计算机二级C语言考试只保存没有运行能得分么
对于填空改错题,编译后没运行,只要正确,会给分的。编译只能检查语法错误,对于逻辑错误是无法检查出来的!有时候没有错误,没有警告也可能输出和正确答案不相符的结 但是程序设计题,必须生成可执行文件.exe,仅仅进行编译生成的是.obj,程序设计题只承认输出结果,结果正确就给分,所以,程序设计题应该...
用C语言编写程序:sum=1+1\/2+1\/3+1\/4+...+1\/n
include<stdio.h> main(){ int n;double a,sum=0;printf("请输入N的值:");scanf("%d",&n);for(a=1;a<=n;a++)sum=sum+(1\/a);printf("1+1\/2+1\/3+1\/4+...1\/n的值是:%f\\n",sum);}
c语言全局变量问题。 现有2个文件,被放在同一个工程中。如果在两个文 ...
若两边都初始化了,那是定义,就是重定义了,逐文件编译时无错,但链接时会报错。若只有一边或两边都未初始化,vs.net及Devc++中实测这是可行的,编译器会把其中一处处理成定义,其他处认作声明。其实还可在不同文件中定义同名但类型不同的变量,不信可试试。
C语言源程序的编译过程包括哪三个阶段
语义分析阶段:检查源程序上有没有语义错误,在代码生成阶段收集类型信息 中间代码生成阶段:在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式 代码优化:这一阶段的任务是对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和...