嵌入式C语言实例(达内2013)

这篇博客详尽地列举了一系列嵌入式C语言的实战练习,包括开关判断、票价计算、素数判断、乘法表、猜数游戏、输入数据验证、字符统计、数组操作、文件操作和各种算法练习,旨在帮助读者巩固和提升C语言在嵌入式领域的应用能力。

1.Switch练习

#include<stdio.h>

int main()

{

       intshu_zi=0;

       printf("请输入一个数:");

       scanf("%d",&shu_zi);

       switch(shu_zi%2)

       {

       case0:

                     printf("结果为假\n");

                     break;

       case1:

                     printf("结果为真\n");

                     break;

       default:

              printf("结果不能为负\n");

              break;

       }

}

 

2.票价

#include<stdio.h>

int main()

{

       intjia_ge=30,ge_shu=3;

       printf("请输入价格和张数:");

       scanf("%d%d",&jia_ge,&ge_shu);

       if(ge_shu<=0)

       {

              printf("张数不合理:\n");

      

       }

       printf("请输入价格和张数:");

       scanf("%d%d",&jia_ge,&ge_shu);

       if(ge_shu<=0)

       {

              printf("张数不合理:\n");

             

       }

    printf("请输入价格和张数:");

       scanf("%d%d",&jia_ge,&ge_shu);

       if(ge_shu<=0)

       {

              printf("张数不合理:\n");

              return0;

       }

       printf("总价格是%d\n",jia_ge*ge_shu);

       return0;

}

 

判断个数

#include<stdio.h>

int main()

{

       intjia_ge=0,ge_shu=0;

       printf("请输入价格和个数:");

       scanf("%d%d",&jia_ge,&ge_shu);

       if(0==ge_shu)

       {

              printf("张数不能为0\n");

       }

       elseif (ge_shu>0)

       {

              if(0==jia_ge)

              {

                     printf("价格不能为0\n");

              }

              elseif (jia_ge>0)

              {

                     printf("总票价是%d\n",jia_ge*ge_shu);

              }

              else{

                     printf("价格不能为负\n");

              }

       }

       else{

              printf("张数不能为负\n");

       }

       return0;

}

 

票价终极版:判断次数

#include<stdio.h>

int main()

{

       intjia_ge=0, ge_shu=0,xun_huan=0;

       for(xun_huan=0;xun_huan<=2;xun_huan++)

       {

       printf("请输入价格和张数:");

       scanf("%d%d",&jia_ge,&ge_shu);

              if(ge_shu<=0){

                     printf("张数不合理\n");

                     continue;//当张数不合理的情况下立刻进行下一次循环

              }

              if(jia_ge<=0){

                     printf("价格不合理\n");

                     continue;

              }

              break;//避免价格和张数都合理的情况下再循环

       }

       if(xun_huan<3){//检查3次是否都输错了

       printf("总价格是%d\n",jia_ge*ge_shu);

       }

       else{

              printf("好差劲哦\n");

       }

       return0;

}

 

3.摘花

#include<stdio.h>

int main()

{

int ge_shu=0,xun_huan=0,zhuang_tai=0;

printf("请输入个数:");

scanf("%d",&ge_shu);

for(xun_huan=0;xun_huan<ge_shu;xun_huan++)

{

       if(0==zhuang_tai){

              printf("她爱我\n");

           zhuang_tai=1;//确保相邻两次不一样

       }

       elseif(1==zhuang_tai)

       {

              printf("她不爱我\n");

              zhuang_tai=0;

       }

 

}

return 0;

}

 

 

4.素数

#include<stdio.h>

#include<math.h>

int main()

{

       intshu_zi=0,xun_huan=0;

       floatgen=0;

       printf("请输入一个数:");

       scanf("%d",&shu_zi);

       gen=sqrt(shu_zi);

       for(xun_huan=2;xun_huan<=gen;xun_huan++)

       {

              if(!(shu_zi%xun_huan))//用户给的数字可以整除当前列举的数字,说明不是素数

              {

                     break;

              }

       }

       if(xun_huan<=gen)//根据判断循环没结束

       {

              printf("数字%d不是素数\n",shu_zi);

       }

       else//循环结束了

       {

              printf("数字%d是素数\n",shu_zi);

       }

       return0;

}

 

10到100间的素数

#include<stdio.h>

#include<math.h>

int main()

{

       intxun_huan_1=0,xun_huan_2=0;

   float gen;

       for(xun_huan_1=10;xun_huan_1<=100;xun_huan_1++)//10到100之间的数

       {

              gen=sqrt(xun_huan_1);

       for(xun_huan_2=2;xun_huan_2<=gen;xun_huan_2++)

       {

              if(!(xun_huan_1%xun_huan_2))//用户给的数字可以整除当前列举的数字,说明不是素数

              {

                     break;

              }

       }

              if(xun_huan_2>=gen)//根据判断循环没结束

              {

                     printf("%d",xun_huan_1);

              }

       }

       printf("\n");

       return0;

}

 

 

5.乘法表

#include<stdio.h>

int main()

{

  int xun_huan_1=0,xun_huan_2=0;

  for(xun_huan_1=1;xun_huan_1<=9;xun_huan_1++)//行循环

   {

          for(xun_huan_2=1;xun_huan_2<=xun_huan_1;xun_huan_2++)//列循环

          {

                 printf("%d*%d=%d",xun_huan_1,xun_huan_2,xun_huan_1*xun_huan_2);

          }

          printf("\n");

   }

return 0;

}

 

6.面包买法

#include<stdio.h>

int main()

{

       intxun_huan_1=0,xun_huan_2=0,shang_xian=0;

       for(xun_huan_1=0;xun_huan_1<10;xun_huan_1++)

       {

              shang_xian=(200-20*xun_huan_1)/25;//防止负数

              for(xun_huan_2=0;xun_huan_2<shang_xian;xun_huan_2++)

              {

                     if(!((200-10*xun_huan_1-25*xun_huan_2)%30))//看30g的面包能买几个

                     {

                            printf("10g的面包买%d个,25g的面包买%d个,30g的面包买%d个\n",xun_huan_1,xun_huan_2,(200-10*xun_huan_1-25*xun_huan_2)/30);

                     }

              }

       }

       return0;

}

 

7.猜数游戏

#include<stdio.h>

int main()

{

       intshu_zi_1=0,shu_zi_2=0;

       printf("请输入一个数:");

       scanf("%d",&shu_zi_1);

       while(shu_zi_1!=shu_zi_2)

       {

              printf("请猜一个数:");

              scanf("%d",&shu_zi_2);

              if(shu_zi_2>shu_zi_1)

              {

                     printf("猜大了\n");

              }

            else if(shu_zi_2<shu_zi_1)

              {

                     printf("猜小了\n");

              }

               else{

                      printf("猜对了\n");

               }

       }

       return0;

}

 

8.scanf正确读入数据

#include<stdio.h>

int main()

{

       intshu_zi_1=0,shu_zi_2=0;

       printf("请输入一个数:");

       scanf("%d",&shu_zi_1);

       while(!(scanf("%d",&shu_zi_1)))//利用读入错误的情况下会返回0

       {

           scanf("%*[^\n]");

              scanf("%*c");

              printf("请再输入数据:\n");//确保读入一个正确格式的数据

       }

       scanf("%*[^\n]");//确保在正确读入的情况下再清理,比如输入6d时

   scanf("%*c");

   printf("请输入一个数:");

       scanf("%d",&shu_zi_2);

       printf("%d%d\n",shu_zi_1,shu_zi_2);

       return0;

}

 

9.统计字符出现的次数

#include<stdio.h>

int main()

{

       intshu_zi=0,ci_shu[10]={0},xun_huan=0;

printf("请输入一个数:");

scanf("%d",&shu_zi);

/*while(shu_zi)

{

       ci_shu[shu_zi%10]++;

       shu_zi/=10;

}*/

do{//防止输入0时,不运行,所以用do...while

       ci_shu[shu_zi%10]++;

       shu_zi/=10;

}

while(shu_zi);

for(xun_huan=0;xun_huan<=9;xun_huan++)

{

       if(ci_shu[xun_huan])

       {

              printf("数字%d出现了%d次\n",xun_huan,ci_shu[xun_huan]);

       }

}

return 0;

}

 

#include <stdio.h>

 

int func1(int zheng_shu, int shu_zi);//返回次数

int func2(int zheng_shu);

 

int main()

{

       intnum = 0;

      

       printf("请输入一个整数: ");

       scanf("%d",&num);

       func2(num);

      

       return0;

}

 

int func1(int zheng_shu, int shu_zi)//返回次数

{

       intci_shu = 0;

       while(zheng_shu)

       {

              if(shu_zi==zheng_shu%10)

                     ci_shu++;

              zheng_shu=zheng_shu/10;

       }

       returnci_shu;

}

 

int func2(int zheng_shu)

{

       inti = 0, j = 0;

       intstr[10] = {0};

       intshu_zi = 0;

       inta[10] = {0};

 

       for(shu_zi= 0; shu_zi < 10; shu_zi ++){

              str[shu_zi]= func1(zheng_shu, shu_zi); //str <= ci_shu

              if(str[shu_zi]){

                     str[i]= str[shu_zi];

                     a[i]= shu_zi;

                     i++;

              }

       }

       /*

       for(shu_zi= 0; shu_zi < 10; shu_zi ++)

       {

              str[i]= func1(zheng_shu, shu_zi);

              if(str[i]){

                     a[i]= shu_zi;

                     i++;

              }

       }

       */

       for(j= 0; j < i ; j ++)

              printf("  %d 出现 %d 次\n",a[j], str[j]);

       printf("\n");

}

 

/*

//1.求一个整数中某个数字出现的个数

//2.输出该整数中含有的不同数字

#include <stdio.h>

 

int fun1(int zheng_shu,int shu_zi);//求一个整数中某个数字出现的个数

void fun2(int zheng_shu);//输出该整数中含有的不同数字

int main()

{

       intn,num;

       charstr1[10]={0},str2[10]={0};

       printf("请输入一个整数:");

       scanf("%d",&num);

      

       printf("请输入要统计的数字:");

       scanf("%d",&n);

       printf("%d含有数字:\n",num);

       fun2(num);

       printf("\n");

       printf("%d有 %d 个 %d\n",num,fun1(num,n),n);

       return0;

}

 

int fun1(zheng_shu,shu_zi)

{

       inti=0;

       while(zheng_shu)

       {

              if(shu_zi==zheng_shu%10)

                     i++;

              zheng_shu=zheng_shu/10;

       }

       returni;

}

 

void fun2(int zheng_shu)

{

       inti=0,n=0;

       intstr[10]={0};

       for(i=0;i<10;i++)

       {

              staticint j=0;

              while(i==zheng_shu%10){//用0~9数和输入的数每位上的数比较,

                      str[j]=i;        //若相等就把这个数字保存到数组str中,

                     j++;               //while就避免了数重复保存到str

                     i=0;            //找到相同的数后,再判断更高位是否相同,在此要0开始比较

                     zheng_shu=zheng_shu/10;                  

              }

              continue;

       }

       for(n=0;n<j;n++)

       printf("%d",str[n]);

}

*/

 

10.银行利率计算

#include<stdio.h>

int main()

{

       intli_lv=0,nian=0,xun_huan=0,ge_shu=0;

       floatqian=100.0f;

       printf("请输入利率和年数:");

       scanf("%d%d",&li_lv,&nian);//打印表头

       printf("年%7d%%\n",100+li_lv);

       for(xun_huan=1;xun_huan<=nian;xun_huan++)

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值