嵌入式day3学习(2022.1.8)

简介: 嵌入式day3学习(2022.1.8)


运算符分类



1.算术运算符




2.关系运算符



3.逻辑运算符



4.位运算符




5.特殊运算符


  1. 赋值运算符(=)


  1. 复合赋值运算符(=)+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=


  1. 条件运算符符(?:)即 ?  :


  1. sizeof


  1. 逗号运算符


  1. return


优先级





作业:


1、编写一个程序,此程序要求输入一个整数,然后打印出从输入的值()到比输入的值大 10()的所有整数值(比如输入 5,则输出 5 15)。要求在各个输出值之间用空格、制表符或者换行符分开。


#include<stdio.h>
int main()
{
    printf("输入一个整数\n");
    unsigned int a;
    scanf("%d",&a);
    printf("输出该整数后10位\n");
    for (int  i = 0; i < 10; i++)
    {
        printf("%d\n",a+i);
    }
   return 0;
}



2 、写出下面表达式运算后 a 的值,设原来 a=12。设 a 和 n 已定义为整型变量。


a += a


24


a -= 2


10


a *= 2+3


60


a /= a+a


0


a %= (n%2),n 的值为 5


0


a += a -= a *= a


0


3.编写一个程序,该程序要求输入一个 float 型数并打印概述的立方值。使用你自己设计的函数来计算该值 的立方并且将它的立方打印出来。main 函数负责把输入的值传递给该函数。


#include<stdio.h>
float lifang(float a)
{
    float b;
    b=a*a*a;
    return b;
}
int main()
{
    printf("输入一个浮点数\n");
     float a;
     scanf("%f",&a);
     a=lifang(a);
     printf("%f\n",a);
   return 0;
}



4.编写一个程序,此程序要求输入天数,然后将该值转换为星期数和天数。例如输入 18,则要求输出: 18 days are 2 weeks, 4days.


#include<stdio.h>
int main()
{
    printf("输入一个天数\n");
    int a;
    scanf("%d",&a);
    printf("%d days are %d weeks,%d days",a,a/7,a%7);
   return 0;
}



5、分析并解释以下程序的执行结果。


#include <stdio.h> 
int main(void) 
{ 
int a,b,c,d; 
a=10; 
b=a++; 
c=++a; 
d=10*a++; 
printf("b,c,d:%d,%d,%d",b,c,d); 
return 0; 
}



  1. b=a++,a后自加1,先赋值给b


  1. C=++a,a在上一步已经自增1,现在再先自增1,故为12


  1. D=10*a++,现在a已经为12,先把a*10赋值给d,a再增


#include<stdio.h>
int main(){
    char a=123;
    char b1=234;
    unsigned char b2=234;
    printf("a:%d\nb:%d\nb:%d\n",a,b1,b2);
    return 0;
}


#include<stdio.h>
int main(){
    int a1=1,a2=1,a3=1,a4=1,*a9,a12=1,a13=1;
    char a5=100,*a6="xy",*a10="abcdefghijk",a15=1;
    float a7=1.0,a8=1.0,a11=1.0;
    short a14=1;
    double a16=1.0;
    long double a17=1.0;
    //-------------------
    printf("%d\n",a1);
    printf("%u\n",a2);
    printf("%o\n",a3);
    printf("%x\n",a4);
    printf("%c\n",a5);
    printf("%s\n",a6);
    printf("%f\n",a7);
    printf("%e\n",a8);
    printf("%p\n",a9);
    printf("%.5s\n",a10);
    printf("%.5f\n",a11);
    printf("%5d\n",a12);
    printf("%-5d\n",a13);
    printf("%hd\n",a14);
    printf("%hhd\n",a15);
    printf("%lf\n",a16);
    printf("%Lf\n",a17);
    // char  var1;
    // printf("输入一个整型");
    // scanf("%d",&var1);
    // printf("%d\n",var1);
    // printf("%u\n",var1);
    // printf("%o\n",var1);
    // printf("%x\n",var1);
    // printf("%c\n",var1);
    // printf("%s\n",var1);
    // printf("%f\n",var1);
    // printf("%e\n",var1);
    // printf("%p\n",var1);
    // printf("%.5s\n",var1);
    // printf("%.5f\n",var1);
    // printf("%5d\n",var1);
    // printf("%-5d\n",var1);
    // printf("%hd\n",var1);
    // printf("%hhd\n",var1);
    // printf("%lf\n",var1);
    // printf("%Lf\n",var1);
}


#include<stdio.h>
int main()
{
    unsigned short var1=0x1234;
    unsigned char var1_high8=(var1<<8)>>8;
    unsigned char var1_low8=var1>>8;
    printf("高%u 低%u\n",var1_high8,var1_low8);
    unsigned short var2=var1_low8+var1_high8;
    printf("%u\n",var2);
   return 0;
}


#include<stdio.h>
int main()
{
    printf("输入一个整数\n");
    unsigned int a;
    scanf("%d",&a);
    printf("输出该整数后10位\n");
    for (int  i = 0; i < 10; i++)
    {
        printf("%d\n",a+i);
    }
   return 0;
}


#include<stdio.h>
float lifang(float a)
{
    float b;
    b=a*a*a;
    return b;
}
int main()
{
    printf("输入一个浮点数\n");
     float a;
     scanf("%f",&a);
     a=lifang(a);
     printf("%f\n",a);
   return 0;
}


#include <stdio.h> 
int main(void) 
{ 
int a,b,c,d; 
a=10; 
b=a++; 
c=++a; 
d=10*a++; 
printf("b,c,d:%d,%d,%d",b,c,d); 
return 0; 
}


#include<stdio.h>
int main()
{
    char a1;
    unsigned a2;
    signed char a3;
    int a4;
    unsigned int a5;
    short a6;
    unsigned short a7;       
    long a8;
    unsigned long a9;
    long long a10;
    double a11;
    float a12;
    printf("char:%ld\n",sizeof(a1));
    printf("unsigned:%ld\n",sizeof(a2));
    printf("signed char:%ld\n",sizeof(a3));
    printf("int:%ld\n",sizeof(a4));
    printf("unsigned int:%ld\n",sizeof(a5));
    printf("short:%ld\n",sizeof(a6));
    printf("unsigned short:%ld\n",sizeof(a7));
    printf("long:%ld\n",sizeof(a8));
    printf("unsigned long:%ld\n",sizeof(a9));
    printf("long long:%ld\n",sizeof(a10));
    printf("double:%ld\n",sizeof(a11));
    printf("float:%ld\n",sizeof(a12));
}


#include<stdio.h>
int main()
{
    int a=9527;
    int b=a-(a/1000)*1000,b1=b-(b/100)*100;
    printf("%d %d %d %d \n",a/1000,b/100,b1/10,b1%10);
    printf("-----------\n");
    printf("%d %d %d %d \n",a/1000,a/100%10,a/10%10,a/1%10);
    printf("-----------\n");
    int c=12;
    int d =++c;
    d++;
    printf("%d\n",c++);
    printf("%d\n",++d);
    printf("%d\n",c);
   return 0;
}


#include<stdio.h>
int main()
{
    int a=12,n=5;
    // printf("%d",a+=a-=a*=a);
  printf("%d",a%=(n%2));
  return 0;
}


#include<stdio.h>
int main()
{
    unsigned long long int a=0x12345678;
    unsigned char var_low,var_high,var_low2,var_high2;
     var_low=(a>>0)&0xFFFFFFFF;
     var_high=(a>>8)&0xFFFFFFFF;
     var_low2=(a>>16)&0xFFFFFFFF;
     var_high2=(a>>24)&0xFFFFFFFF;
    // printf("var_low:%hhX\n",var_low);
    // printf("var_high:%hhX\n",var_high);
    //  printf("var_low2:%hhX\n",var_low2);
    //   printf("var_high2:%hhX\n",var_high2);
      printf("0x%hhX%hhX%hhX%hhX\n",var_low,var_high,var_low2,var_high2);
   return 0;
}


#include<stdio.h>
int main()
{
    unsigned int a=0x56;//(7654 3210)
    unsigned char a1,a2;
    // a1=a;
    // a1=a1|(1<<0);
    // a1=a1|(1<<5);
    // a1=a1|(1<<7);
    a1=a|(1<<0)|(1<<5)|(1<<7);
    a2=a1&(~(1<<1))&(~(1<<4))&(~(1<<6));
    printf("%hhX\n",a2);
   return 0;
}


#include <stdio.h>
int main(void)
{
  int ascii;
  printf("请输入一个ASCII码值:");
  scanf("%d",&ascii);
  printf("ASCII码值为 %d 对应的字符是 %c\n",ascii,ascii);
  return 0;
}


#include<stdio.h>
int main(){
    int arr[4]={};
    int id1,id2;
    float score1,score2;
    char *name1="tom",*name2="jerry",sex1,sex2;
    //-------------------
    printf("依次输入id,sex,score");
    scanf("%d %c %f",&id1,&sex1,&score1);
    scanf("%d %c %f",&id2,&sex2,&score2);
    //-------------------------------
    printf("ID\tSEX\tNAME\tSCORE\n");
    printf("%d\t%c\t%s\t%.1f\n",id1,sex1,name1,score1);
    printf("%d\t%c\t%s\t%.1f\n",id2,sex2,name2,score2);
    return 0;
}


#include<stdio.h>
#include<string.h>
char S[100][1000]={' '};//声明表为全局变量
int s1=0;
void chart(int n,int a[],int m);
int main()
{
    int n;
    int M1[40]={0},M2[40]={0},M3[40][100]={0};
    int i,j,k,k1,k2,max=0,col,l;
    char s[30][1000];
    scanf("%d",&n);
    getchar();//注意,必须得有这个来接收回车符
    //
    for(i=0;i<n;i++)
        // scanf("%s", &s[i]);
        // gets(s[i]);
        fgets(s[i],100,stdin);
    //求最大列数
    for(i=0;i<n;i++)
     {
         l=strlen(s[i]);
         for(j=0;j<l;j++)
         {
             if(s[i][j]==',')
             M1[i]++;
         }
         if(M1[i]>max)
         {
             max=M1[i];
         }
     }
     col=++max;
     //求每列最大宽度
    //1.先求每个单元的长度,赋给M3[i][j]中
    for(i=0;i<n;i++)
    {
        l=strlen(s[i]);
        k=0;
         for(j=0;j<l;j++)
         {
            if(s[i][j]!=',')
            {
                M3[i][k]++;
            }
            if(s[i][j]==',')
             k++;
          }    //for2
    }//for1
    //2.找每列最大的赋予M2[]
    for(j=0;j<col;j++)      
      {
          max=0;
          for(i=0;i<n;i++)
          {
              if(M3[i][j]>max)
              max=M3[i][j];
          }
          M2[j]=max;
      }
      //表格
      chart(n,M2,col);
      //输入数据
    for(i=0;i<n;i++)
    {
        k1=0;
        k2=0;
        k=0;
        l=strlen(s[i]);
        for(j=0;j<l;j++)
        {
            S[2*i+1][k2+1]=s[i][j];
            if(s[i][j+1]==',')
            {
             k1=k1+M2[k]+1;
             k2=k1;
             k++;
             j++;    
            }
            else
            k2++;
        }
    }
    //输出表格
    for(i=0;i<=2*n;i++)
    {
        for(j=0;j<s1;j++)
         printf("%c",S[i][j]);
        printf("\n");
    }
    return 0;
}
void chart(int n,int a[],int m)//行数  每列的最大长度数组
{
    int i,j,k;
    int s;
    s1=m+1;
    for(i=0;i<m;i++)
     s1+=a[i];
    for(i=0;i<=2*n;i++)    
    {
        //输出奇数行
        if(i%2==0)
        {
            s=0;
            k=0;
            for(j=0;j<s1;j++)
            {
                if(j==s)
                {
                  S[i][j]='+';            
                  s+=a[k];
                  s++;
                  k++;
                }
                else
                S[i][j]='-';
            }//for
        }    //if    
        //输出偶数行
        else
        {
            s=0;
            k=0;
            for(j=0;j<s1;j++)
            {
                if(j==s)
                {
                  S[i][j]='|';            
                  s+=a[k];
                  s++;
                  k++;
                }
            }
        }
    }    //for
}


#include<stdio.h>
#include <string.h>
int people=0;
struct kid
  {
  char name[50];            //姓名
  int  height;            //身高  
  char sex[50];           //性别
  long long  num;           //学号
  };
void shuru(struct kid stu[50])
{
  int i=0;
  char v[50]={0};                     //清空缓存区
  struct kid *p = stu;
  for(i=0;i<50;i++)
  {
    printf("\n请输入学生信息\n");
    printf("  名字  ");
    scanf("%s",(p+people)->name);
    printf("  学号  ");
    scanf("%lld",&(p+people)->num);
    printf("  性别  ");
    scanf("%s",(p+people)->sex);
    printf("  身高  ");
    scanf("%d",&(p+people)->height);
    people++;
    printf("输入完毕\n回车继续输入");
    printf("  *键退出");
    while(1)
    {
        getchar();                   //(取地址)去掉输入完多出的回车符号
    //   gets(v);
          fgets(v,100,stdin);
      //scanf("%[\n]",v);
     if(strcmp(v,"")==0)
     {
                                             //getchar();
       break;
     }
     if(strcmp(v,"*")==0)
      {
       printf("\n已退出!");
       return ;
      }
    }
  }
}
void chaxun(struct kid stu[50])
{
  char name[50];
  struct kid *p = stu;
  int i=0;
  if(strcmp(p->name,"")==0)
  {
    printf("对不起\n当前无录入的学生\n");
    return ;
  }
  while(1)              //用while循环,使可以不间断输入
  {
    printf("请输入查询学生姓名\n退出查询请按A\n");
    scanf("%s",name); 
    for(i=0;i<people;i++)
    {
      if(strcmp((p+i)->name,name)==0)
      {
      printf("学生信息\n  序号: %d\n  姓名: %s\n  学号: %lld\n  性别: %s\n  身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
      printf("======================================================================\n");
        break;
      }
      if(i==people-1)
      {
        printf("查无此人!\n");
        break;
      }
      }
      if(strcmp(name,"A")==0)   //设定输入字符A退出
      {
      return ;
      }
  }
}
void shanchu(struct kid stu[50] )
{
  char name[50];
  struct kid *p = stu;
  int i=0;
  //int j=0;
  if(strcmp(p->name,"")==0)
    {
    printf("  对不起!!\n  无学生\n");
    return ;
    }
    printf("   你就说你想搞谁吧! \n");
    scanf("%s",name); 
    for(i=0;i<people;i++)
    {
      if(strcmp((p+i)->name,name)==0)
      {
      printf("学生信息\n  序号: %d\n  姓名: %s\n  学号: %lld\n  性别: %s\n  身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
      printf("======================================================================\n");
            while(strcmp((p+i)->name,"")!=0)
      {
        strcpy((p+i)->name,(p+i+1)->name);
        (p+i)->height=(p+i+1)->height;
        strcpy((p+i)->sex,(p+i+1)->sex);
        (p+i)->num=(p+i+1)->num;    
        i++ ;     
      }       
       people--;
       printf("  ok!现在ta没了!! \n");
       break;
      }
      if(i==people-1)
      {
        printf("  哟!还跟我来这套!没这人 \n");
        break;
      }
      }
}
void paixu(struct kid stu[50])
{
  struct kid temp;
  int i,j;
  char a ;
  printf("学生信息\n  姓名\t\t学号\t\t性别\t\t身高\n");
  for(i=0;i<people;i++)
  {
    for(j=i+1;j<people;j++)
      if(stu[i].height<stu[j].height)
      {
        temp=stu[i];
        stu[i]=stu[j];
        stu[j]=temp;
      }
      printf("\n%10s\t\t %lld\t\t%s\t\t%d\t\t\n" ,stu[i].name,stu[i].num,stu[i].sex,stu[i].height);
  }
  //getch();                                     用man手册查询头文件无法使用,上面gets同样,版本不支持
  /*printf("是否保存?yes or no");
  getchar();
  scanf("%c",&a);
  if(a=='yes')
    save();
  printf("保存成功");
  else
     printf("退出");
   getch();
  */
}
void xingxi(struct kid stu[50]/*, char*p*/ )
{
    struct kid *p = stu;
    char name[50];
    int i=0;
    if(strcmp(p->name,"")==0)
    {
      printf("对不起\n当前无录入的学生\n");
      return ;
    }
    for(i=0;i<people;i++)
    {
      printf("学生信息\n  序号: %d\n  姓名: %s\n  学号: %lld\n  性别: %s\n  身高: %d\n",i,(p+i)->name,(p+i)->num,(p+i)->sex,(p+i)->height);
      printf("======================================================================\n");
    }
}
 int main ()
{
     struct kid stu[50];                 //定义一个结构体数组 保存 50个学生
     struct kid *p = stu;
  while(1)                               //循环体
  {
      printf("1.录入学生信息  2查询学生  3删除学生信息 4排序(按身高)  5显示所有学生信息\n"); //设置标题
      int a = 0;
      while(1)
      {
        int ret = scanf("%d",&a);                    //键盘录入信息,&取变量地址
          if(ret == 1 && a>=1 && a<=5 && getchar()=='\n')
        {
          break;
        }
        else printf("  大哥!你打错了!\n    重新输入吧你!\n");
        while(getchar()!='\n');
      }
    switch(a)
    {
      case 1:
      {       
        shuru(stu);
        break;        
      }     
      case 2:
      {
              chaxun(p);          
        break;        
      }     
      case 3:
      {
        shanchu(p);
        break;
      }
      case 4:
      {
        paixu(stu);
        break;
      }
      case 5:
      { 
        xingxi(p);
        break;
      }
      /*default:                         //输入非整型会出现持续打印
      {
        printf("输入错误\n请重新输入\n");  
        break ;
      }
      return 0;*/
    }
  }   
}


相关文章
|
7月前
|
Linux API C语言
嵌入式
嵌入式
103 2
|
数据安全/隐私保护 C语言
day12嵌入式(2022.1.18)
day12嵌入式(2022.1.18)
|
存储 编译器
day8嵌入式(2022.1.14)
day8嵌入式(2022.1.14)
|
Linux Windows
day9嵌入式(2022.1.15)
day9嵌入式(2022.1.15)
|
存储
day7嵌入式(2022.1.13)
day7嵌入式(2022.1.13)
|
自然语言处理 编译器 C语言
day11嵌入式(2022.1.17)
day11嵌入式(2022.1.17)
|
传感器 设计模式 Ubuntu
嵌入式到底该怎么学
其实一直有人问我嵌入式怎么学,今天跟大家讲讲我的理解。因为嵌入式是一个泛的概念,可能很多人认为嵌入式就是嵌入式Linux。但是其实并不仅仅只有Linux, 像STM32,51单片机也属于这个范畴之内的,它们有的也可以跑协议栈,跑ucos等系统。所以其实嵌入式是有很多方向的,选择一个方向,做好,做精,都是有前途的。接下来,跟大家探讨一下嵌入式的一些方向,和如何去学习。我以前也是摸索着过来的,没人告诉我如何学习,也没有学习线路,所以走了很多弯路。所以希望这篇文章可以帮助到一些正在学习的人,当然这些内容可能有主观的东西,欢迎大家一起探讨吧。
嵌入式C++(四)
嵌入式C++(四)
嵌入式C++(四)
|
设计模式 算法 小程序
嵌入式C++(一)
嵌入式C++(一)
153 0
嵌入式C++(一)