C語言中沒有像C++中那樣的bool類型,在邏輯判斷中,C認(rèn)為一個(gè)值如果是非零就表示為真true,對(duì)這個(gè)值求邏輯非!,就是假false,比如說int a=5; if(a);就表示是真,if(!a)就是假,!a的值是零,a的值不變。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),榆社企業(yè)網(wǎng)站建設(shè),榆社品牌網(wǎng)站建設(shè),網(wǎng)站定制,榆社網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,榆社網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
int
a;
if(a){...}
//當(dāng)a不等于0時(shí),執(zhí)行括號(hào)里面的程序段
if(a!=0){...}
//當(dāng)a不等于0時(shí),執(zhí)行括號(hào)里面的程序段
0可以是判斷真假的,但并不是所有的0都是判斷真假的作用。
0在邏輯運(yùn)算中代表假,在數(shù)學(xué)運(yùn)算中就是0.
year%4==0 中的0就是數(shù)字,==左邊的是余數(shù),判斷余數(shù)是不是和0相等。
你這個(gè)代碼應(yīng)該是嵌套在if語句中的吧?if(year%4==0 ),
如果year=2008,那么year%4的值就是0,0是數(shù)學(xué)運(yùn)算的數(shù)值,也就是說year%4==0為真。也就是if(1)。
如果year=2009,那么year%4的值就是1,也就是說year%4==0為假。也就是if(0),這里的0代表假,是邏輯運(yùn)算。
如果 flag = 1,那么 if(flag){函數(shù)體} 里面的函數(shù)體會(huì)執(zhí)行,如果flag = 0 那么大括號(hào)里面的函數(shù)體就不會(huì)執(zhí)行了
1)if(p[i].nhp[j].nh) 這個(gè)地方產(chǎn)生 " 運(yùn)行提示:需要邏輯0或非0在MAIN函數(shù)中"的錯(cuò)誤?。?!
修改為if(greaterThan( p[i].nh,p[j].nh,10))
然后定義函數(shù)
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]; 這個(gè)地方,不對(duì),編譯不過去。
修改為p[i].signal[i]=signal[i];p[i].nh=nh[i];
3)printf("%d",p[i].signal);不對(duì),改為for(i=0;i10;i++)printf("%d ",p[i].signal[i]);
4)main(){} 這個(gè)地方不規(guī)范,標(biāo)準(zhǔn)為 int main(){ ...... return 0;}
5)struct swith
{
int signal[10];
double nh[10];
} 這個(gè)地方加分號(hào),不然 會(huì)變成main函數(shù)的返回值類型;
6) printf("%f",nh[i]);雖然可能不會(huì)出錯(cuò),但是格式是不對(duì)的,應(yīng)改為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)
比較兩個(gè)數(shù)組的大小;返回1 表示 ab,0 表示a=b
從第一個(gè)開始,比較前n個(gè)元素;
出現(xiàn)第一個(gè)大于,真; 返回 1;
第一個(gè)小于,假; 返回 0;
一直等于,假; 返回 0;
一直相等,見到第一個(gè)大于,后面不要再判斷了,就是greaterThan 返回 1(真)
一直相等,見到第一個(gè)小于,后面不要再判斷了,絕對(duì)不是greaterThan 返回 0(假)
永遠(yuǎn)相等,一定不是greaterThan, 返回 0(假)
*/
int greaterThan( int *a,int *b,int n){
for(i=0;in;i++)
if(a[i]b[i]return 1; /*第一個(gè)大于,返回 1(真) */
else if(a[i]b[i])return 0; /*見到第一個(gè)小于,返回 0(假) */
return 0; /* 永遠(yuǎn)相等,返回 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;
}
/*
情況一,程序正常執(zhí)行結(jié)束,返回給系統(tǒng)一個(gè)返回值0。
情況二,程序執(zhí)行過程中出現(xiàn)異常,系統(tǒng)得到一個(gè)非程序員定義的非0值(這個(gè)值的名稱有異議,存在認(rèn)為這就是返回值?和?這個(gè)不能叫返回值的兩種說法)。
情況三,沒有運(yùn)行時(shí)錯(cuò)誤,而是在創(chuàng)建或?qū)懳募r(shí)出現(xiàn)錯(cuò)誤從而直接return程序員定義的返回值(和return?0?不同,這是程序員通過判斷,自己定義的另一個(gè)非0值)。
*/