2020-11-04

C/C++基础语言学习

目录

前言

一、基本字符类型

二、分支语句与循环语句

1.分支语句

2.循环语句

3.基础知识练习

总结


前言

本文总结了最近看视频学习的一些c++内容,软件用VS2010即可。

一、基本字符类型

//char字符数据类型,short短整形
	char ch = 'a';
	printf("%c\r\n",ch); //%c打印字符格式的数据
	
	int age=20;
	printf("%d\r\n",age); //%d打印整型十进制的数据
	
	//short int短整型,long为长整型,long long更长的整形,float为单精度浮点数,double为双精度浮点数
	//%f打印浮点型,%p以地址的形式打印,%x打印十六进制
	
	printf("%d\r\n",sizeof(char));     //计算char所占的字节数
	printf("%d\r\n",sizeof(int));
	printf("%d\r\n",sizeof(long));
	printf("%d\r\n",sizeof(long long));
	printf("%d\r\n",sizeof(float));
	printf("%d\r\n",sizeof(double));
	
	float weight=45.6f;
	//全局变量定义在({})之外的,局部变量定义在({})之内
	int num1=10,num2=20,sum=0;
	sum=num1+num2;
	printf("sum=%d\r\n",sum);
	
	sum=Add(30,50);
	printf("sum=%d\r\n",sum);
	
	//常量1、const-常属性
	const int num=3;   //num被const修饰,无法再改变,常属性变量,num不是常量
	//#define定义的标示符常量
	#define  max  10
	int arr[max]={0};
	//枚举常量,枚举——一一列举,枚举关键字 enum
	enum  Sex
	{
		MALE,FEMALE,SECRET
	};
	enum Sex s=FEMALE;
	printf("%d\r\n",MALE);
	printf("%d\r\n",FEMALE);
	printf("%d\r\n",SECRET);
	
	//字符串的结束标志是一个\0的转义字符,\0是字符串结束标志,不算字符串的内容
	char arr1[]="abc";
	char arr2[]={'a','b','c'};
	printf("%s\r\n",arr1);
	printf("%s\r\n",arr2);
	printf("%d\r\n",strlen(arr1));  //strlen求字符长度函数
	printf("%d\r\n",strlen(arr2));  //头文件是string.h
	
	printf("%s\r\n","\"");          //打印单独的双引号
	
	printf("%c\r\n",'\x61');      //单引号是字符 %c,双引号是字符串%s,\x61为十六进制,打印十六进制对应的十进制数所对应ASCII码值对应的字符
	// \t为水平制表符 转义字符,x61的十进制为97,ascii为97对应的字符为a,故打印字符a
	
	int input;
	if(input==1)
		printf("好offer\r\n");
	else
	  printf("卖红薯\r\n");
	
	//循环语句   while循环   for   do.....while三个循环
//	int i=0;   //对i赋初值,while循环才会执行
//	while(i<300)
// {
//    printf("敲一行代码:%d\r\n",i);
//		i++;
//  }
//    if(i>=300)
//		printf("好offer\r\n");
	
	//数组的概念,一组相同类型的元素集合
	int arr3[10]={0,1,2,3,4,5,6,7,8,9}; //定义存放十个元素的数组
	printf("%d\r\n",arr3[0]);
	
//	int i=0;
//	while(i<10)
//	{
//		printf("数组元素:%d\r\n",arr3[i]);
//		i++;
//	}
  int a=1;    //a占4个字节,总共32位,对应的二进制为0000 0000 0000 0000 0000 0000 0000 0001
  int b=a<<3; //左移3位   0000 0000 0000 0000 0000 0000 0000 1000  
	printf("%d\r\n",b);
	
	//&按位与,|按位或,^按位异或
	int c=5;       //0101
	int d=7;       //0111
	int e=c&d;
	printf("%d\r\n",e);
	int f=c|d;
	printf("%d\r\n",f);
	int g=c^d;        //相同为0,相异为1
	printf("%d\r\n",g);
	
	//复合赋值符号,=,+=,-=,*=,/=,&=,^=,|=,>>=,<<=
	//单目操作符,一个操作数;双目操作符,两操作数;三目操作符,三个操作数;
	//0为假,一切非0为真
	//(类型)  强制类型转换
	
	int aa=10;
	printf("%d\r\n",aa);
	printf("%d\r\n",!aa);
	
	int Max =0;
	Max=MAX(30,50);
	printf("%d\r\n",Max);
	
	int aa1=10,bb1=20,max1=0;
	max1=aa1>bb1?aa1:bb1;	  //条件运算符
	printf("%d\r\n",max1);
	
	// unsigned定义的变量总是正的,无符号型
	
	int i=0;
	while(i<5)
	{
	  test();   //1.加static,打印值为2 3 4 5 6,不加static,输出值为2 2 2 2 2,注意函数中static的应用
		i++;      //2.static修饰局部变量,局部变量的生命周期变长;static修饰全局变量,改变了变量的作用域-让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法使用了
	}           //3.static修饰函数,改变了函数的作用域即链接属性
	
	int aaa=10;
	printf("%p\r\n",&aaa);  //打印aaa的地址,有一种变量来存放地址的-指针变量
	int* p=&aaa;
	printf("%p\r\n",p);
	printf("%d\r\n",*p);    //取值
	*p=20;
	printf("%d\r\n",aaa);
	
	char ch1='a';
	char* pp=&ch1;
	printf("%p\r\n",pp);
	printf("%c\r\n",*pp);
	*pp='c';
	printf("%c\r\n",ch1);
	
	//结构体
	typedef struct
	{
	 char name[20];
	 int price;
	}BOOK;
	
	BOOK  book={"c语言程序设计",55};
	printf("%s\r\n",book.name);
	printf("%d\r\n",book.price);
	
	BOOK  book1={"c语言程序设计",55};
	BOOK* book2=&book1;
	printf("%s\r\n",(*book2).name);
	printf("%d\r\n",(*book2).price);
	
	printf("%s\r\n",book2->name);
	printf("%d\r\n",book2->price);
	
	//字符串更改名字,不能直接book.name="C++",因为name是一个数组
	//正确写法:
	strcpy(book.name,"C++");      //strcpy-string copy  -字符串拷贝-库函数-string.h

二、分支语句与循环语句

1.分支语句

//c语言是一门结构化的程序设计语言   1.顺序结构  2.选择结构  3.循环结构
//多分支结构  if(表达式1)  语句1;else if(表达式2)  语句2;else(表达式3)  语句3;   三个语句只能被执行一个
	int age1=20;
	if(age1<18)
		printf("未成年\r\n");
	else if(age1>=18&&age1<28)
		printf("青年\r\n");
	else if(age1>=28&&age1<50)
		printf("壮年\r\n");
	else if(age1>=50&&age1<90)
		printf("老年\r\n");
	else  
		printf("老不死\r\n");
	
//0为假,非0为真  else与其离得最近的if进行匹配
	int a11=0;
	int b11=2;
	if(a11==1)
	{
		if(b11==2)
			printf("hehe\r\n");
	  else
			printf("haha\r\n");
	}
	
	//  if(condition) {return x;}   return y;     这个语句相当于条件成立返回x,否则返回y
	int num11=5;
		//	if(num11=6)
		//	{
		//	  printf("hehe\r\n");     可以输出呵呵
		//	}
		//	if(7==num11)
		//	{
		//	  printf("hehe\r\n");     不可以输出hehe
		//	}
	
	//1.判断一个数是否为奇数
//	int num22;
//	scanf("%d",&num22);
//	if(num22%2==0)
//		printf("偶数:%d\r\n",num22);
//	else
//		printf("奇数:%d\r\n",num22);
	//2.输出1-100之间的奇数
	int num21;
	for(num21=0;num21<100;num21++)
	{
	  if(num21%2!=0) printf("奇数:%d\r\n",num21);
	}
	
	//switch语句
	int day;
	for(day=0;day<8;day++)
	{
		switch(day)
		{
		  case 0:
				printf("星期一\r\n");break;
			case 1:
				printf("星期二\r\n");break;
			case 2:
				printf("星期三\r\n");break;
			case 3:
				printf("星期四\r\n");break;
			case 4:
				printf("星期五\r\n");break;
			case 5:
				printf("星期六\r\n");break;
			case 6:
				printf("星期日\r\n");break;
			default:
				printf("error\r\n");break;
		}
	}

2.循环语句

//循环语句 while  do...while   for
	int ab=1;
	while(ab<=10)
	{
	 if(ab==5) break;       //终止循环
	 printf("%d\r\n",ab);
	 ab++;
	}
	
//	int ac=1;
//	while(ac<=10)
//	{
//	 if(ac==5) continue;  //终止本次循环,本次循环中continue后面的代码不会再执行,直接跳到while语句的判断部分,进行下一次的入口判断
//	 printf("%d\r\n",ac);
//	 ac++;
//	}
	int ad=1;
	while(ad<=10)
	{
	 ad++;
	 if(ad==5) continue;  //终止本次循环,本次循环中continue后面的代码不会再执行,直接跳到while语句的判断部分,进行下一次的入口判断
	 printf("%d\r\n",ad);
	}
	
	//打印10个hehe
	int ii=0,jj=0;
	for(;ii<10;ii++)
	{
	  for(;jj<10;jj++)
		{
	    printf("hehe\r\n");	
		}
	}
	//打印100个呵呵
	int ii1=0,jj1=0;
//	for(ii1=0;ii1<10;ii1++)
//	{
//	  for(jj1=0;jj1<10;jj1++)
//		{
//	    printf("hehe\r\n");	
//		}
//	}
//	
	for(ii1=0,jj1=0;ii1<2&&jj1<5;++ii1,jj1++)
	{
	  printf("hehe\r\n");
	}
	
//	int i2=0,k2=0;
//	for(i2=0,k2=0;k2=0;i2++,k2++) k2++;   //该语句循环0次,因为k2=0为判断语句为假,所以for语句不循环	
	
	//do...while循环
//	do
//		循环语句;
//	while(表达式);  先循环后判断
	int k=1;
	do
	{
	  printf("%d\r\n",k);
		k++;
	}
	while(k<=10);

3.基础知识练习

1.计算n的阶乘
//	int k3=0,n=0,sum1=1;
//	scanf("%d",&n);
//	for(k3=1;k3<=n;k3++)
//	{
//	 sum1*=k3;
//	}
//	printf("sum1=%d\r\n",sum1);
	
	//计算1!+2!+3!...+10!
//	int numb,sum2=1,sum3=0;
//	for(numb=1;numb<=10;numb++)
//	{
//	 sum2*=numb;
//	 sum3+=sum2;
//	}
//	printf("sum3=%d\r\n",sum3);

2.在一个有序数组中查找具体某个数字n。编写int binsearch(int x,int v[],int n);功能:在v[0]<=v[1]<=v[2]<=...<=v[n-1]的数组中查找x
	//二分查找算法
	int arr11[]={1,2,3,4,5,6,7,8,9,10};
	int kk=10;
	int sz=sizeof(arr11)/sizeof(arr11[0]);
	int left=0;        //左下标
	int right=sz-1;    //右下标
	while(left<=right)
	{
		int mid=(left+right)/2;
		if(arr11[mid]>kk)
		{
			 right=mid-1;
		}
		else if(arr11[mid]<kk)
		{
			 left=mid+1;
		}
		else
		{
			printf("找到了,下标是:%d\r\n",mid);
			printf("%d\r\n",arr11[mid]);
			break;    //跳出循环
		}
  }
	if(left>right)
	{
	  printf("找不到了\r\n");
	}

3.//编写代码,演示多个字符从两端移动,向中间汇聚
	char arr4[]="welcome to bit!!!!!!!!";
	char arr5[]="######################";
	int left1=0;
	//int right1=sizeof(arr4)/sizeof(arr[4]-2);    //因为字符串以\0结束,所以得到最后一个!的下标,则应该arr[4]-2才正确
	int right1=strlen(arr4)-1;
	while(left1<=right1)
	{
		arr5[left1]=arr4[left1];
		arr5[right1]=arr4[right1];
		printf("%s\r\n",arr5);
		left1++;
		right1--;
	}

4.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次输入均错误,则退出程序)
//	int in=0;
//	char password[20]={0};
//	for(in=0;in<3;in++)
//	{
//	  printf("请输入密码\r\n");
//		scanf("%s",password);
//		if(strcmp(password,"123456")==0)   //==不能用来比较两个字符串是否相等,应该使用库函数-strcmp进行比较
//		{
//		  printf("登录成功\r\n");
//			break;
//		}
//		else
//		{
//		  printf("密码错误\r\n");
//		}
//	}
//	if(in==3)
//		printf("三次密码均错误,退出程序\r\n");

5.输入三个数,从大到小输出
	int aa2=7,bb2=13,cc2=26;
//	scanf("%d%d%d\r\n",&aa2,&bb2,&cc2);        //算法实现  a放最大值,b次之,c放最小值
	if(aa2<bb2)
	{
	  int tmp=aa2;
		aa2=bb2;
		bb2=tmp;
	}
	if(aa2<cc2)
	{
		int tmp=aa2;
		aa2=cc2;
		cc2=tmp;
	}
	if(bb2<cc2)
	{
		int tmp=bb2;
		bb2=cc2;
		cc2=tmp;
	}
	printf("%d %d %d\r\n",aa2,bb2,cc2);

6.打印100到200之间的素数
//	int ii8=0;
//	int count22=0;
//	for(ii8=100;ii8<=200;i++)
//	{
//	  //判断i是否为素数,试除法判断,产生2->ii2-1
//		int jj8=0;
//		for(jj8=2;jj8<ii8;jj8++)
//		{
//		  if(ii8 % jj8==0)
//			{
//			  break;
//			}
//		}
//		if(jj8==ii8)
//		{
//			count22++;
//		  printf("%d\r\n",ii8);
//		}
//	}
//	printf("%d\r\n",count22);

//	int ii8=0;
//	int count1=0;
//	for(ii8=100;ii8<=200;i++)
//	{
//	  //判断i是否为素数,试除法判断,产生2->ii2-1
//		int jj8=0;
//		for(jj8=2;jj8<=sqrt(ii8);jj8++)
//		{
//		  if(ii8 % jj8==0)
//			{
//			  break;
//			}
//		}
//		if(jj8>sqrt(ii8))
//		{
//			count1++;
//		  printf("%d\r\n",ii8);
//		}
//	}
//	printf("%d\r\n",count1);

7.//乘法口诀表
	int ii7=0;
	for(ii7=1;ii7<=9;ii7++)
	{
	  int jj7=1;
		for(jj7=1;jj7<=ii7;jj7++)
		{
		  printf("%d*%d=%-2d ",ii7,jj7,ii7*jj7);    //%2d右对齐,%-2d为左对齐
		}
		printf("\n");
	}

8.猜数字游戏 1.电脑会生成一个随机数  2.猜数字
//	void menu()
//	{
//	  printf("**************************\n");
//		printf("****  1.play  0.exit  ****\n");
//		printf("**************************\n");
//	}
//	void game()
//	{
//	  printf("猜数字\n");
//		//1.生成随机数
//		int ret=0;
//		int guess=0;
//	  ret=rand()%100+1;      //生成1-100的随机数
		printf("%d\n",ret);
//		//2.猜数字
//		while(1)
//		{
//		  printf("猜数字>:");
//			scanf("%d",&guess);
//			if(guess>ret)
//			{
//			  printf("猜大了\n");
//			}
//			else if(guess<ret)
//			{
//			  printf("猜小了\n");
//			}
//			else
//			{
//			  printf("恭喜你,猜对了\n");
//				break;
//			}
//		}	
//	}
//	int input1=0;
//	//时间戳  当前计算机的时间-计算机的起始时间(1970.1.1.0:0:0)=(xxxx)秒
//	srand((unsigned int)time(NULL));   //利用时间戳生成随机数
//	do
//	{
//	  menu();
//		printf("请选择>:");
//		scanf("%d",&input1);
//		switch (input1)
//		{
//		  case 1:
//				game();  //猜数字游戏
//			  break;
//			case 0:
//				printf("退出游戏\n");
//			  break;
//			default:
//				printf("选择错误\n");
//			  break;	
//		}
//	}while(input1);

9.goto语句在深层循环中调用
	//关机程序
//	char input2[20]={0};
//	//shutdown -s -t 60   一分钟关机指令
//	//systerm()-执行系统命令的
//	systerm("shutdown -s -t 60");
//again:
//	printf("请注意,你的电脑在1分钟内关机,请输入:我是猪,就取消关机\n请输入>:");
//	scanf("%s",input2);
//	if(strcmp(input2,"我是猪")==0)   //比较两个字符串
//	{
//	  systerm("shutdown -a");
//	}
//	else
//	{
//	  goto again;
//	}

 


总结

内容比较简单,看视频做的简单笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值