① 这个C语言简单的文件操作代码怎么回事编译没有错误,但是运行就崩溃
编译没有错误只表示没有最基础的语法错误,但程序的逻辑错误是检查不出来的,两处有问题,一个是=NULL应该为==NULL,为啥就不解释了吧,第二处是ch=getchar(); fputc(ch,fp);这两行需要换下顺序。
② 请C++高手指点,为什么编译时候没有错,但是执行的时候显示有一个错误呢
1.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)<*(p+j)) {min=*(p+i);x=i;j++;}
else {min=*(p+j);x=j;i=j;j++;}
}
如果p[0]最小,那么都只执行if复合语句,结果i不变,j递增,循环……
for循环修改为:
for(i=0,j=i+1;i<9, j<10;)
2.
for(i=0,j=i+1;i<9;)
{
if(*(p+i)>*(p+j)) {max=*(p+i);d=i;j++;}
else {max=*(p+j);d=j;i=j+1;i=j;j++;}
}
同1,如果p[0]最大……同样修改下for
3.
for(p=a;p<(p+10);p++)
cout<<*p<<" ";
在最后的输出中,你看看你的条件设为什么了。
p < p+10
这条件在内存检测完之前永久成立,检测完几乎是不可能的,现在内存都以G为单位!
修改for循环为:
for(p=a;p<(a+10);p++)
解决问题。
另外,这段代码的功能似乎成了:
输入10个数字,将其中最小及最大的数修改为第一个数。。。
强大!~~~
③ C语言,这个代码编译时候没有错误,执行的时候总是说出错。用的是VC++6.0
pre没有初值,把h=NULL改为h=pre=NULL;应该没问题了。
④ C语言问题(很急,我写的程序编译没问题但执行出来却什么都没有)
C语言判断相等要两个等号,改成i==j试试
⑤ C语言程序,编译没有错误,执行时出错。问题在哪
#include<stdio.h>
intmax(inta,intb);
intmain(void)
{
inta,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("maxis%d ",c);
return0;
}
intmax(inta,intb)
{
returna>b?a:b;
}
max函数未定义
⑥ 代码没有错误为什么编译不出来
编译器是一种翻译程序,它用于将源语言(即用某种程序设计语言写成的)程序翻译为目标语言(即用二进制数表示的伪机器代码写成的)程序。后者在windows操作系统平台下,其文件的扩展名通常为.obj。该文件通常还要经过进一步的连接,生成可执行文件(机器代码写成的程序,文件扩展名为.exe)。通常有两种方式进行这种翻译,一种是编译,另一种是解释。后者并不生成可执行文件,只是翻译一条语句、执行一条语句。这两种方式相编译比解释运行的速度要快得多。
2、 编译过程的5个阶段:词法分析;语法分析;语义分析与中间代码产生;优化;目标代码生成。
3、 在这五个阶段中,词法分析的任务是识别源程序中的单词是否有误,编译程序中实现这种功能的部分一般称为词法分析器。在编译器中,词法分析器通常仅作为语法分析程序的一个子程序以便在它需要单词符号时调用。在这一编译阶段中发现的源程序错误,称为词法错误。
4、 语法分析阶段的目的是识别出源程序的语法结构(即语句或句子)是否错误,所以有时又常为句子分析。编译程序中负责这一功能的程序称为语法分析器或语法分析程序。在这一阶段中发现的错误称为语法错误。
5、 C语言的(源)程序必须经过编译才能生成目标代码,再经过链接才能运行。PASCAL语言、FORTRAN语言的源程序也要经过这样的过程。通常将C、PASCAL、FORTRAN这样的语言统称为高级语言。而将最终的可执行程序称为机器语言程序。
6、 在编译C语言程序的过程中,发现源程序中的一个标识符过长,超过了编译程序允许的范围,这个错误应在词法分析阶段发现,这种错误通常被称作词法错误。
词法分析器的任务是以词法规则为依据对输入的源程序进行单词及其属性的识别,识别出一个个单词符号。
词法分析的输入是源程序,输出是一个个单词的特殊符号,称为Token(标记或符号)。
语法分析器的类型有:自下而上、自上而下。常用的语法分析器有:递归下降分析方法是一种自上而下分析方法, 算符优先分析法属于自下而上分析方法,LR分析法属于自下而上分析方法等等。
通常用正规文法或正规式来描述程序设计语言的词法规则,而使用上下文无关文法来描述程序设计语言的语法规则。
语法分析阶段中,处理的输入数据是来自词法分析阶段的单词符号。它们是词法分析。
⑦ C语言代码没有编译没有错误,但在运行程序看结果,结果却显示不全
输出性别那行的 格式 应当用 %c 。
你用了 %s, 因 printf() 找不到 '\0', 输出流就乱了。
⑧ 感觉代码没有错呀,为什么结果总是空白但当输入的数相差很大时候结果就会显示。
这是数组的问题。
数组可以用相同名字引用一系列变量,并用数字来识别它们。在许多场合,可用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理各种情况。数组有上界和下界,数组的元素在上下界内是连续的,因为Visual Basic对每一个索引值都分配空间,所以不要不切实际地声明一个太大的数组。
一个数组中的所有元素应该具有相同的数据类型。当然,当数据类型为变体型时,各个元素能够包含不同种类的数据(对象、字符串、数值等等),可以声明任何基本数据类型的数组,包括用户定义的类型和对象变量。
在Visual Basic中有两种类型的数组,固定大小的数组和在运行中大小可以改变的动态数组。
有三种方法声明固定大小的数组。
在模块的声明段,用Public语句声明公用数组。
在模块的声明段,用Private语句声明数组。
在过程中,用Private语句声明局部数组。
希望我能帮助你解疑释惑。
⑨ 请问以下C语言 代码有什么问题,为什么编译后执行什么都没有显示
i 要设定一个初始值