c#发展

首页 » 常识 » 常识 » 蓝因子C语言条件判断语句
TUhjnbcbe - 2025/1/5 23:02:00
北京哪家医院皮肤科治白癜风好 https://disease.39.net/yldt/bjzkbdfyy/

涉及到的知识点有:程序的三种结构、条件分支语句、循环语句、求自然数的和、

求到之间所有的水仙花数、在屏幕输出一个等腰三角形、循环语句案例-窗口移动

例如:

#defineMAX说明定义的MAX是一个有符号的int

constlonga=u;说明定义的a是一个无符号的long

"a"字符串常量相当于a\0

a字符常量,字符常量只能是一个ASCII字符

int4个BYTE、2个WORD、1个DWORD

c语言中不能直接书写二进制,用8进制和16进制来替代(和默认的十进制)。

inta=;

intb=sizeof(a);

sizeof关键字作用是:得到某一数据类型在内存中占用的大小(内存大小没有负的),单位是:字节

sizeof不是函数,所以不需要包含任何头文件

其实呢,sizeof返回值的类型是size_t,size_t类型在32位操作系统下是一个无符号的整数。

在32位系统下,sizeof返回值是unsignedint,用%u;在64位系统下,unsignedlong,用%lu。

例如:

在32位系统下:

inta=;

printf("%u\n",sizeof(a));

在64位系统下:

inta=;

printf("%lu\n",sizeof(a));

-----------------------------------------------------------------------------

inta;等同于signedinta;

unsignedinta;

long在32位系统下是4个BYTE,在64位系统下是多少?windows是4个字节,linux是8个字节。

f等同于.0

-----------------------------------------------------------------------------

inta=a;//a=97,是可以存放的

chara=;//是不可以存放的,溢出了,最大放

2和2的区别在哪里?

2是字符2dASCII

2是整数2

""和区别在哪里?

100\0

是一个int型整数常量

-----------------------------------------------------------------------------

inta=a;//错误的写法!

chara=97;

printf("%d\n",a);//输出结果是97

printf("%c\n",a);//输出结果是字符a

abc

bcd(这里其实是回车+换行)

abc

bcd(只有换行,没有回车)

bcd(abc是被bcd重叠了,这叫回车)

回车键的由来:

键盘:

--------------------------------------------------打印头

------------------------

--

-回车键-

--

------------------------

在打字机上按回车键,打印头就会复位

=============================================================================

程序的三种结构:

1,顺序结构

2,分支结构

3,循环结构

=============================================================================

条件分支语句:

1、关系运算符:在c语言中0代表false,非0代表真。

关系运算符有:(小于)、(大于)、=(小于等于)、=(大于等于)、==(等于)、!=(不等于)

-----------------------------------------------------------------

-----------------------------

前四种优先级相同大于后两种优先级相同

0假

1真

34真

-34 真,非0就是真

条件运算符:(条件)?值1:值2

当条件成立时,表达式的值为1;当条件不成立时,表达式的值为2。

很多时候用问号来替代简单的if语句。

例如:求绝对值的例子

inti=-8;

intx=(i0)?-i:i;

-----------------------------------------------------------------------------

2、逻辑运算符:(逻辑与/and)、

(逻辑或/or)、!(逻辑非/not)

-----------------------------------------

---------------------

双目运算符(两边必须要有表达式叫双目)单目运算符

-----------------------------------------------------------------------------

3、1)单分支语句

if是条件分支语句:如果条件为真,则执行代码块中的代码。

if(条件)

{

代码块;

}

-----------------------------------------------------------------------------

2)双分支语句

ifelse是双分支语句:

if(条件)

{

代码块1;

}

else

{

代码块2;

}

-----------------------------------------------------------------------------

3)多重分支语句(多重if):else总是跟上面最近那个if配对(特别注意)

if(条件1)

{

代码块1;

}

elseif(条件2)

{

代码块2;

}

elseif(条件3)

{

代码块3;

}

else

{

代码块3;

}

例子如下:四则运算

#include

intmain()

{

inta;

intb;

charc;

printf("pleaseinputa:");

scanf("%d",a);

printf("pleaseinputb:");

scanf("%d",b);

printf("pleaseinputc:");

getchar();//把调用scanf时候用户输入的回车键吃掉

c=getchar();

//printf("a=%d,b=%d,c=%c\n",a,b,c);//打印结果测试下

if(c==+)

{

printf("%d\n",a+b);

}

elseif(c==-)

{

printf("%d\n",a-b);

}

elseif(c==*)

{

printf("%d\n",a*b);

}

elseif(c==/)

{

if(b!=0)

printf("%f\n",(double)a/b);

else

printf("error\n");

}

else

{

printf("inputerror\n");

}

return0;

}

-----------------------------------------------------------------------------

4)多重分支语句(多重选择:switch与break,default)

switch(量)

{

case值1:

语句1;

break;

case值2:

语句2;

break;

case值n:

语句n;

break;

default:

语句;//当所有case都不满足时,执行default下面的语句。

}

例子如下:四则运算

#include

intmain()

{

inta;

intb;

charc;

printf("pleaseinputa:");

scanf("%d",a);

printf("pleaseinputb:");

scanf("%d",b);

printf("pleaseinputc:");

getchar();//把调用scanf时候用户输入的回车键吃掉

c=getchar();

//printf("a=%d,b=%d,c=%c\n",a,b,c);//打印结果测试下

switch(c)

{

case+:

printf("%d\n",a+b);

break;

case-:

printf("%d\n",a-b);

break;

case*:

printf("%d\n",a*b);

break;

case/:

if(b!=0)

printf("%f\n",(double)a/b);

else

printf("error\n");

break;

default:

printf("inputerror\n");

}

return0;

}

注意:当条件特别复杂时用if;当条件简单,但分支很多时用switch。

-----------------------------------------------------------------------------

if、switch与?(问号)都是有条件分支语句;

无条件分支语句:goto

gotoend;//无条件跳转到标号end去执行代码

end://标号

但是不提倡大量使用goto,除非使用goto能大大简化代码量。

=============================================================================

循环语句:

while(条件)

{

代码块;

}

-----------------------------------------------------------------------------

continue语句

当循环遇到continue语句时,不再执行continue下面代码,而是直接返回到循环起始语句处继续执行循环。

(即当循环遇到continue时,就直接返回到开始重新判断条件的地方去了)

-----------------------------------------------------------------------------

break语句

当循环遇到break语句时,立刻终止循环,循环结束。

-----------------------------------------------------------------------------

dowhile

do

{

语句;

}while(条件);

-----------------------------------------------------------------------------

while是先判断条件,再决定是否循环

dowhile先循环,然后再判断条件

while可能一次都不循环,但是dowhile至少能循环一次。

注意:

while(a!=10);//该句话相当于while(a!=10)

{

;

}

相当于死循环,什么都没有干。

=============================================================================

小练习:求自然数的和。

用户可以任意输入一个正整数,求从1到这个整数之间所有自然数的和。

例如:输入5

1+2+3+4+5=15

代码如下:

#include

#pragmawarning(disable:)

intmain()

{

intsum=0;//用来保存计算自然数之和的变量

inta=10;

scanf("%d",a);

while(a0)

{

sum+=a;

a--;

}

printf("%d\n",sum);

return0;

}

-----------------------------------------------------------------------------

任意输入一个整数,假设用户输入了,程序运行输出百

如果用户输入了,程序输出千

如果用户输入了00,输出万

代码如下:

#include

#pragmawarning(disable:)

intmain()

{

inta=0;

scanf("%d",a);

intsum=0;//sum是一个计数器

while(a0)//c语言中%是取余运算,/是取整运算

{

sum++;

a/=10;

}

switch(sum)

{

case1:

printf("个\n");

break;

case2:

printf("十\n");

break;

case3:

printf("百\n");

break;

}

return0;

}

-----------------------------------------------------------------------------

小练习:求到之间所有的水仙花数。

水仙花数是什么?

一个数的百位的立方+十位的立方+个位的立方=这个数本身

例如:就是一个水仙花数

3*3*3+7*7*7+1*1*1=

代码如下:

#include

intmain()

{

inta;

for(a=;a0;a++)

{

inta1;//百位

inta2;//十位

inta3;//个位

a1=a/%10;//a/=5;5%10=5注意:/和%的优先级一样,则结合性从左到右

a2=a/10%10;//a/10=53;53%10=3

a3=a/1%10;//a/1=;%10=7

if((a1*a1*a1+a2*a2*a2+a3*a3*a3)==a)

printf("%d\n",a);

}

return0;

}

-----------------------------------------------------------------------------

九九乘法表

VS下的代码如下:

#include

intmain()

{

inta;

intb;

for(a=1;a10;a++)//外循环,控制行,即外循环决定有多少行

{

for(b=1;b=a;b++)//内循环,控制列,即内循环决定每一行有几个列,外循环每循环一次,内循环循环4次

{

printf("%d\t",a*b);

}

printf("\n");

}

return0;

}

-----------------------------------------------------------------------------

在屏幕输出一个等腰三角形

-------*-------

------***------

-----*****-----

----*******----

---*********---

--***********--

-*************-

不能用printf一行一行打印输出等腰三角形

printf("*\n");

printf("***\n");

printf("*****\n");

分析:

每一行的*和行号的关系是:行号*2-1

每一行的*和减号的关系是:行号-1;行号-2;行号-3;......;行号-行号

代码如下:

#include

#pragmawarning(disable:)

intmain()

{

inta;

intb;

intnum=0;

scanf("%d",num);

for(a=1;a=num;a++)//外循环,控制行,即外循环决定有多少行

{

for(b=0;bnum-a;b++)

{

printf("-");

}

for(b=0;ba*2-1;b++)//内循环,控制列,即内循环决定每一行有几个,外循环每循环一次,内循环循环num次

{

printf("*");

}

for(b=0;bnum-a;b++)

{

printf("-");

}

printf("\n");

}

return0;

}

=============================================================================

循环语句案例-窗口移动

代码如下:

#includestdio.h

#includeWindows.h//使用窗口移动,需要利用API函数,则需要包含一个头文件

intmain()

{

intx=;

inty=;

intstatus=0;//0代表从左往右跑,1代表从右往左跑。

intstatus1=0;//0代表从上往下跑,1代表从下往上跑。

intstatus2=1;//0代表x轴不动,1代表y轴不动

while(1)

{

SetWindowPos((HWND)0x,NULL,x,y,,,0);//这个函数可改变一个窗口的位置和大小

if(status==0status2==1)

x+=10;

if(x=0)

{

status1=0;

status2=0;

}

if(status1==0status2==0)

y+=10;

if(y=)

{

status=1;

status2=1;

}

if(status==1status2==1)

x-=10;

if(x=)

{

status1=1;

status2=0;

}

if(status1==1status2==0)

y-=10;

if(y=)

{

status=0;

status2=1;

}

//if(status==0status2==1)

//x+=10;

Sleep(20);//Sleep函数的功能是程序休眠,参数单位是毫秒,0ms代表1秒

}

/*

该函数的参数解释如下:

第一个参数:是窗口的句柄。句柄:是windows的一个概念,即所有的窗口都有一个唯一的编号,这个编号叫句柄。(注意句柄是16进制的)

如何得到某一个窗口的句柄呢?在vs的/工具选项/Spy++(间谍的意思)/查找窗口/查找程序工具/拖动到对应的窗口

第二个参数:默认写NULL。

第三个参数:是窗口位置的x坐标。

第四个参数:是窗口位置的y坐标。

第五个参数:是窗口宽度。

第六个参数:是窗口高度。

第七个参数:默认写0。

(0,0)左上角

------------------------------x轴

y轴

*/

return0;

}

或者代码这样:

#include

intmain()

{

intx=-10,y=0;

intstatus=0;//0代表从左往右,1代表从上往下,2代表从右往左,3代表从下往上

while(1)

{

if(x==0y==10)

status=0;

if(x==0y==10)

status=1;

if(x==0y==)

status=2;

if(x==0y==)

status=3;

if(status==0)

x+=10;

if(status==1)

y+=10;

if(status==2)

x-=10;

if(status==3)

y-=10;

SetWindowPos((HWND)0x0016C,NULL,x,y,,,0);

Sleep(20);

}

return0;

}

1
查看完整版本: 蓝因子C语言条件判断语句