谭浩强C语音程序设计代码示例第四章(新手入门笔记)
第一章包含参考书,在线编译工具,代码,注释等。
遵循共享互助原则
#include <stdio.h>
/*----------------------------(第五章 分支结构程序)--------------------------*/
/****************************************************************************
运算符:
1)关系运算符为双目运算符(左结合性);
2)&&(与运算)与||(或运算)为双目运算符,!(非运算)为单目运算符;
3)? : 条件运算符为三目运算符,表达式形式一般为——>表达式1?表达式2:表达式3
*****************************************************************************/
#if 1
/*eg5.1,求各种关系运算符的值,p78*/
int main(void)
{
char c = 'k';
int i = 1,j = 2,k = 3;
float x = 3e+5,y = 0.85;
printf("%d,%d\n",'a'+5<'c',-i-2*j>=k+1);//'a'+5为'e'大于'c'为假0,-1-2*2=-5 <= 3+1=4为假0
printf("%d,%d\n",1<j && j<5,x-5.25<=x+y);//应将 1<j<5 改写为 1<j && j<5(与运算)否则会报警告。
printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);//0,0 均为假
return 0;
}
#endif
#if 0
/*eg5.2,逻辑表达式运用,p79*/
/*遵循左结合性*/
int main(void)
{
char c = 'k';
int i = 1,j = 2,k = 3;
float x = 3e+5,y = 0.85;
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
//printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);//会有告警,修改如下,判断左右两式是否相等应用 “==”
printf("%d,%d\n",i==5&&c&&(j==8),x+y||i+j+k);
return 0;
}
#endif
/******************************************************************
if语句的三种形式:
1) if(表达式) 语句;
2) if(表达式)
语句1;
else
语句2;
3) if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
*******************************************************************/
#if 0
/*eg5.3,if(表达式) 语句;,p80*/
int main(void)
{
int a,b,max;
printf("\n input two numbers:\n");
scanf("%d %d",&a,&b);
max = a;
if(max < b) max = b;
printf("max = %d",max);
return 0;
}
#endif
#if 0
/*eg5.4,if else语句,p81*/
int main(void)
{
int a,b;
printf("input two numbers:\n");
scanf("%d %d",&a,&b);
if(a > b)
printf("max = %d\n",a);
else
printf("max = %d\n",b);
return 0;
}
#endif
#if 0
/*eg5.5,if elseif else语句,p82*/
int main(void)
{
char c;
printf("input a character:\n");
c = getchar();
if(c < 32) //输入 回车或TAB
printf("这是一个控制字符\n");
else if (c >= '0' && c <= '9') //输入 2 3 4
printf("这是一个数字\n");
else if (c >= 'A' && c <= 'Z') //输入 B C D
printf("这是一个大写字母\n");
else if (c >= 'a' && c <= 'z') //输入 b c d
printf("这是一个小写字母\n");
else //输入 / * -
printf("这是一个其他字符\n");
return 0;
}
#endif
/****************************************************************
if语句的嵌套:
if(表达式1)
if(表达式2)
语句1;
else
语句2;
else
语句3;
*****************************************************************/
#if 0
/*eg5.6,if嵌套,p84*/
/*比较两个数大小*/
int main(void)
{
int a,b;
printf("please input A,B:");
scanf("%d %d",&a,&b);
if(a != b){
if(a>b){
printf("A>B\n");
}
else {
printf("A<B\n");
}
}
else {
printf("A=B\n");
}
return 0;
}
#endif
#if 0
/*eg5.7,比较两个数大小,P84*/
int main(void)
{
int a,b;
printf("任意输入两个数:\n");
scanf("%d %d",&a,&b);
if(a == b)
printf("A=B\n");
else if (a > b)
printf("A>B\n");
else
printf("A<B\n");
return 0;
}
#endif
#if 0
/*eg5.8,条件表达式,p85*/
int main(void)
{
int a,b,max;
printf("\n输入任意两个数:\n");
scanf("%d %d",&a,&b);
max = a > b ? a : b;//条件表达式形式:表达式1?表达式2:表达式3
/*分析:倘若表达式1的结果为真,则输出表达式2的结果,反之输出表达式3的结果*/
printf("max = %d\n",max);
return 0;
}
#endif
/***************************************************************************************
注意:在Switch语句中最需要注意的就是break与continue的作用和区别:
1)共同点:两者都是用于终止循环的;
2)break:终止循环,结束当前选择的语句,跳出循环体(例如本示例中跳出switch循环),后面的
语句不在执行;
3)continue:终止循环,跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定
(不跳出循环体,一般常见于while循环或for循环)。
4)return:也是用于终止循环的,执行return操作,直接返回函数,所有该函数体内的代码(包括
循环体)都不会再执行。
参考文献:http://985.so/b026u
****************************************************************************************/
#if 0
#if 0
/*eg5.9,switch选择语句,p86*/
/*因为没有终止语句,因此后面的需要全部执行*/
int main(void)
{
int a;
printf("input integer number:\n");
scanf("%d",&a);
switch (a) {
case 1:printf("MOnday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:
printf("error\n");
}
return 0;
}
#else
/*eg5.10,带有终止语句的switch语句,p86*/
int main(void)
{
int a;
printf("input integer number:\n");
scanf("%d",&a);
switch (a) {
case 1:printf("MOnday\n");break;//注意break和continue用法的区别,(两者都是用于终止循环的)
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:
printf("error\n");
}
return 0;
}
#endif
#endif
#if 0
/*eg5.11,输入三个整数,输出最大数和最小数,p87*/
int main(void)
{
int a,b,c,max,min;
printf("input three numbers:\n");
scanf("%d %d %d",&a,&b,&c);
if(a>b){
max = a;
min = b;
}
else {
max = b;
min = a;
}
if(max < c)
max = c;
else{
if(min > c){
min = c;
}
}
printf("max = %d,min = %d\n",max,min);
return 0;
}
#endif
#if 0
/*eg5.12,四则运算,p88*/
int main(void)
{
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f %c %f",&a,&c,&b);
switch (c) {
case '+':printf("%f + %f = %f\n",a,b,a+b);break;
case '-':printf("%f - %f = %f\n",a,b,a-b);break;
case '*':printf("%f * %f = %f\n",a,b,a*b);break;
case '/':printf("%f / %f = %f\n",a,b,a/b);break;
default:
printf("input error\n");
}
return 0;
}
#endif