‘壹’ c语言调试错误
gotoxy()是TC的库函数,其他编译器一般没有的
vc环境下需自己构造此函数:
#include <conio.h>
#include <windows.h>
void gotoxy(int x,int y){
COORD c;
c.X=x-1;
c.Y=y-1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
‘贰’ C语言怎么老是会显示调试错误
for(i=n-1;i>0;i++) 这里应该是 --i 是自减 不是自增
‘叁’ 我的c语言程序编对了但是调试就出现这个错误为什么呢
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的
“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,
你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable Fils、Include Files、
Library Files、Source Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC
如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
关键是microsoft visual studio\ 后面的东西要相同。
‘肆’ C语言基础编程题,为什么这里调试会提示错误
Lcm需要使用gcd的返回值,所以gcd需要:
1 声明为int类型
2 增加return语句,把最大公约数的值返回去。
‘伍’ C语言调试程序出错。请大神解答。
linklistcreatLink(){
linklisthead,tail,q;
intx;
head=tail=NULL;
printf("输入整数数列(以空格分隔,0位为结束符): ");
scanf("%d",&x);
q=(linklist)malloc(sizeof(linknode));
q->data=x;
while(x!=0){
if(head==NULL)
head=tail=q;
else{
tail->next=q;//head和tail仅仅是linklist类型的指针,并没有分配实际的存储单元,所以用tai->next会出错。
tail=q;
}
scanf("%d",&x);
}
if(tail!=NULL)tail->next=NULL;
returnhead;
}
//修改后的代码
#include<stdio.h>
#include<stdlib.h>
structnode{
intdata;
structnode*next;
};
typedefstructnodelinknode;
typedeflinknode*linklist;
linklistcreatLink(){
linklisthead,p;
intx;
head=p=(linklist)malloc(sizeof(linknode));
printf("输入整数数列(以空格分隔,0位为结束符): ");
while(scanf("%d",&x)==1&&x){
p->next=(linklist)malloc(sizeof(linknode));
p->next->data=x;
p=p->next;
}
p->next=NULL;
returnhead;
}
voidprint(linklisthead){
linklistp=head->next;
printf("Listis: ");
while(p){
printf("%d",p->data);
p=p->next;
}
printf(" ");
}
voiddelLink(linklisthead){
linklistp=head,q;
while(p){
q=p;
p=p->next;
free(q);
}
}
intmain(){
linklisthead;
head=creatLink();
print(head);
delLink(head);
return0;
}
‘陆’ c语言调试正常运行出错怎么办
不建议在输入输出上太花时间,输入输出未来都是图形化/表单化的,这些根本用不着
你这里的具体什么错从代码看不出的,代码没有问题。猜测你输入两个数字没有用1,2方式写?你的输入代码要求必须两个数字在一行内写入,且逗号分隔
‘柒’ c语言程序调试出错
你的运行报错问题不是出在算法上。我也没仔细看你的排序算法,算法你自己把握把!
但你的代码有一个严重错误:
那就是在 int *sort(struct staff memb[])函数中的 int wl[10],sn[10]; 语句造成 sn数组是一函数的局部变量,而你在main函数中又去调用该局部变量,其实在main函数调用时,该数组已经销毁,所以出错了!
1.一种最简单但绝对不提倡的修改方法是:把 int wl[10],sn[10]; 改成 static int wl[10],sn[10]; 就可以了!(静态局部变量退出函数不销毁,但一般用指针还是可以访问到,但这样程序效果能实现,但是该方法不可取)
2.另外的一种方法是把sn数组设置成全局变量
3.还有一个办法是用malloc()函数在内存堆区申请分配指定size个字节的内存空间,方法是把
int wl[10],sn[10];
改成
intwl[10];
int*sn;
sn=(int*)malloc(sizeof(int)*10);
该方法在前面要加上 #include<stdlib.h>
附方法3代码:(时间关系,算法没有分析过)
#include<stdio.h>
#include<stdlib.h>
#include<fstream.h>
structstaff//定义结构体,num为职员编号,number为完成数量。质量qual中优=3良=2中=1.日期输入格式20160630
{
intnum;
charname[20];
intnumber;
intqual;
intdate;
}memb[10];//结构体大小为36
voidinput(staffmemb[])//输入职员信息并输入到文件中
{
charfname[80];
inti;
FILE*fp;
for(i=0;i<10;i++)
{
sprintf(fname,"memb%d.dat",i);
fp=fopen(fname,"w");
printf("输入职员信息 ");
printf("编号:");
scanf("%d",&memb[i].num);
printf("姓名:");
scanf("%s",&memb[i].name);
printf("数量:");
scanf("%d",&memb[i].number);
printf("质量:");
scanf("%d",&memb[i].qual);
printf("日期:");
scanf("%d",&memb[i].date);
fwrite(&memb[i],sizeof(memb),1,fp);
fclose(fp);
}
}
int*sort(structstaffmemb[])
{
intwl[10];
int*sn;
sn=(int*)malloc(sizeof(int)*10);
inti,t;
for(i=0;i<10;i++)
{
wl[i]=memb[i].number*memb[i].qual;
sn[i]=i;
}
for(i=0;i<9;i++)
{
if(wl[i]<wl[i+1])
{t=sn[i];sn[i]=sn[i+1];sn[i+1]=t;}
elseif(wl[i]=wl[i+1])
{
if(memb[i].number<memb[i+1].number)
{t=sn[i];sn[i]=sn[i+1];sn[i+1]=t;}
elseif(memb[i].number<memb[i+1].number)
{
if(memb[i].num>memb[i+1].num)
{t=sn[i];sn[i]=sn[i+1];sn[i+1]=t;}
}
}
}
returnsn;
}
intmain()
{
int*sn;
input(memb);
inti,j;
sn=sort(memb);
printf("职员工作量排序为");
for(i=0;i<10;i++)
{
j=sn[i];
printf("第%d名:编号:%d 姓名:%s ",i+1,memb[j].num,memb[j].name);
}
free(sn);
sn=NULL;
return0;
}
‘捌’ C语言编程老出错时什么原因
不是程序的问题 是VC配置的问题
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面
打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable Fils、Include Files、
Library Files、Source Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
‘玖’ 求助C语言。一调试就出错~~~~
printf("%s",str[i]);
%s,传入的应该是字符串的首地址。
如果要输出单个字符,应该用%c
printf("%c",str[i]);
.....
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[100];
int i;
printf("输入");
gets(str);
for(i=0;str[i]!='\0';i++)//条件i<=100,还是会输出许多无意义东西。应该把他改成字符串结束的标志,也就是null('\0');
{//if(str[i]!='\n')//这里的换行('\n')其实不会被gets函数记录,会被转化成null
printf("%c",str[i]);
}
}
‘拾’ 【求助!紧急】c语言调试问题,一直报错,求解
可稍作修改如下,已在VS2008中,调试通过,代码后面的注释是楼主源代码中的错误:
#include <stdio.h>
void input(float a[],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%f",&a[i]);
}
float average(float a[],int n)
{
int i;
float aver,sum=0;
for(i=0;i<n;i++)
sum+=a[i];
aver=sum/n;
return(aver);
}
void count(float a[],int n) //此处a,n未进行类型说明,a应该为数组
{
int i,A_count=0,B_count=0,C_count=0,D_count=0,losers_count=0;
for(i=0;i<n;i++)
{
if(a[i]>=90&&a[i]<=100)
A_count++;
else if(a[i]>=80)
B_count++;
else if(a[i]>=70)
C_count++;
else if(a[i]>=60)
D_count++;
else
losers_count++; /*case后面的值应该为“常量”,而不能是“表达式',所以用if……else 好点*/
}
printf("90-100:%d\n",A_count);
printf("80-89:%d\n",B_count);
printf("70-79:%d\n",C_count);
printf("60-69:%d\n",D_count);
printf("0-59:%d\n",losers_count);
}
void main()
{
float a[30],ave;
input(a,30);
ave=average(a,30);
printf("average=%f\n",ave);
count(a,30);//此处应该为count,而不是counnt
}
1>------ 已启动生成: 项目: Test, 配置: Debug Win32 ------
1>正在编译...
1>tttyyy.cpp
1>e:\test\test\tttyyy.cpp(6) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明
1>正在链接...
1>正在嵌入清单...
1>生成日志保存在“file://e:\Test\Test\Debug\BuildLog.htm”
1>Test - 0 个错误,1 个警告
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========