下面结合代码简单讲述一下c语言中常见的逻辑运算符与,或,非;常见的循环语句while,for,if,水仙花数
#include <stdio.h>
#include <stdlib.h>
int main()
{
/*
c语言的与运算,或运算,非运算
一 与运算
与运算:只有全为真时才为真。
当第一个为假时,该表达式即为假,这一特性极大便利了代码的书写,下面我举几个例子。
在JS中因为浏览器的不兼容性,有的浏览器支持某个属性而有的不支持,我们假设浏览器A支持属性a,浏览器B支持
那我们在代码中就可以这样写:
a&&表达式1;当有a时执行表达式1;
c语言中也可以这样写。
/
int a,b,c,d,max;
a=10;
b=5;
max=a;
c=(a>b)&&(max=a);
printf("%d\n",max);
//修改 a b 的大小关系
b=15;
printf("%d\n",max);
d=(a>b)&&(max=b);
printf("%d\n",max);
/
或运算:只要有一个表达式的值为真,条件为真
非运算:取反
下面写一个小程序来体现以上三种运算符
*/
//求1~100中既能整除x又能整除y
//求1~100中能整除x或者能整除y
//求1~100中既不能整除x又不能整除y
int x,y;
printf(“输入x,y\n”);
scanf("%d",&x);
scanf("%d",&y);
//1~100中既能整除x又能整除y的数num1
int num1=0;
//1~100中既不能整除x又不能整除y的数num2
int num2=0;
//1~100中能整除x或能整除y的数num3
int num3=0;
for(int i=1;i<=100;i++){
if(i%x0&&i%y0){
num1++;
}
if(i%x!=0||i%y!=0){
num2++;
}
if(i%x0||i%y0){
num3++;
}
}
printf(“既能整除x又能整除y的数有%d\n”,num1);
printf(“既不能整除x又不能整除y的数有%d\n”,num2);
//num1+num2的值合起来为100
printf(“能整除x或能整除y的数有%d\n”,num3);
}
此程序中新手易犯的错误:逻辑错误
a&&b 取反为 !a||!b 而非!a&&!b
while,for,if的 示例(水仙花数)
#include <stdio.h>
#include <stdlib.h>
int main()
{
/*
if语句与elseif的示例:
对学生成绩进行判定:
90 优秀
80 良好
=60 及格
<60 不及格
/
int grade;
printf(“请输入成绩:\n”);
scanf("%d",&grade);
if(grade>=90){
printf(“优秀\n”);
}else if(grade<90&&grade>=80){
printf(“良好\n”);
}else if(grade<80&&grade>=60){
printf(“及格\n”);
}else if(grade<60){
printf(“不及格\n”);
}
/
for语句实现1~100的累加
while语句实现1~100的累加
*/
int num1,num2;
num1=0;
num2=0;
for(int i=1;i<=100;i++){
num1+=i;
}
int j=1;
while(j<=100){
num2+=j;
j++;
//笔者在此犯了一个小错误j++漏写导致死循环程序无法往下执行
}
printf(“for语句实现1~100的累加的结果为%d\n”,num1);
printf(“while语句实现1~100的累加的结果为%d\n”,num2);
//以下示例实现水仙花数如1^3 + 5^3+ 3^3 = 153
/思路:水仙花数三位数所以范围100~999
x变量保存个位,y变量保存十位,z变量保存百位
for循环遍历100~999,判断水仙花数,输出
/
int x,y,z,num3;
x=0;
y=0;
z=0;
num3=0;
for(int k=100;k<=999;k++){
z=k/100;
y=(k%100)/10;
x=(k%100)%10;
if(k==(xxx+yyy+zzz)){
printf("%d\n",k);
num3++;
}
}
printf("%d\n",num3);
}