十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言中没有像C++中那样的bool类型,在逻辑判断中,C认为一个值如果是非零就表示为真true,对这个值求逻辑非!,就是假false,比如说int a=5; if(a);就表示是真,if(!a)就是假,!a的值是零,a的值不变。
创新互联是一家集网站建设,榆社企业网站建设,榆社品牌网站建设,网站定制,榆社网站建设报价,网络营销,网络优化,榆社网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
int
a;
if(a){...}
//当a不等于0时,执行括号里面的程序段
if(a!=0){...}
//当a不等于0时,执行括号里面的程序段
0可以是判断真假的,但并不是所有的0都是判断真假的作用。
0在逻辑运算中代表假,在数学运算中就是0.
year%4==0 中的0就是数字,==左边的是余数,判断余数是不是和0相等。
你这个代码应该是嵌套在if语句中的吧?if(year%4==0 ),
如果year=2008,那么year%4的值就是0,0是数学运算的数值,也就是说year%4==0为真。也就是if(1)。
如果year=2009,那么year%4的值就是1,也就是说year%4==0为假。也就是if(0),这里的0代表假,是逻辑运算。
如果 flag = 1,那么 if(flag){函数体} 里面的函数体会执行,如果flag = 0 那么大括号里面的函数体就不会执行了
1)if(p[i].nhp[j].nh) 这个地方产生 " 运行提示:需要逻辑0或非0在MAIN函数中"的错误!!!
修改为if(greaterThan( p[i].nh,p[j].nh,10))
然后定义函数
int greaterThan( int *a,int *b,int n){
for(i=0;in;i++)
if(a[i]b[i]return 1;
else if(a[i]b[i])return 0;
return 0;
};
2)p[i].signal=signal[i];p[i].nh=nh[i]; 这个地方,不对,编译不过去。
修改为p[i].signal[i]=signal[i];p[i].nh=nh[i];
3)printf("%d",p[i].signal);不对,改为for(i=0;i10;i++)printf("%d ",p[i].signal[i]);
4)main(){} 这个地方不规范,标准为 int main(){ ...... return 0;}
5)struct swith
{
int signal[10];
double nh[10];
} 这个地方加分号,不然 会变成main函数的返回值类型;
6) printf("%f",nh[i]);虽然可能不会出错,但是格式是不对的,应改为printf("%lf",nh[i]);
double === long float 所以 格式为 %lf, float 格式为%f
修改后大约如下
#include "stdio.h"
#include"math.h"
#include"stdlib.h"
struct swith{
int signal[10];
double nh[10];
};
/*int greaterThan( int *a,int *b,int n)
比较两个数组的大小;返回1 表示 ab,0 表示a=b
从第一个开始,比较前n个元素;
出现第一个大于,真; 返回 1;
第一个小于,假; 返回 0;
一直等于,假; 返回 0;
一直相等,见到第一个大于,后面不要再判断了,就是greaterThan 返回 1(真)
一直相等,见到第一个小于,后面不要再判断了,绝对不是greaterThan 返回 0(假)
永远相等,一定不是greaterThan, 返回 0(假)
*/
int greaterThan( int *a,int *b,int n){
for(i=0;in;i++)
if(a[i]b[i]return 1; /*第一个大于,返回 1(真) */
else if(a[i]b[i])return 0; /*见到第一个小于,返回 0(假) */
return 0; /* 永远相等,返回 0(假) */
};
int main()
{
int i,j,k=10,signal[10]={0,1,0,0,1,1,0,0,0,1};
double nh[10];
struct swith p[10],s;
for(i=0;ik;i++){
nh[i]=(double)rand()/(RAND_MAX+1.0);
printf("%lf",nh[i]);
}
for(i=0;ik;i++){
p[i].signal[i]=signal[i];
p[i].nh[i]=nh[i];
}
for(i=0;ik;i++)
{
for(j=0;jk;j++)
{
if(greaterThan(p[i].nh,p[j].nh,10))
{
s=p[i];
p[i]=p[j];
p[j]=s;
}
}
for(j=0;j10;j++)
printf("%d",p[i].signal[j]);
}
getch();
return 0;
}
/*
情况一,程序正常执行结束,返回给系统一个返回值0。
情况二,程序执行过程中出现异常,系统得到一个非程序员定义的非0值(这个值的名称有异议,存在认为这就是返回值 和 这个不能叫返回值的两种说法)。
情况三,没有运行时错误,而是在创建或写文件时出现错误从而直接return程序员定义的返回值(和return 0 不同,这是程序员通过判断,自己定义的另一个非0值)。
*/