if-else
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
int a;
scanf("%d", &a);
if (a>80)
{
if (a>100)
{
printf("erro\n");
}
if (a>90)
{
printf("A\n");
}
else
{
printf("B\n");
}
}
else
{
if (a>70)
{
printf("C\n");
}
else
{
if (a>60)
{
printf("D\n");
}
else
{
printf("GG\n");
}
}
}
return 0;
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
int a;
scanf("%d", &a);
if (a>=90)
printf("A\n");
else if (a>=80)
printf("B\n");
else if (a>=70)
printf("C\n");
else if (a>=60)
printf("D\n");
else
printf("不及格\n");
}
switch-case
#include<stdio.h>
int main(int argc, char *argv[])
{
int a;
scanf("%d", &a);
switch(a)
{
case 3:
printf("Wednesday\n");
case 4:
printf("Thursday\n");
break;
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
case 7:
printf("Study day\n");
break;
default:
printf("error\n");
}
}
/* case 后必须是整型常量或字符常量,表达式也ok
switch(表达式1)
{
case 整型或字符型常量:
语句;
case 常量表达式:
语句;
case 常量2:
语句
default:
语句;
}
* 执行表达式1,
* 根据表达式的结果对case后的语句进行匹配,如果没有匹配的case 则选择default的语句
*
* 匹配成功后会从对应的case语句开始执行,如果有break,则直接结束switch,
* 否则顺序执行,继续执行后面的case,直到遇到break或switch结束
*
* 语句后加break可以保证case的独立型
* 最后一个语句可以不用break;
*
* case 语句的先后没有关系;
* */
-
注:区间范围问题用if 确定值的问题用switch
;只有一个分号,表示空语句;{} 这个是代码块的意思。
while()循环
V0.
#include<stdio.h>
#define N 0
#define M 100
int main(int argc, char *argv[])
{
int i = 0;
while (i<100); //循环体执行了 N - M 次
{
if (i%7 == 0) //0 1 99
{
printf("%d\t", i);
}
i++;
}
printf("\n");
}
/*
* while (表达式)
* {
* 循环体语句;
* }
* 先判断表达式真假,如果为真,执行语句循环体,
* 再判断表达式真假......
* while 中必须要改变表达式的值,表达式自己改变,循环体语句中改变:
* while (a--)
* {
* ;
* }
* while ()
* {
* a--;
* }
*
* while (){} 循环体中只有一条语句时,{}阔以省略
*
* while (1) //无限循环语句
* {
* ;
* }
* while (1) ;
*
* * ******************************************************** */
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i=0;
while (i++ <100)
{
if(i%7 == 0) //1 99 100
{
printf("%d\t", i);
}
}
printf("\n");
return 0;
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i = 0;
while (++i<100) // 1 2 99
{
if(i%7 == 0)
{
printf("%d\t", i);
}
}
}
do-while
#include<stdio.h>
int main(int argc, char *argv[])
{
int i;
i = 0;
do
{
if ((i%7) == 0)
{
printf("%d\t", i);
}
i++;
} while (i<100); //
printf("\n");
}
/*
do
{
循环体语句;
}while (条件表达式); //分号 分号 分号
* 先执行循环体,然后再判断条件表达式是否成立,yes则再次执行循环体
*这是一个至少执行一次的循环。
* * *********************************** */
特殊用法:
#include<stdio.h>
#define FUN {\
printf("hello world\n"); \
printf("hello define\n");\
}
#define FUN1 do\
{\
printf("hello world\n"); \
printf("hello define\n");\
}while (0)
int main(int argc, char *argv[])
{
int i;
i = 1;
if (1==i)
FUN1;
else
{
printf("hello ET\n");
printf("hello stupid human\n");
}
return 0;
}
for
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i, j;
i = 0;
j = 0;
for (i=0; i<6; i++)
{
printf("i====>%c: ", 'A'+i);
for (j=0; j<10; j++)
{
printf("j=%-3d", j);
}
printf("<====\n");
}
}
V1.
#include<stdio.h>
#define M 0
#define N 100
int main(int argc, char *argv[])
{
int i;
for (i=0; i<100; i++) //0 1 2 98 99 N-M
{
if (i%7 == 0)
{
printf("%d\t", i);
}
}
printf("\n");
}
/* ******************************************* *
* for (表达式1; 表达式2; 表达式3)
* {
* 循环体;
* }
* 表达式1;
* 判断表达式2是否为真,
* 假
* 结束for
* 真
* 执行 循环体 -->表达式3-->表达式2
*
*
for (; ; )
;
* ******************************************** */
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i;
i = 0;
for (; i<100; )
{
if (i%7 == 0)
{
printf("%d\t", i);
}
i++;
}
}
break cantinue
break:在死循环和case中使用,跳过本次循环还未执行的语句,提前结束for循环
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<6; i++)
{
printf("%c:i===> ", i+'A');
if (3==i)
{
break;
}
for (j=0; j<10; j++)
{
printf("j=");
if (5==j) //Q
{
break;
}
printf("%d", j);
printf(" ");
}
printf("<====\n");
}
}
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<6; i++)
{
printf("%c:i===> ", i+'A');
for (j=0; j<10; j++)
{
printf("j=");
if (3==i) //只对i=3时有影响
{
break;
}
printf("%d", j);
printf(" ");
}
printf("<====\n");
}
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i, j;
for (i=0; i<6; i++)
{
printf("%c:i===> ", i+'A');
if (3==i)
{
continue;
}
for (j=0; j<10; j++)
{
printf("j=");
if (5==j) //Q
{
break;
}
printf("%d", j);
printf(" ");
}
printf("<====\n");
}
}
contuine:只在循环中使用
跳出本次循环,只是提前结束本次循环
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i=0; i<10; i++)
{
printf("i=");
if (5==i)
{
continue;
}
printf("%d", i);
printf("___ ");
}
printf("\n");
}
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i, j;
i = 0;
j = 0;
for (i=0; i<6; i++)
{
printf("%c:i===> ", i+'A');
if (3==i)
{
continue;
}
for (j=0; j<10; j++)
{
printf("j=");
if (5==j)
{
continue;
}
printf("%d", j);
printf(" ");
}
printf("<====\n");
}
}
永远都不要使用的goto
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
int i;
i = 0;
flag:
printf("i=");
printf("%d", i);
printf(" ");
i++;
if (i<10)
{
goto flag;
}
printf("\n");
}
PS:宏定义的打广告:
#include<stdio.h>
#define __FASIGHT__
#define _qq1324318389_
#define mynameiswangxiaoming
#define __init__
#define _linux_ //这些只定义了前面半截,而没有实际的意义,可以用来打广告
_qq1324318389_ int __FASIGHT__ main(int argc, char *argv[])
{
int i;
__init__ i = 0;
while (i<100 mynameiswangxiaoming )
{
if (i%7 == 0)
{
_linux_ printf("%d\t", i);
}
}
printf("\n");
}