if
条件判断陈述。Boolean
Value)布林代数(Boolean algebra),具有真 (true) 与**伪 (false) **两种值,可用来表示是非对错的概念。
在程序语言中,程序流程控制的语法,例如 if
、for
和 while
等,所使用的条件陈述都需要用布林代数来描述。而有趣的是, C 与 C++因为语言特性和发展时机的不同,对於该怎麽实现布林代数的想法也有所不同。
上面的程序码,因为 C89 的规定,所以都会被判定为 false。不会印出任何结果。
int
型态不能完全表达布林代数的结果。_Bool
。stdbool.h
。里面定义了 bool
、true
、false
,让我们可以像C++ 一样的定义布林型别。_Bool
型别不需要引用其他库函式,直接就可以使用。而 bool
型别,则需要 #include <stdbool.h>
。switch
statementswitch (expression)
{
case constant1:
statements1;
break;
case constant2:
statements2
break;
…
default:
default statements;
}
首先,会先看看 switch
括号里的 expression
,取得 expression
的数值(或字元)之後,会一一与 case
设定的数字(或字元)比较,若符合,就会执行以下之 statement
,直到遇到 breaks
後离开 switch
区块(block)。若都没有符合得数值(或字元),就会执行 default
里的 statements
。default
可省略。
switch
statement flow chart使用者输入身高、体重,计算 BMI 值。
若 BMI 小於 18.5,显示***过轻***。
若 BMI 介於 18.5 到 24 之间,显示***体重正常***。
大於 24,则显示***过胖***。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float bmi, w, h; // declare in floating type
printf("Enter your weight(kg) and height(cm):\n");
scanf("%f %f", &w, &h);
bmi = w / ((h/100)*(h/100));
printf("BMI = %f\n\n", bmi);
if(bmi<=18.5){
printf("Underweight.\n");
}else if(bmi>18.5 && bmi <= 24){
printf("Normal!\n");
}else{
printf("Overweight!\n");
}
system("PAUSE");
return 0;
}
已知 2021 年为牛年,设计一程序,从今年推算输入年分之生肖为何?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int year;
printf("Please input a year: ");
scanf("%d", &year);
int this_year = 2021 % 12; // 2021 % 12 为牛年
switch((year%12)-this_year){
case 0:
printf("%d 年为牛年", year);
break;
case 1:
printf("%d 年为虎年", year);
break;
case 2:
printf("%d 年为兔年", year);
break;
case 3:
printf("%d 年为龙年", year);
break;
case 4:
printf("%d 年为蛇年", year);
break;
case 5:
printf("%d 年为马年", year);
break;
case 6:
printf("%d 年为羊年", year);
break;
case -5:
printf("%d 年为猴年", year);
break;
case -4:
printf("%d 年为鸡年", year);
break;
case -3:
printf("%d 年为狗年", year);
break;
case -2:
printf("%d 年为猪年", year);
break;
case -1:
printf("%d 年为鼠年", year);
break;
}
printf("\n\n");
system("PAUSE");
return 0;
}
某百货正在举行周年庆。顾客购物金额折扣如下:
请设计一程序,使用者输入购物金额,并在萤幕显示出
#include <stdio.h>
#include <stdlib.h>
int main()
{
int price, account;
printf("Enter a price: ");
scanf("%d", &price);
if(price >= 10000){
account = price * 30 / 100;
printf("打 3 折\n");
}else if(price >= 8000){
account = price * 0.65;
printf("打 65 折\n");
}else if(price >= 5000){
account = price * 0.8;
printf("打 8 折\n");
}else if(price >= 1000){
account = price * 0.9;
printf("打 9 折\n");
}else{
account = price;
printf("没有折扣\n");
}
printf("折扣後的金额为 %d\n", account);
printf("总共省下 %d\n\n", price-account);
system("PAUSE");
return 0;
}
for
loop (前测式)while
loop (前测式)do…while
loop (後测式)for loop
flow chartfor loop
步骤:
for(initialization_Statement; test_Expression; update_State){
// statements inside the body of loop
}
while loop
flow chartwhile loop 执行步骤:
while(test_Expression){
// the body of loop
}
do...while loop
flow chartwhile loop
差别在於前测式与後测式回圈:
do…while
後测式回圈至少执行一次。ref.
请设计一程序,使用者输入一正整数,并显示 1 + 2 + … + N 的总和。
如:输入 9 ,结果为 1~9 的总和。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, sum=0;
printf("Enter a number: ");
scanf("%d", &n);
for(int i=1; i <= n; i++){
sum += i;
}
printf("Summary of 1 ~ %d = %d\n\n", n, sum);
system("PAUSE");
return 0;
}
猜大小游戏(high or low),由电脑想定一个数字(1-1000),人来猜电脑想定的数。每人每次猜一个数,电脑则会回答:<答对> <太大> <太小>。
答对後在萤幕显示猜了几次才猜到正确答案。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int answer, n, count = 0;
srand( time(NULL) ); // 设定乱数种子
answer = (rand() % 1000) + 1; // 比较常写成这种模式 (rand()%(max-min+1))+min
/**while 写法**/
/*while(1){ // while(1) 代表无限回圈,但是切记,一定要设停止回圈的机制
printf("Enter your Answer: ");
scanf("%d", &n);
count++;
if(n == answer){
printf("CONGRA!\n\n");
break; // 跳出回圈,也就是停止无限回圈的机制
}else if(n < answer){
printf("Higher\n\n");
}else{
printf("Lower\n\n");
}
}*/
/**do while 写法**/
do{
printf("Enter your answer: ");
scanf("%d", &n);
count++;
if(n < answer){
printf("Higher\n\n");
}else if(n > answer){
printf("Lower\n\n");
}else{
printf("Congra!\n\n");
}
}while(n != answer);
printf("第 %d 次猜到结果\n", count);
}
C 语言的 stdlib.h 函式库里提供了 rand() 函式来产生乱数。
不过因为 rand() 函式是由它上一个数值来产出下一个乱数,如果不做任何设定,初值系统都预设为 0。
因此这个时候我们可以用 srand() 函式来改变一开始的乱数值(一样定义在 stdlib.h),srand() 需要一个参数作为 seed(种子)。
通常我们会已目前的时间当作乱数种子,使用 time() 函式,而 time() 定义在 time.h 函式库里。
可以参考以下范例
#include <stdio.h>
#include <stdlib.h> //乱数相关函数
#include <time.h>
void main() // 把 main function 改成 void 就可以省掉最後的 return 0
{
/** 第一种乱数范例 **/
// 先设定乱数种子
srand( time(NULL) ); //srand定义在stdlib里,用现在时间当作乱数种子
// 产生乱数
int x = rand();
printf("产生乱数 (基本)\n");
printf("x= %d\n", x);
/* 这个范例产生的乱数是一个整数,值介於 0~RAND_MAX 之间
不同系统定义的 RAND_MAX 有不同大小 */
printf("======\n");
system("PAUSE");
printf("\n");
// show RAND_MAX
printf("RAND_MAX = %d\n", RAND_MAX); // RAND_MAX 32767
/* This is completely useless to us. */
printf("======\n");
system("PAUSE");
printf("\n");
/** 第二种乱数范例 - 特定范围整数乱数 **/
// 指定乱数范围
int min = 1;
int max = 100;
// 产生 [min, max] 的整数乱数, min <= x <= max
int y = rand() % (max - min + 1) + min;
printf("产生特定范围整数乱数,范围:[%d,%d]\n", min, max);
printf("y = %d\n", y);
printf("======\n");
system("PAUSE");
printf("\n");
/** 第三种乱数范例 - [0,1) 浮点数乱数, 0 <= x < 1 **/
double z = (double) rand() / (RAND_MAX + 1.0);
printf("产生 [0,1) 范围浮点数乱数\n");
printf("z = %f\n", z);
printf("======\n");
system("PAUSE");
printf("\n");
/** 第四种乱数范例 - [min,max) 浮点数乱数, min <= x < max **/
double min_float = 3.6;
double max_float = 8.7;
double w = (max_float-min_float) * rand() / (RAND_MAX + 1.0) + min;
printf("产生特定范围浮点数乱数,范围:[%.2f,%.2f)\n", min_float, max_float);
printf("w = %f\n", w);
printf("======\n");
system("PAUSE");
printf("\n");
}
产生乱数 (基本)
x= 26378
======
请按任意键继续 . . .
RAND_MAX = 32767
======
请按任意键继续 . . .
产生特定范围整数乱数,范围:[1,100]
y = 84
======
请按任意键继续 . . .
产生 [0,1) 范围浮点数乱数
z = 0.412872
======
请按任意键继续 . . .
产生特定范围浮点数乱数,范围:[3.60,8.70)
w = 1.801700
======
请按任意键继续 . . .
Process returned 10 (0xA) execution time : 4.756 s
Press any key to continue.
请设计一程序,由使用者输入一整数,萤幕显示如下:
4
*
**
***
****
5
*
**
***
****
*****
以此类推
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i, j, num;
scanf("%d", &num);
printf("\n");
for(i = 0; i < num; i++){
for(j = 0; j <= i; j++){
printf("*");
}
printf("\n");
}
}
>>: 那些被忽略但很好用的 Web API / Battery
昨天我们已经做好事前准备了,那我们今天就回到views里面,来撰写我们的程序吧! 而我们这次使用的函...
想要制作一个假背包,利用按钮显示背包,再按下按钮关闭背包。 要使用GameObject.SetAct...
今天来介绍云端的管理,常常出现的三个名词,在先前的文章中,我应该也有使用过了一部分。这三个名词长的很...
什麽是 object-fit object-fit 是一个 CSS 属性,用於决定一个可替换 res...
今年的疫情蛮严重的,希望大家都过得安好,今天疫情已经降级, 希望疫情快点过去,能回到一些线下技术聚会...