这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 【学习会】一起学习C语言之多年之后再拾起

共21条 1/3 1 2 3 跳转至

【学习会】一起学习C语言之多年之后再拾起

院士
2018-05-16 09:25:37     打赏

刚刚毕业那会那时候是单片机兴起的时候,第一份工作就是做的51单片机的电路和编程,用的就是C语言,现在回头想想那时候真的是什么都不懂,但一上手就是直接动手做的方式还是不错的,在做的过程中学习和了解单片机的特性和功能,只是后来,辞职之后好长时间没有做了,现在又重新找了份工作,工作中又接触到了单片机和C语言的内容,所以自己又要重新再学习学习了。



院士
2018-05-19 22:45:18     打赏
2楼

昨天看完第一章,又想起了当年的hello world,那时候觉得自己要进入一个神奇的世界了,结果只是在大门口转了一圈,就出来了,现在回头看怎么都有熟悉的感觉,单片机大部分还是c语言,只有启动文件那部分是汇编,现在连启动文件也省了,就全是c语言了,所以打算好好重头好好再学习下


院士
2018-05-20 10:54:46     打赏
3楼

第一章:初识C语言

1-1:显示计算结果

#include<stdio.h>

int main(void)

{

printf(“%d”,15+37);

return(0);

}

格式化输出函数printf

%d:以十进制数显示

无格式化输出:

#include<stdio.h>

int main(void)

{

printf(“您好!我叫柴田望洋。\n”);

return(0);

}

转义字符\n:换行操作

\a:响铃

#include<stdio.h>

int main(void)

{

printf(“您好!\a \a \a \n”);

return(0);

}

1-2变量

常量和变量

声明变量

声明多个变量

赋值

1-3输入与显示

通过键盘进行输入

#include<stdio.h>

int main(void)

{

 int no;

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

scanf(“%d”,&no);

printf(“您输入的是%d\n”,no);

return(0);

}

格式化输入函数scanf

乘法运算

输出函数puts:顺序输出 作为实参的字符串,并在结尾换行。

printf(“ABC\n”)puts(“ABC”)等同



院士
2018-05-22 12:23:06     打赏
4楼

2 运算和数据类型

2-1运算

四则运算

#include<stdio.h>

int main(void)

{

int vx,vy;

puts(“请输入两个整数。”);

printf(“整数vx:”);scanf(“%d”,&vx);

printf(“整数vy:”);scanf(“%d”,&vy);

printf(“vx+vy=%d\n”,vx+vy);

printf(“vx-vy=%d\n”,vx-vy);

printf(“vx*vy=%d\n”,vx*vy);

printf(“vx/vy=%d\n”,vx/vy);

printf(“vx%%vy=%d\n”,vx%vy);

return(0);

}

这里需要注意的是求余数那里用到的%%,是因为%有转化功能,所以需要输出%这个符号的时候需要多写一个。

这段程序里涉及到了运算符+ - * / %;然后vx vy这两个操作数;后面给个例子取整数最后一位数字如下:

#include<stdio.h>

int main(void)

{

int no;

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

scanf(“%d”,&no);

printf(“最后一位是%d\n”,no%10);

return(0);

}

其中需要注意的是%运算,这是计算余数,但有时候规则不同,结果也不同。

单目运算符

取反

赋值运算符 =;表达式和赋值表达式



院士
2018-05-24 12:39:29     打赏
5楼

2-2数据类型

求平均值

#include<stdio.h>

int main(void)

{

int na,nb;

puts(“请输入两个整数。”);

printf(“整数A:”);scanf(“%d”,&na);

printf(“整数B:”);scanf(“%d”,&nb);

printf(“它们的平均值是%d\n”,(na+nb)/2);

return(0);

}

数据类型

int 类型和double 类型

#include<stdio.h>

int main(void)

{

int nx;

double dx;

nv=9.99;

dx=9.99;

printf(“int     型变量nx的值:%d\n”,nx);

printf(“              nx/2%d\n”,nx/2);

printf(“double 型变量dx的值:%f\n”,dx);

printf(“             dx/2.0%f \n”,dx/2.0);

return(0);

}

注意:printf函数输出double型值,转换说明用了%f

数据类型和对象

int 只能存整数

double可以存实数

整数常量和浮点数常量

数据类型和运算

类型转换

转换说明:这里我觉得才是最重要的

#include<stdio.h>

int main(void)

{

int na,nb,nc;

int sum;

double ave;

puts(“请输入三个整数。”);

printf(“整数A:”);scanf(“%d”,&na);

printf(“整数B:”);scanf(“%d”,&nb);

printf(“整数C:”);scanf(“%d”,&nc);

sum=na+nb+nc;

ave=(double)sum/3;

printf(“它们的合计值%5d\n”,sum);

printf(“它们的平均值%5.1f\n”,ave);

return(0);

}

这里的%5:显示至少5位的十进制整数

这里的%5.1f:显示至少5位的浮点数,但小数点后只显示1

举例:%09.9f

a.0表示前面有空位用0补齐位数

b.9表示最少显示宽度为9位,不设定或者超过位数就根据数值显示必要位数,如果设定“-”,数据会显示左对齐,否则右对齐

c.精度:指定显示的最小位数,如果不指定,则整数的时候默认为1,浮点数的时候默认为6

d.转换说明符 d 显示十进制的int型整数 f 显示十进制的double型浮点数

举例如下:

#include<stdio.h>

int main(void)

{                                                       //运行结果

printf(“[%d]\n”,             123);  //                            [123]

printf(“[%.4d]\n”,            123);  //                              [0123]

printf(“[%4d]\n”,            123);   //                             [ 123]

printf(“[%04d]\n”,           123);  //                            [0123]

printf(“[%-4d]\n”,           123);   //                         [123 ]

 

printf(“[%d]\n”,           12345);    //                            [12345]

printf(“[%.3d]\n”,          12345); //                                      [12345]

printf(“[%3d]\n”,           12345);   //                           [12345]

printf(“[%03d]\n”,          12345);   //                           [12345]

printf(“[%-3d]\n”,          12345);   //                       [12345]

 

printf(“[%f]\n”,            123.13);   //                         [123.130000]

printf(“[%.1f]\n”,            123.13);   //                     [123.1]

printf(“[%6.1f]\n”,            123.13);  //                     [ 123.1]

 

printf(“[%f]\n”,            123.13);    //                        [123.130000]

printf(“[%.1f]\n”,            123.13);   //                     [123.1]

printf(“[%4.1f]\n”,            123.13);  //                     [123.1]

 

  return(0);

}

 



院士
2018-05-25 12:20:02     打赏
6楼

3 分支结构程序

3-1 if语句

例:

#include<stdio.h>

int main(void)

{

int vx;

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

scanf(“%d”,&vx);

 

if(vx%5)

puts(“输入的整数不能被5整除。”)

 

return(0);

}

解释if后括号里只有余数不为0,才执行后面puts语句。

例:奇数的判断

#include<stdio.h>

int main(void)

{

int no;

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

scanf(“%d”,&no);

 

if(no%2)

puts(“输入的整数是奇数。”)

 

return(0);

}

if语句(2):if   else 

#include<stdio.h>

int main(void)

{

int vx;

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

scanf(“%d”,&vx);

 

if(vx%5)

puts(“输入的整数不能被5整除。”)

  else

    puts(“输入的整数能被5整除。”)

 

return(0);

}

奇数和偶数

#include<stdio.h>

int main(void)

{

int no;

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

scanf(“%d”,&no);

 

if(no%2)

puts(“该整数是奇数。”)

  else

    puts(“该整数是偶数。”)

return(0);

}

判断:指的是if后面括号里的值

0的判断:

#include<stdio.h>

int main(void)

{

int num;

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

scanf(“%d”,&num;

 

if(num)

puts(“该整数不是0”)

  else

    puts(“该整数是0”)

return(0);

}

相等运算符:==

不等运算符:!=

关系运算符:<>< = >=

嵌套的if语句:if   else if  else

计算较大值:

计算三个数的最大值:

条件运算符:属于三目运算符 a?b:c(如果a不为0,则结果是b的值,否则结果是c的值。)

差值计算:(n1-n2)?n1-n2:n2=n1

复合语句(程序块):

判断季节:

逻辑运算符:

&& 逻辑与  || 逻辑或



院士
2018-05-27 10:06:09     打赏
7楼

3-2switch语句

句型:switch(){case ;} 

例:

#include<stdio.h>

int main(void)

{  int num;

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

   scanf(“%d”,&num);

 

   switch(num%3){

   case 0: puts(“该数能被3整除。”);break;

   case 1: puts(“该数除以3的余数是1”);break;

   case 2: puts(“该数除以3的余数是2”);break;

}

return(0);

}

其中,执行break语句会跳出switch语句。

#include<stdio.h>

int main(void)

{  int sw;

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

   scanf(“%d”,&sw);

 

   switch(sw){

   case 1: puts(“A”); puts(“B”);break;

   case 2: puts(“C”);break;

   case 5: puts(“D”);break;

   case 6:  

case 7: puts(“E”);break;

default: puts(“F”);break;

}

return(0);

}

default:当控制表达式的值与任何一个case后都不一致就跳转到此执行。

switchif语句

选择语句:实现程序流程的选择性分支



院士
2018-05-28 09:11:02     打赏
8楼

楼主,学习非常认真啊~~


P.S.帖子编辑里面有插入源代码的选项。



院士
2018-05-28 16:08:47     打赏
9楼

4 程序的循环控制

4-1 do语句

do ……while(条件);

#include<stdio.h>

int main(void)

{

  int cont;

  do {

     int no;

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

     scanf(“%d”,&no);

     if(no%2)

      puts(“这个整数是奇数。”);

     else

      puts(“这个整数是偶数。”);

     printf(“要重复一次吗?【Yes0 /No9】:”);

     scanf(“%d”,&cont);

}  while(cont==0);

  return(0);

}

解释:即使读取到的不是9,也会结束循环,因此只有读取到0,才继续循环。

复合语句(程序块)中的声明

逻辑非运算符

!contcont==0含义相同

逆向显示整数值

#include<stdio.h>

int main(void)

{

  int num;

  do{

     printf(“请输入一个非负整数:”);

     scanf(“%d”,&num);

     if(num<0);

       puts(“请不要输入负整数。”);

     }while(num<0);

  printf(“该整数逆向显示的结果是:”);

   do{

     printf(“%d”,num%10);

     num=num/10;

}while(num>0);

   puts(“”);

   return(0);

}

计算整数的位数

#include<stdio.h>

int main(void)

{

  int num;

  int dig;

  do{

     printf(“请输入一个非负整数:”);

     scanf(“%d”,&num);

     if(num<0);

       puts(“\a请不要输入负整数。”);

     }while(num<0);

  dig=0;

    do{

     num=num/10;

     dig=dig+1;

}while(num>0);

printf(“该整数的位数是%d\n”,dig);

   return(0);

}

初始化

#include<stdio.h>

int main(void)

{

  int no=1;

  int sum=0;

  do{

sum=sum+no;

no=no+1;

}while(no<=5);

  printf(“15的合计值是%d\n”,sum);

  return(0);

}

 复合赋值运算符+=

#include<stdio.h>

int main(void)

{

  int no=1;

  int sum=0;

  do{

sum+=no;

no+=1;

}while(no<=5);

  printf(“15的合计值是%d\n”,sum);

  return(0);

}

对于*/%+-<<>>&^|都有符合赋值运算

后置递增运算符合后置递减运算符

即:a++  操作数a增加1

a--   操作数a减少1

 



院士
2018-05-29 13:10:49     打赏
10楼

4-2 while语句

#include<stdio.h>

int main(void)

{

 int no;

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

 scanf(“%d”,&no);

 while(no>=0){

   printf(“%d”,no);

   no--;

      }

 putchar(‘\n’);

 return(0);

}

字符常量

putchar

用递减运算符简化程序

printf(“%d”,no);no--;可以简化为printf(“%d”,no--);

数据递增

#include<stdio.h>

int main(void)

{

 int i,no;

 printf(“请输入一个正整数:”);

 scanf(“%d”,&no);

 i=0;

 while(i<=no)

   printf(“%d”,i++);

 putchar(‘\n’);

 return(0);

}

限定次数的循环操作

#include<stdio.h>

int main(void)

{

 int no;

 printf(“请输入一个正整数:”);

 scanf(“%d”,&no);

  while(no-- > 0)

   putchar(‘*’);

 putchar(‘\n’);

 return(0);

}

前置递增运算符和前置递减运算符

++a 该表达式的值是增加后的值

--a  该表达式的值是减少后的值



共21条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]