for循環(huán)中遇到的小問題
#include <stdio.h>
int main()
{
? ? //定義三位數(shù)num,個(gè)位數(shù)sd,十位數(shù)td,百位數(shù)hd
? ? int num, sd, td, hd;
? ? //循環(huán)所有三位數(shù)
? ? for(num = 100;num < 1000;num++)
? ? {
? ? ? ? //獲取三位數(shù)字num百位上的數(shù)字
? ? ? ? hd = num / 100;
? ? ? ? //獲取三位數(shù)字num十位上的數(shù)字
? ? ? ? td = (num - hd * 100)/ 10;
? ? ? ? //獲取三位數(shù)字num個(gè)位上的數(shù)字
? ? ? ? sd = num % 10;
? ? ? ? //水仙花數(shù)的條件是什么?
? ? ? ? if(num == hd*hd*hd+td*td*td+sd*sd*sd);
? ? ? ? {
? ? ? ? ? ? printf("水仙花數(shù)字:%d\n", num); ? ?
? ? ? ? }
? ? }
? ? return 0;
如果在第16條(if(num == )那條)后面加; 程序執(zhí)行后結(jié)果就是100到999 ? 如果不加; ? 結(jié)果就是題目的水仙花數(shù)字 ?153 370 371 407 ? 這是為什么 ? 是因?yàn)榧恿朔痔?hào)后屏幕輸出就與上面的計(jì)算不屬于一條了么
2017-10-24
在C語(yǔ)言中,一個(gè)分號(hào)代表一條語(yǔ)句,因?yàn)閕f只能控制一個(gè)語(yǔ)句,那么在這個(gè)程序中,如果if后面加分號(hào),那么if控制一個(gè)空語(yǔ)句,也就是說if語(yǔ)句判斷條件成立后執(zhí)行空語(yǔ)句(沒有輸出),然后再執(zhí)行printf語(yǔ)句,所以得到是結(jié)果就是100到999;不加分號(hào),if控制printf語(yǔ)句,條件成立執(zhí)行if輸出語(yǔ)句,得到水仙花數(shù)。
2017-10-24
按照語(yǔ)法,if()后面不用加分號(hào)。僅供參考。
2017-10-24
第十六條,你加上;后,表示這條語(yǔ)句是一條獨(dú)立的語(yǔ)句,就是說它與下面的{printf···}這句沒關(guān)系了,程序的執(zhí)行順序就是執(zhí)行完if(就只是第十六條語(yǔ)句),再執(zhí)行下面的printf語(yǔ)句,print語(yǔ)句跟if語(yǔ)句成了并列關(guān)系,所以程序一直執(zhí)行輸出語(yǔ)句
如果不加的話,printf語(yǔ)句就是if里面的語(yǔ)句,就會(huì)在if條件成立后才執(zhí)行,就類似從屬關(guān)系,它只聽if的指示,條件成立才進(jìn)行,不然不進(jìn)行