c語言為什麼編譯沒錯執行有錯
⑴ 求解釋:為什麼有時在運行c語言時,會出現編譯無錯誤,而運行有錯誤呢
main函數中sign,tb沒有賦值,便使用。
palidorm(i);
prime(i);
修改後:
#include <stdio.h>
int parlidorm(int i);
int prime(int i);
int main() {
int m,n,i,t,sign,tb;
scanf("%d%d",&m,&n);
if(m<n){
t=m;
m=n;
n=t;
}
for(i=n;i<=m;i++)
{
sign = parlidorm(i);
tb = prime(i);
if(sign==1&&tb==1)
printf("%d ",i);
}
return 0;
}
int parlidorm(int i)
{
int sign=0,m=i,j,len=0;
char c[30];
while(m){
c[len++]=m%10;
m=m/10;
}
sign=1;
for(j=0;j<len/2&&sign;j++)
{
if(c[j]!=c[len-j-1])
sign=0;
}
return sign;
}
int prime(int i)
{
int j,tb=1;
for(j=2;j<i/2;j++)
{
if(i%j==0)
tb=0;
}
return tb;
}
⑵ 這個c語言的程序編譯沒問題,執行時候會出錯 怎麼回事
應該是printf
("sum
is
%f
\n",sum1);
破壞了程序的完整性.導致程序出錯
可以修改為printf
("sum
is
%f
\n",(double)sum1);
或者printf
("sum
is
%d\n",(double)sum1);
⑶ 為什麼C語言程序編譯正確但不能執行
這當然原因非常多,比如:編譯器編譯不夠嚴格、程序有很大的風險等等,最簡單的一個例子如下:
inta;
scanf("%d",a);
可以確定的一點是:一旦在運行中出現錯誤,大多是較為嚴重的錯誤,須引起重視,否則,一旦錯誤非常嚴重,必會導致許多嚴重的後果,如死機、卡屏甚至直接導致藍屏。
⑷ 這段C語言程序,為什麼編譯沒問題,但運行出問題了,錯在哪
因為沒有max函數的定義,只有聲明,編譯時編譯器只知道你跟它「說」有這么一個函數,它「相信」你,編譯通過了。但是執行的時候找不到
⑸ 為什麼C語言程序編譯正確但不能執行
因為你的c沒有初值,while循環無法進行。另外你的演算法也有問題,while循環可改為while(m%n!=0),循環結束後最小公約數時n。
⑹ c語言編譯時候沒錯,執行就報錯
第二行拼寫錯誤
是main
⑺ 為什麼我寫的C語言程序編譯時沒錯,運行時有錯誤
建議你下斷點,然後反復調試運行,肯定能找出問題所在。
我一遇到次類問題,都是這樣解決的。
⑻ c語言為什麼有時候編譯能過,運行卻出錯
棧溢出啊,還有佔位符格式什麼的,原因很多,編譯通過只是第一步
⑼ c語言編譯沒錯誤,但是執行不了,一執行就出錯,這是為什麼呢
你這個就叫「編譯錯誤」,確切地說是「鏈接錯誤」,不叫「運行時出錯」。
⑽ C語言編譯沒錯,運行報錯是怎麼回事啊
# include <stdio.h>
# define N 3
float aver(int data[],int);
int max, min;//全局變數定義有誤!
void main()
{
int a[N],i;
float av;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
av=aver(a,N);
printf("av=%f\n",av);
printf("max=%d\nmin=%d\n",max,min);
}
float aver(int data[],int n)
{
int m=1;
float avg=data[0];
max=min=data[0];
for(m=1;m<n;m++)
{
avg+=data[m];
if(data[m]>max)
max=data[m];
if(data[m]<min)
min=data[m];
}
avg/=n;
return avg;
}
