这个C语言怎么回事?总是出现不了order=1的情况,上来就从order=2开始

作者&投稿:董姚 (若有异议请与网页底部的电邮联系)
C语言order的用法~

C程序是从main开始执行的,与上下顺序没什么关系,自定义的子程序只有在使用到的时候才会调用的,至于num1和num2与XY的关系嘛,其实就是变量与参数的关系,order程序要想运行就需要两个参数,就是x和y,就是定义函数时候的那两个,调用程序是必须把这两个参数的值确定了,就是在main里边的num1和num2。

#include "stdafx.h"
#include
#include
#include
#include
#define l sizeof(struct book) //貌似很简单,但是太容易混淆了,建议修改成 #define SIZE_BOOK sizeof(struct book)
struct book
{
char book_name[20];
int price;
struct book *next;//表示这是一个链表,所以,不要跟数组混淆,你应该用链表的方式调用,而不是使用数组的方式,避免这些块分配不连续时出现奇怪的值的现象
};
struct book *order(struct book *p)
{
int i,j;
struct book temp;
for(i=0;i<9;i++)//此处是希望将一个10个对象的数组元素通过值进行排序,但是请注意两点:1:进入的参数应该是一个struct book的数组的首地址;2:长度至少是10,你的main程序中用的是4个循环,所以就算你分配了4次也会出现越界,而且此处使用死数字也极不方便重复使用
for(j=i+1;j<10;j++)
{
if(p[i].price>p[j].price)
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}
return(p);
}
void main(void)
{
struct book *p,*head,*first;
p=(struct book*)malloc(l);//请注意,此处只分配了一次空间,next需要你指定或者重新类似分配
int i;
head=NULL;
first=NULL;
first=p;
printf("input book information:
");
flushall();
for(i=0;i<4;i++)
{
printf("book name:");
scanf("%s",&p->book_name);
printf("price:");
scanf("%d",&p->price);
p->next=head;//此处第一次就将null给了next,但是第二次就是指向自己了,产生一个永远也不可能完结的循环
head=p;//而且p永远都是相同的一个,所以你的四次循环就是每次都将新值覆盖先前给的值,所以永远一样
}
//order(p);

for(i=0;i<4;i++)
{
printf("book name:");
printf("%s
",first->book_name);
printf("price:");
printf("%d
",first->price);
first=first->next;//永远都指回向自己了
}

getch();
}

for(m=1;m<=M;m++)
{for(i=0;i<=(M-1);i++)
if(stu[i].ord==m)
printf("number:%s,subject 1:%d,subject 2:%d,subject 3:%d,average:%d,order:%d\n",stu[i].stn,stu[i].s1,stu[i].s2,stu[i].s3,stu[i].ave,stu[i].ord);}
问题在这里.当if的条件不满足时,下面语句不执行,内循环就结束了.应该加一句控制else continue;以使内循环执行完.
for(i=0;i<=(M-1);i++)
s1_sum+=stu[i].s1;
s1_ave=s1_sum/M;
for(i=0;i<=(M-1);i++)
s2_sum+=stu[i].s2;
s2_ave=s2_sum/M;
for(i=0;i<=19;i++) 对了.这里i<=19是怎么回事?
s3_sum+=stu[i].s3;
s3_ave=s3_sum/M;


c语言到底是怎么回事
3. C语言功能齐全C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的编游戏,编3D游戏,做数据库,做联众世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。4. C语言...

c语言是怎么回事
C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用...

C语言错误,怎么回事?
一、错误信息解析:1、error,表示这是一条出错信息。 C语言信息一般有error(出错)和warning(警告)两种。 error是编译器遇到了致命错误,无法继续进行编译,必须修改。 warning是C语言编译器找到了一个可能非法的位置,但不影响编译,程序还能运行,有可能运行出错,也可能不影响。error必须修改,而部分warn...

c语言出现'''是怎么回事啊?
C语言出现expected identifier or '('是出现了编写错误,Error Message:Compilation failed with errors:q2\/frac.c:32:1: expected identifier or '('在这段程序中:void fr_reduce(struct frac *a) {int g = gcd((*a).num, (*a).denom);(*a).num = ((*a).num \/ g);(*a).denom...

请问谁知道什么叫做:C语言. 知道的请介绍
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上...

c语言运行到一半出现error是怎么回事呢?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该...

c语言问题:出现'unexpected end of file found”是怎么回事呀?
通常是大括号匹配出了问题:意思是:"发现意外的文件结束"end of file就是EOF是传输控制符,在C源文件里要是大括号没有‘’}‘’这个给他匹配完,那么在编译栈里的"{"就不能消去,出现EOF时栈不为空,于是有:'unexpected end of file found”就是文件本不应该结束的,但是它结束了,编译器不会...

C语言中的结合性是怎么回事?
就是先和左侧运算符结合运算,如果右结合,就是先和右侧的运算符结合运算,例如65+67-78,67就是+-共有的运算对象,那么67应该怎么运算呢?C语言规定,+-有相同优先级,具有左结合,那么67应该先与+结合在一起参与运算,得到一个运算结果,然后结果132与78参与下一步运算,电脑计算就是这么机械 ...

一个c语言的简单问题,c的赋值总是不成功,大家给看看怎么回事啊?
浮点数存储问题,对于不是2的负N次方的和可以表示的小数都无法在计算机当中精确表示。12.5的小数部分是0.5=0.5*1,即2的负1次方,是可以精确保存的,像0.125=0.5*0+0.25*0+0.125*1或0.625=0.5*1+0.25*0+0.125*1。像0.3永远无法用2的负N次方的和的精确表示,所以只能取近似值...

c语言写入位置时发生访问冲突怎么回事?
c语言 写入位置时发生访问冲突是设置错误造成的,解决方法为:1、用VS2013打开程序。2、按住CTRL+F5运行代码时会出现如下错误,其实代码本身并没有错误。3、在上图中点击调试按钮进行调试可以发现如下的错误,即内存写入错误。4、此时需要更改系统的栈保留空间大小,点击“项目”-“项目属性”。5、在项目...

月湖区19516261297: 这个C语言怎么老是运行不出来,错误在哪?
骑真复方: 现在我来回答一下吧: 参照下面本人的例子来说明一下: #include<AT89X51.h> #include<stdio.h> intmain(void) { SCON=0x50; TMOD=0x20; TCON=0x40; TH1=0xE8; TL1=0xE8; T1=1; TR1=1; while(1) { printf("HelloWorld!\n"); } return0; } 代码...

月湖区19516261297: 我win7的电脑,运行c语言程序为什么总显示有一个错误,0个警告,运行不了,怎么解决?
骑真复方: 原因可能有方面: 1、程序本身就有问题,你好好检查一下吧! 2、你应该是第一次编译通过了,然后将那个黑洞洞的窗口最小化了,然后再编译就是有错误了吧!建议编译后关掉那个小黑窗口,在编译就没有问题了!(程序既然绝对没有错,就是你忘记关掉便后后出来的小窗口)

月湖区19516261297: 这个c语言程序无法运行 出来总是这样子 咋办呀? 看图 求解 -
骑真复方: 程序出现这样的问题的原因可能有很多种,可能是内存问题,内存问题又包括内存越界,内存访问错误等;还可能是所引用库有问题.不过既然出现了这个问题,说明了你的程序已经编译链接通过了.排查这样的问题,还是单步调试,看堆栈吧.

月湖区19516261297: 为什么c语言总是显示一个错误0个警告? -
骑真复方: 这个错误是你没有正确配置VC6的编译工具路径,或者你的VC6缺少连接器程序导致的. 最简单的解决办法是不要使用VC6.0,这是一个20年前的IDE,已经严重过时,不兼容当前的C/C++标准,也不兼容Windows 7以上的操作系统.换用Code::Blocks或Visual Studio等现代IDE.

月湖区19516261297: 你好,我写的C语言程序字符串数组后面总是显示0,怎样把这个0去掉,让0不显示,谢谢 -
骑真复方: \0(ascii 0) 字符串结束标志,只要字符串数组大小够大,编译器会自动加上.如果在给数组赋值时,把每个字符单独用引号括起来.也会丢失'\0'.如:u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; 一般来说只是在内存中存在,输出时不会显示,没见到你的输出语句,无法判断

月湖区19516261297: C语言计算结果出现 - 0通常什么原因 -
骑真复方: 很正常.经常出现在double四舍五入到整数的时候.如果你把一个double的数强行用%.0lf输出,并且这个数在-0.4999...到0之间结果就是-0.要解决也简单,输出前判断是不是-0.499999...到0之间,如果是就输出个0,不是就正常输出

月湖区19516261297: 我的C语言程序为什么老是显示有错误,执行不了? -
骑真复方: 你是出现unable to open input file “cos.obj” 吧? 一个很简单的处理方法就是把TC安装到C盘下(最好是根目录). 现在网上下的一般都是压缩包吧?右键点它,再左键点“解压文件...”,选目录的时候就选“C:\”. 其实还有好多方法啦~~比...

月湖区19516261297: 简单C语言,程序显示没错误,但是总是运行不出来,为什么呢? -
骑真复方: 1.scanf("%d %d %d %d %d %d",&num[i]); 改成:for(i=0;i<6;i++) scanf("%d",&num[i]);2.for(i=1;i<=6;i++)改成for(i=0;i<6;i++) 数组下标是从0开始的,=6就越界了

月湖区19516261297: 我想问一下,我编写的C语言程序编译时老是出现 no relevant changes detect
骑真复方: 当程序内容没有任何变化,再次编译/链接 就会出现 “没有探测到程序有变化” 信息. 这不算错误,也不是警告,只是信息,可以不去管它,忽视它. 如果你给程序加一个空白,它就认为有变化,编译/链接 就不会出现这个信息.

月湖区19516261297: 用c语言编程产生*.o、*.c、*.exe这三种文件,用编译器运行就可以,但直接运行*.exe就不可以? -
骑真复方: 如果用软件的编译器,那要在Release模式下.exe文件才能单独运行

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网