Linux中编译c文件
在Linux中编译c文件,gcc test.c -o test && ./test ,到这时就动不了了,我就只能按了ctrl + c,结束程序了求大神帮我解答一下,要是文件有错误,那要显示错误信息啊,不动了是怎么回事?
本来是 2 条命令,非要搞成一条,出了问题都扯不清楚。
像下面这样,第一条是编译,第 2 条是执行,一条一条地输入,看看究竟卡在第 1 还是第 2 条命令上。
gcc test.c -o test
./test 可以试试管道符{:10_256:} jackz007 发表于 2022-1-7 20:27
本来是 2 条命令,非要搞成一条,出了问题都扯不清楚。
像下面这样,第一条是编译,第 2...
大佬,这样我也试了,其实卡在了第二条命令上了,第一条通过了 乔宽 发表于 2022-1-7 20:38
大佬,这样我也试了,其实卡在了第二条命令上了,第一条通过了
那基本可以肯定是你代码的问题了,把 C 代码文本贴出来。注意,不要贴图片。 jackz007 发表于 2022-1-7 20:41
那基本可以肯定是你代码的问题了,把 C 代码文本贴出来。注意,不要贴图片。
#include <stdio.h>
int main(){
int y,m,d;
int x;
scanf("%d%d%d",&y,&m,&d);
scanf("%d",&x);
for(int i=0;i<x;i++){
d+=1;
switch(m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
if(d>31){
d=1;
m+=1;
}
break;
case 12:{
if(d>31){
d=1;
m+=1;
}
if(m==13){
m=1;
y+=1;
}
break;
}
case 6:
case 9:
case 11:
if(d>30){
d=1;
m+=1;
}
break;
case 2:
if(y%4==0&&y%100!=0||y%400==0){
if(d>29){
d=1;
m+=1;
}
}else{
if(d>28){
d=1;
m+=1;
}
}
}
}
printf("%d-%d-%d\n",y,m,d);
return 0;
}
在Dev-C++中还能正常运行的 乔宽 发表于 2022-1-7 20:47
在Dev-C++中还能正常运行的
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
2022 1 1 35
2022-2-1
D:\00.Excise\C> 在我这里是可以运行的,只是结果不对,给出你的测试样例。 jackz007 发表于 2022-1-7 21:10
在我这里是可以运行的,只是结果不对,给出你的测试样例。
谢谢大佬 本帖最后由 jackz007 于 2022-1-7 23:46 编辑
乔宽 发表于 2022-1-7 21:25
谢谢大佬
#include <stdio.h>
int md(int y , int m)
{
int d = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , r ;
r = d ;
if((! (y % 4) && y % 100) || ! (y % 400)) r ++ ;
return r ;
}
int main(void)
{
int d , m , x , y , dx ;
scanf("%d%d%d%d" , & y , & m , & d , & x) ;
for(d += x , dx = md(y , m) ; d > dx ; dx = md(y , m)) {
d -= dx ;
m ++ ;
if(m > 12) {
y ++ ;
m = 1 ;
}
}
printf("%d-%d-%d\n" , y , m , d) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
2022 1 1 31
2022-2-1
D:\00.Excise\C>x
2022 1 1 35
2022-2-5
D:\00.Excise\C> 来学习 了
感觉是程序问题 死循环?
来学习 了 {:10_256:} 开始学习 {:10_279:} 估计你的程序进入死循环了,./test是运行编译好的程序的意思 {:10_281:}{:10_281:}{:10_281:}
页:
[1]