Visual studio 学习

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;     //终止的是第二个switch
				case 1:
					b++;
					break;
		}
			b=100;
			break;    //终止的是第一个switch
	case 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将不会被执行,会执行3
while(表达式)
{
	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} 不完全初始化,未被初始化的元素自动为0 int a[5]={1,2,3} 不初始化,所有的元素都是垃圾值 int a[5] 清0 int a[5]={0} 错误写法: int a[5]; a[5]={1,2,3,4,5};    // 错误 只有在定义数组的同时才可以整体赋值

初始化

  完全初始化

int a[5]={1,2,3,4,5} 不完全初始化,未被初始化的元素自动为0 int a[5]={1,2,3} 不初始化,所有的元素都是垃圾值 int a[5] 清0 int 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表示不接收形参,也就是函数不接收数据。

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值