Visual studio 学习

来源:互联网 发布:单片机输出0 10v电路 编辑:程序博客网 时间:2024/05/17 22:57

C++兼容C语言,尽量避免中文名字

程序员第一哲学:避免中文,空格,特殊符号

注意大小写,main

C语言中应该包含   头文件#include<stdio.h>

标准形式 :

#include<stdio.h>

int main(void)

{

}

两个概念:控制台程序,窗口程序

1.控制台程序=DOS程序,使用命令和电脑进行交互

    在电脑的开始中运行cmd看自己电脑的IP地址      DOS命令:ipconfig

   清除命令:cls

   看自己电脑的Windows版本:ver

   print函数定义在stdio.h头文件中,std=standard标准    io=input & output

  stdio=标准输入输出

  printf ("Hello %s 年龄是%d"m,"yunyi",25),%s,%d是占位符,注意“”yunyi“”,双引号!!!!

  #include<stdio.h>
  int main(void)
{
printf("Hello Visual Studio\n");
printf("Hello %s 年龄是%d ffff=%f\n","rupeng",25,3.14);
getchar();                /*等待用户输入一个回车,窗口才不会一闪而退*/
return 0;
}

sln=sloution;解决方案

if 语句:


在上面这个程序中,最终的值是AAAA,虽说后面的3>1也满足条件,但是当3>2满足条件后,该if语句就会终止,后面的语句是不会在执行的。

循环的定义、分类。

定义:某些代码会被重复执行。

分类:for  while do……while 


在上图中,先执行1,在执行2,2如果成立,标志着循环成立,那么在执行4,最后在执行3,3执行完后代表一次循环完成,然后在执行2.以此类推。1永远只执行一次。++I 等价于 i+1

例:求1-10所有奇数的和

#include<stdio.h>
void main()
{
int i;
int sum=0;
for(i=1;i<=10;i=i+2)
sum+=i;
printf("sum=%d\n",sum);
return 0;
}

例:求1-12之间能被3整除的所有数字之和

#include<stdio.h>
void main()
{
int i;
int sum=0;
for(i=1;i<=12;i++)
{
if(i%3==0)                                                                  //for默认只能控制一个语句,如果要控制多个语句,需要加{}
sum=sum+i;
}
printf("sum=%d\n",sum);
return 0;
}



#include<stdio.h>
void main()
{
int i;
float sum=0;
for(i=1;i<=100;i++)
sum=sum+1/(float)(i);                        //强制类型转换
printf("sum=%f\n",sum);
return 0;
}

第四章 选择结构

分支结构,并写出运行结果。

使用if、switch语句实现分支结构程序

上面的是分段函数实现的功能,if else语句


n输入一个整数,如果该数是偶数,则输出该整数,如果是奇数,则输出该数与2的乘积。

#include <stdio.h>
#include <math.h>
void main()
{
int x, y;
printf("Enter x : ");
scanf("%d", &x);
if (x %2 == 0)                                                                          //判断一个数是偶数,注意除号/    和求余%的区别
printf("x=%d\n", x);
else
{
y = x * 2;
printf("y=%d\n", y);
}
return 0;
}


三目运算符:

A?B:C   等价于 

if(A)

    B;

else   C;

例子:#include<stdio.h>

            void main()

             {

                 int i;

                  i=(0>2?5:1);

                printf("%d",i);                                      //程序的运行结果是1

              }

逗号表达式:

格式:(A,B,C,D)

功能:从左到右执行,最终表达式是最后一项的值

#include<stdio.h>

            void main()

             {

                 int i;

                  i=(1,2,3,4);

                printf("%d",i);                                      //程序的运行结果是4

              }



#include<stdio.h>

            void main()

             {

                 int i,j=2;

                  i=(j++,++j,j+2,j-3);

                printf("%d",i);                                      //程序的运行结果是1                             j+2的值并没有赋值给j

              }


For嵌套的使用举例:

#include<stdio.h>

            void main()

             {

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

                      for(j=2;j<5;j++)

                          printf("嘻嘻\n");

                      printf(" 哈哈\n");                             //程序的运行结果是9个嘻嘻,一个哈哈

                 return 0;

              }

While语句的执行过程

1.执行的顺序:

   格式:

           while(表达式)

                 语句;

2.与for的相互比较

  使用for语句求1-100之和                                                          使用while语句

 #include<stdio.h>                                                                 #include<stfio.h>                               

void main(void)                                                                      void main()

{                                                                                               {

    int sum=0;                                                                            while(i<=100)

    int i;                                                                                            {sum=sum+i;   i++

                                                                                                            }

 for(i=1;i<=100;i++)

      sum=sum+i;

  printf("sum=%d\n",sum);

}

for和while语句是可以相互转换的


While和for在逻辑上完全等价,但是for在逻辑上更强。更容易理解,更不容易出错。推荐多使用for

3.while举例

从键盘输入一个文字,如果他是否是回文数,返回YES,不是则为NO,回文数正着写和倒着写一样

#include<stdio.h>
int main(void)
{
int val;   //存放待放入的数字
int m;
int sum = 0;
printf("请输入需要判断的数字:");
scanf("%d",&val);
m=val;
while(m)
{
sum=sum*10+m%10;
m/=10;
}
if(sum==val)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
试数过程:
输入val=12321          (回文数)
m=val=12321


sum=0*10+12321%10=1
m=12321/10=1232


sum=1*10+1232%10=12
m=1232/10=123


sum=12*10+123%10=123
m=123/10=12


sum=123*10+12/10=1232
m=12/10=1


sum=1232*10+1%10=12321              //注意此处,1%10=1
m=1/10=0                                             //程序截止


对于斐波拉切数列,1  2  3  5  8 13  21  25 是不是感觉很有规律,下面让我们看看怎样用程序来求它的第n项

#include<stdio.h>
int main(void)
{
int n;
int f1,f2,f3;
int i;
 
f1=1;
f2=2;


printf("请输入您需要求得序列");
scanf("%d",&n);


if(n==1)
{
f3=1;
}
else if(n==2)
{
f3=2;
}
else
{
for(i=3;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
}
for(i=0;i<=n;i++)
printf("%d\n",f3);


return 0;
}


假设输入的第5项,程序的执行过程是:
n=5;    i=3,第一次循环
f3=f1+f2=3;
f1=f2=2;
f2=f3=3


i=4,第二次循环
f3=f1+f2=2+3=5;
f1=f2=3;
f2=f3=5;


i=5第三次循环
f3=f1+f2=3+5=8    此既为第五项



4.什么时候用while 什么时候用for,,看情况吧

for循环又称(计数器式循环)也就是说for循环大都是应用于明确循环次数这样的循环。例如:for(int i =0 ; i<1000 ;i++)这样的循环,循环次数明确,大都采用for循环。

while循环分为do while(直到型循环) 和while(当型循环)都是不定次数循环。用在循环次数不确定的情况下。

格式:do......while 主要用于人机交互

do {}while(表达式)

while(表达式)
{}

for(1;2;3)
A;

while和for语句只要表达式是假的,可能一次都不执行do......while先执行一次,然后再判别表达式,因此do.....while≠while,for语句

Break的用法:
break和continue
break如果用于循环是用来终止循环
break如果用于switch,则是用于终止switch
break不能直接用于if,除非if属于循环内部的一个子句

#include<stdio.h>int main(void){int i,j;for(i=0;i<3;i++){for(j=1;j<4;++j)break;              //多层循环中,break只能终止离他最近的循环printf("今天感觉萌萌哒!\n");}}

程序运行结果如下:

在多层switch中,break只能终止离他最近的switch语句:
#include<stdio.h>int main(){int x=1,y=0,a=0,b=0;switch(x)   //第一个switch{case 1:switch(y)       // 第二个switch{case 0:a++;break;     //终止的是第二个switchcase 1:b++;break;}b=100;break;    //终止的是第一个switchcase 2:a++;b++;break;}printf("%d %d\n",a,b);     return 0;}
Continue的用法://continue//用于跳过本次循环预余下的语句//转去判断是否需要执行下次循环......1. for(1,2,3){A;B;continue;    //如果执行该句,则执行完该语句C;D;}上图中,如果执行continue,那么C,D将不会被执行,会执行3while(表达式){A;B;continue;C;D;}
上图中,如果执行了continue,那么后面的而CD将不会执行,会去执行表达式#include<stdio.h>int main(void){int i,j;char ch;scanf("%d",&i);printf("i=%d\n",i);while((ch=getchar())!='\n')continue;scanf("%d",&j);printf("j=%d\n",j);return 0;}

数组的使用:

#include<stdio.h>int main(void){int a[5]={1,2,3,4,5};     //a是数组的名字,5表示数组元素的个数    int i;for(i=0;i<5;i++)printf("%d\n",a[i]);return 0;}

为什么需要数组1.解决大量同类型数据的存储和使用问题2.用数组模拟现实世界。int [25]:一维数组,可以当做一个线性结构int a[8][6]:可以当做一个平面,8行6列,共48个元素int a[3][4][5]:可以当做一个三维立体数组的分类数组的分类一维数组怎样定义一维数组:·为n个变量分配存储空间:数组内存空间是连续的。·所有的变量类型必须相同:数组不可能第一个元素是整形,第二个元素是浮点型。·所有变量所占用的字节必须相等。 例子:int [5]对数组的操作:初始化 赋值 排序 求最大/小值 倒置 查找 插入 删除int a[5]={1,2,3,4,5}不完全初始化,未被初始化的元素自动为0int a[5]={1,2,3}不初始化,所有的元素都是垃圾值int a[5]清0int a[5]={0}错误写法:int a[5];a[5]={1,2,3,4,5};    // 错误只有在定义数组的同时才可以整体赋值

初始化

  完全初始化

int a[5]={1,2,3,4,5}不完全初始化,未被初始化的元素自动为0int a[5]={1,2,3}不初始化,所有的元素都是垃圾值int a[5]清0int a[5]={0}错误写法:int a[5];a[5]={1,2,3,4,5};    // 错误只有在定义数组的同时才可以整体赋值

数组的5个元素不是用a来代表的,是用a0,a1…a4来代表的,所以说数组名a代表的不是数组的5个元素,数组名代表的是数组的第一个元素的地址

·赋值

其他没有赋值的是一些垃圾值
把一个数组倒过来#include<stdio.h>int main(void){int a[8]={1,2,3,4,5,6,7,8};int i,j;int t;i=0;j=7;while(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;--j;}for(i=0;i<8;i++)printf("%d\n",a[i]);return 0;} /*Ö´Ðйý³Ì:i=0,i<7;t=a[0]=1                 a[0]=a[7]=8 a[7]=t=1     i++ i=1,--j ,j=6 t=a[1]=2 a[1]=a[6]=7 a[6]=t=2 i=2,j=5       2<5 t=a[2]=3 a[2]=a[5]=6 a[5]=t=3 i=3,j=4       3<4 t=a[3]=4 a[3]=a[4]=5 a[4]=t=4 i=4,j=3      i>J 运行结束

·排i序

·求最大/小值

·倒置

·查找

·插入

·删除
二维数组:
int a[3][4]
总共是12个元素,可以当做3行4列看待,这12个元素的名字依次是
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j]表示第i+1行第j+1列元素
int a[m][n];该二维数组右下角的元素只能是a[m-1][n-1]
二维数组的初始化:
初始化
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4]={
{1,2,3,4}
{5,6,7,8}
{9,10,11,12}
}
输出二维数组的内容:
多维数组;
是否存在多维数组:不存在
因为内存是线性一维的,在内存中是不分行和列的。
N维数组可以当做是n-1维数组的一维数组
比如: int a[3][4]该数组是含有3个(3行)元素的一维数组,每个元素可以再分为4个小元素
int a[3][4][5]该数组是含有3个元素的一维数组,每个元素是4行5列的二维数组
函数(第二个重点):

为什么需要函数:

·避免了重复性操作。

·有利于程序的模块化。

C语言基本单位是函数,C#、C++和JAVA基本单位是类。

什么叫做函数

·逻辑上:能够完成特定功能的独立的代码块。

  物理上:能够接收数据【也可以不接收数据】,能够对接收的数据进行处理【也可以不对数据进行处理】,能够将数据处理的结果返【也可以没有返回值】。

·总结:函数是个工具,他是为了解决大量类似问题而设计的,函数可以当做黑匣子(内部原理不用管)。

如何定义函数

·函数的返回值,函数的名字(函数的形参列表)

{

                 函数的执行体

}

·函数定义的本质:详细描述函数之所以能够实现某个特定功能的具体方法。

函数中的变量叫做形参;数组中的变量叫元素。

一旦函数执行完毕,其内部的形参所占空间就被收回。

·return表达式的含义

Return是终止被调函数,向主调函数返回表达式的值,如果表达式为空,则只终止函数,不向被主函数返回任何值。

Break是用来终止(就近的)循环和switch语句。而return是用来终止被调函数的。

·函数返回值的类型,也称为函数的类型,因为如果函数名前的返回值类型和函数执行体中的return表达式中表达式的类型不同的话,则最终函数返回值的类型以函数名前的返回值类型为准

在上图中,函数的返回值以函数前的数值类型为准。

函数的分类

·有参函数和无参函数。

·有返回值和无返回值。

·库函数和用户自定义函数。

·普通函数和主函数(main函数)

1:一个程序有且只有一个主函数。

2:主函数可以调用普通函数,普通不能调用主函数。

3:普通函数可以相互调用。

4:主函数是程序的入口,也是函数的出口。

5:值传递函数和地址传递函数。

 判断一个数是否是素数:

使用函数判断一个数是否是素数:

函数和程序的调用应该注意的地方:

函数的声明:

当函数没有返回值时,那么规范的写法是要在函数中写明void的。

在上图中,第一个void表示没有返回值,而第二个void表示不接收形参,也就是函数不接收数据。

如果想把函数写在程序的后面,那么需要写函数声明






0 0
原创粉丝点击