C基础day4(2023.7.4)

一、Xmind整理:

 

二、课上练习:

1.练习1:

void main()
{
    int a=180;
    char c;
    c=(char)++a;
    printf("c=%d a=%d\n",c,a);
    char d=4;
    short e;
    e=(++d)++;
    printf("d=%d e=%d\n",d,e);   
}

2.练习2:

#include<stdio.h>
void main(   )
{
int i=20;
printf(“i=%d\n”, --i);   先自减,后运算  19
printf(“i=%d\n”,i);    19
}


#include<stdio.h>
void main(   )
{
int i=20;
printf(“i=%d\n”, i--);  先运算,后自减  20
printf(“i=%d\n”,i);   19
}


#include<stdio.h>
void main(   )
{
int i=20;
printf(“i=%d\n”, ++i);  先自增,后运算  21
printf(“i=%d\n”,i);    21 
}


#include<stdio.h>
void main(   )
{
int i=20;
printf(“i=%d\n”, i++);  先运算,后自增   20
printf(“i=%d\n”,i);     21
}

3.练习3: 

int a,b,c;     //定义变量
a=b=c=0; //赋值
a=++b + ++c;  //计算   ++b:  1   ++c:1   a=2
printf(“\n%d,%d,%d”,a,b,c);   //2  1  1
a=b++  + c++;  //计算           //b++:2   c++:2  a=2
printf(“\n%d,%d,%d”,a,b,c);//2 2 2
a=++b + c++;  //计算  //++b:  3   c++:3   a=5
printf(“\n%d,%d,%d”,a,b,c);//5  3  3
a=b-- + --c;    //计算   //b--: 3   --c:2   a=5  
printf(“\n%d,%d,%d”,a,b,c);//5  2  2

4.逻辑运算 :

int main(int argc, const char *argv[])
{
    /*
    printf("1&&1=%d\n",1&&1);
    printf("1&&0=%d\n",1&&0);
    printf("0&&1=%d\n",0&&1);
    printf("0&&0=%d\n",0&&0);
        int a = 3;
        int b = 4;
        int c = (a++>3) && (b++>4);//
    printf("c=%d\n",c);//0
    printf("a=%d\n",a);//4
    printf("b=%d\n",b);//4
 
    printf("1||1=%d\n",1||1);
    printf("1||0=%d\n",1||0);
    printf("0||1=%d\n",0||1);
    printf("0||0=%d\n",0||0);
    
        int a = 4;
        int b = 3;
        int c = (a++>=4) || (b++>3);
    printf("c=%d\n",c);//1
    printf("a=%d\n",a);//5
    printf("b=%d\n",b);    //3*/

#if 0
        int a = 0, b = 2, c ;
    c =!a || ++b&&a--;
    printf("c=%d\n",c);//1
    printf("a=%d\n",a);//0
    printf("b=%d\n",b);//2
#else
        int a = 0, b = 2, c ;
    c = a || ++b&&a--; //  b=3 
    printf("c=%d\n",c);//0
    printf("a=%d\n",a);//-1
    printf("b=%d\n",b);//3
#endif    

5.关系运算: 

判断10-100: a>=10 && a<=100
小于10,大于100: a<10 || a>100
表示大写: 'A'--'Z'  a>='A'&&a<='Z'
表示小写: 'a'--'z'  a>='a'&&a<='z'
表示数字: '0'--'9'  a>='0'&&a<='9'

6. 条件运算/三目运算:

练习1:输入一个数,判断是奇数还是偶数?
      num%2==0?printf("偶数\n"):printf("奇数");
    
练习2:输入一个年份,判断这个年份是否是闰年?
      闰年:能被4整除,不能被100整除或者被400整除
      int year;
      printf("please enter year:");
      scanf("%d",&year);
      //表达式1?表达式2:表达式3
      year%4==0&&year%100!=0||year%400==0?\
      printf("YES"):printf("NO");

练习3:输入一个数,判断这个数是否是水仙花?
      1.是三位数
      2.各个位数字立方和等于本身
        153=1*1*1+5*5*5+3*3*3
      int num;
      printf("please enter num:");
      scanf("%d",&num);
      //153=1*1*1+5*5*5+3*3*3
      int g=num%10;
      int b=num/100;
      int s=num/10%10;
      //注意:当语句较长时可以使用\连接符
      //注意:在使用pow是,编译需要添加参数-lm
      //注意:引入头文件#include <math.h>
      num>=100&&num<=999&&pow(g,3)+pow(s,3)+pow(b,3)==num?\
      printf("YES"):printf("NO");

7.逗号运算: 

int a=1,b=2;
int c=(a+b,a++,--b,++a,a/b);   c=3 a=3 b=1

8.位运算: 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    /*
    printf("1&1=%d\n",1&1);
    printf("1&0=%d\n",1&0);
    printf("0&1=%d\n",0&1);
    printf("0&0=%d\n",0&0);
    char a=3&2;
    printf("a=%d\n",a);
    char b=-3&2;
    printf("b=%d\n",b);
    */

//3-->11
//源码/反码/补码:0000 0011
//2-->10
//源码/反码/补码:0000 0010
// 0000 0011
//&0000 0010
// 0000 0010--->2       
    
//-3&2
//-3-->11
//原码:1000 0011
//反码:1111 1100
//补码:1111 1101
//2--->0000 0010
// 1111 1101
//&0000 0010
// 0000 0000

/*
    printf("1|1=%d\n",1|1);
    printf("1|0=%d\n",1|0);
    printf("0|1=%d\n",0|1);
    printf("0|0=%d\n",0|0);
    printf("3|2=%d\n",3|2);
    */

//3-->0000 0011
//2-->0000 0010
//    0000 0011--->3

/*
    printf("1^1=%d\n",1^1);
    printf("1^0=%d\n",1^0);
    printf("0^1=%d\n",0^1);
    printf("0^0=%d\n",0^0);
    printf("3^2=%d\n",3^2);
    */

//3--->0000 0011
//2--->0000 0010
//     0000 0001   1
//    printf("~1=%d\n",~1);
//1--->0000 0001
//~   
//     1111 1110补码
//     1111 1101反码
//     1000 0010原码 --->-2
//    printf("~0=%d\n",~0);
//    printf("~3=%d\n",~3);
      printf("4<<2=%d\n",4<<2);
//4---> 00000100
//<<            2
//    00000100 
//左边多余为去掉,右边补0
    printf("-5<<2=%d\n",-5<<2);
//-5--->
//  1000 0101
//  1111 1010
//  11111011
//<<       2
//11111011
//  11101100补码
//  11101011反码
//  10010100原码---> -20
    printf("-4>>2=%d\n",-4>>2);
// -4--->
//   1000 0100原码
//   1111 1011反码
//   11111100补码
//>>         2
//     11111100
//   11111111   补码
//   11111110   反码
//   10000001   原码---->-1
    return 0;
}

9.多分支选择结构: 

1>对学生的考试成绩分级评测,规则为: 成绩1-100之间合法
1、成绩>=90为等级A
2、成绩>=80为等级B
3、成绩>=70为等级C
4、成绩>=60为等级D
5、成绩<60为等级E
int main(int argc, const char *argv[])
{
    printf("please enter score:");
    int score;
    scanf("%d",&score);//120
    if(score<0 || score>100)
            printf("ERROR");
        else if(score>=90)
            printf("A");
        else if(score>=80)
            printf("B");
        else if(score>=70)
            printf("C");
        else if(score>=60)
            printf("D");
        else
        printf("E");
    return 0;
}

三、课后作业:

 1.任意输入两个数,请从小到大输出: 

方法一:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,b,t;
	printf("请输入两个数:");
	scanf("%d%d",&a,&b);
	if(a<b)
	{
		printf("%d %d\n",a,b);
	}
	else
	{
		t=a;
		a=b;
		b=t;
		printf("%d %d\n",a,b);
	}
	return 0;
}




方法二:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,b;
	printf("请输入两个数:");
	scanf("%d%d",&a,&b);
	if(a<b)
	{
		printf("%d %d\n",a,b);
	}
	else
	{
		a=a+b;
		b=a-b;
		a=a-b;
		printf("%d %d\n",a,b);
	}
	return 0;
}





方法三:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,b;
	printf("请输入两个数:");
	scanf("%d%d",&a,&b);
	if(a<b)
	{
		printf("%d %d\n",a,b);
	}
	else
	{
		a=a^b;
		b=a^b;
		a=a^b;
		printf("%d %d\n",a,b);
	}
	return 0;
}

2. 计算三个数的最大值:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,b,c;
	printf("请输入三个数:");
	scanf("%d%d%d",&a,&b,&c);
	int max=a;
	if(max<b)
		max=b;
	if(max<c)
		max=c;
	printf("max=%d\n",max);
	return 0;
}

3.输入一个字符, 如果是大写转换小写

                             如果是小写转换大写

                             如果是数字输出平方

                             如果是特殊字符则直接输出

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, const char *argv[])
{
	char ch;
	scanf("%c",&ch);
	if(ch>='A'&& ch<='Z')
	{
		ch+='a'-'A';
		printf("大写转小写结果为:%c\n",ch);
	}
	else if(ch>='a'&&ch<='z')
	{	
		ch-='a'-'A';
		printf("小写转大写结果为:%c\n",ch);
	}
	else if(ch>='0'&&ch<='9')
		printf("该数的平方为:%.0f\n",pow(ch-'0',2));
	else
		printf("%c为特殊字符\n",ch);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值