栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

vs(c)-2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vs(c)-2

vs2022
  • 1.函数、数组
  • 2.操作符
    • 算术操作符:+ - * / %(取模)
    • 移位操作符:>> <<
    • 位操作符:&(按位与) |(按位或) ^(按位异或)
    • 赋值操作符:= += -= *= ^= |= >>= <<=
    • 单目操作符:只有一个操作数
      • ~:二进制 按位取反
      • ++
      • (类型):强制类型转换
      • 逻辑操作符:&& ||
    • 条件操作符:三目操作符
  • 3.常见关键字
  • 4.define定义常量和宏
  • 5.指针
  • 6.结构体
  • 7.分支语句
    • 一:if-else
    • 二:switch
  • 9.循环语句
    • 一:while:先判断再执行
    • 二:for
    • 三:do-while:先执行再判断
  • 10.练习
    • (1)计算n的阶乘
    • (2)计算1!+2!+3!+...+10!
    • (3)在一个有序数组中查找具体的某个数字n。编写int binsearch(int x, int v, int n);功能:在v[0]<=v[1]<=v[2]<= ....<=v[n-1]的数组中查找x。
      • 折半(二分)查找
    • (4)编写代码,演示多个字符从两端移动,向中间汇聚。
    • (5)编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
    • (6)猜数字:程序自动产生1-100的数,猜测这个数字。猜错:告知猜大、小,直至猜对。除非退出,游戏可持续。

学习视频: b站比特c语言就业班

1.函数、数组

函数

数组 :用下标访问,下标从0开始

2.操作符 算术操作符:+ - * / %(取模)

移位操作符:>> <<

位操作符:&(按位与) |(按位或) ^(按位异或) 赋值操作符:= += -= *= ^= |= >>= <<=

单目操作符:只有一个操作数




~:二进制 按位取反

++


(类型):强制类型转换

逻辑操作符:&& ||



条件操作符:三目操作符

exp1 ? exp2 : exp3:exp1成立—>exp2,exp1不成立—>exp3

3.常见关键字

C语言提供,关键字不能用户创建,不能作为变量名


计算机的数据存储位置:靠前快、贵
 内存:更小
 高数缓存:10+M
 内存:8-16G
 硬盘:500G+
 网盘:例如百度网盘

typedef:类型重命名

static
(1)局部变量

(2)全局变量

(3)函数

4.define定义常量和宏

define是预处理指令,不是关键字
1.define定义常量

2.define定义宏

5.指针

计算机:32/64位:32/64根地址线-物理线-通电-0/1
内存单元:字节




6.结构体

7.分支语句 一:if-else

语法结构:表达式为真,语句执行
代码比较:最好 将常量放在左边

if(表达式)
	语句;

或者:表达式为假,else执行

if(表达式)
	语句1;
else
	语句2;

多分支:

if(表达式)
	语句1;
else if(表达式)
	语句2;
else
	语句3;

执行多条语句:

if(表达式){
	语句列表;
}
else if(表达式){
	语句列表;
}
else{
	语句列表;
}


else匹配:匹配最近的if



二:switch

用于多分支
break:跳出自己所在的switch语句

switch(整型表达式){
语句项;
}


case 整形 常量表达式
字符也属于整形:字符以ASCII存储

9.循环语句 一:while:先判断再执行
语法结构
while(表达式)
	循环语句/代码块;


getchar与putchar


报错问题
参考:C6064:缺少“scanf_s”的整型参数(对应于转换说明符“2”


scanf不读取空格
gets可以读取空格

二:for

1.控制变量最好:前闭后开
2.判断部分省略:恒为真:死循环
3.多个循环变量控制

语法
for(表达式1(初始化);表达式2(判断);表达式3(调整))
	循环语句;

break和continue

三:do-while:先执行再判断
语法结构:
do
	循环语句;
while(表达式);
10.练习 (1)计算n的阶乘
	int i = 0;
	printf("计算的n:");
	scanf_s("%d",&i);
	int sum = 1;
	for(;1<=i;i--){
		sum = sum*i;
	}
	printf("%dn",sum);

(2)计算1!+2!+3!+…+10!
	int i = 1;
	int sum2 = 0;
	for (; i < 11;i++) {
		int j = i;
		int sum1 = 1;
		for (; 1 <= j;j--) {
			sum1 = sum1 * j;
		}
		sum2 = sum1 + sum2;
	}
	printf("和:%dn", sum2);

	//优化算法
	int i = 1;
	int n = 10;
	int sum1 = 1;
	int sum2 = 0;
	for (; i<=n;i++) {
		sum1 *= i;
		//sum1=i*sum1,9!=9*8!
		sum2 += sum1;
	}
	printf("和:%dn", sum2);

(3)在一个有序数组中查找具体的某个数字n。编写int binsearch(int x, int v, int n);功能:在v[0]<=v[1]<=v[2]<= …<=v[n-1]的数组中查找x。 折半(二分)查找

由中间值mid判断 左右部分 相对于 查找元素k 的大小,一次性排除一半数值

//折半(二分)查找
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	//目标数值k
	int k = 0;
	scanf_s("%d",&k);
	//数组元素个数
	int sz = sizeof(arr) / sizeof(arr[0]);
	//下标
	int left = 0;
	int right = sz - 1;
	//查找
	while (left <= right) {
		int mid = (left + right) / 2;
		if (arr[mid] < k)
			left = mid + 1;
		else if (arr[mid] > k)
			right = mid - 1;
		else {
			printf("find!it;%dn", mid);
			break;
		}
	}
	if (left > right)
		printf("not found!");
	return 0;
}

(4)编写代码,演示多个字符从两端移动,向中间汇聚。
#include 
#include //strlen的头文件
#include //Sleep的头文件
int main() {
	//编写代码,演示多个字符从两端移动,向中间汇聚
	char arr1[] = "welcome!";
	char arr2[] = "#######!";
	int left = 0;
	int right = strlen(arr1) - 1;

	while (left <= right) {
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%sn", arr2);
		Sleep(1000);//单位毫秒:1000ms=1s
		system("cls");//清屏
		left += 1;
		right -= 1;
	}
	printf("%sn", arr2);
	return 0;
}

(5)编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。

strcmp:比较对应位置的ASCII,出现不相等/比较完
strcmp(字符串1,字符串2);
<0:1<2
0:1=2
>0:1>2

#define _CRT_SECURE_NO_WARNINGS
#include 
#include //strcmp的头文件

int main() {
	int i = 0;
	char passwd[20] = { 0 };
	for (; i < 3; i++) {
		printf("key:");
		//数组是指针,不加取地址符,但必须在scanf下使用
		scanf("%s", passwd);
		//scanf_s("%s", &passwd, 20);
		//两个字符串比较不可以passwd == "123456":比较的是两字符串首字符的地址。应该用strcmp
		if (strcmp(passwd, "123456") == 0) {
			printf("succes!");
			break;
		}
		else if (strcmp(passwd, "123456") != 0 && i < 2)
			printf("againn");
	}
	if (i == 3)
		printf("error!");
	return 0;
}

(6)猜数字:程序自动产生1-100的数,猜测这个数字。猜错:告知猜大、小,直至猜对。除非退出,游戏可持续。
#define _CRT_SECURE_NO_WARNINGS
#include 
#include //srand、rand的头文件
#include //time的头文件

//菜单
void manu() {
	printf("##################n");
	printf("####  0.exit  ####n");
	printf("####  1.play  ####n");
	printf("##################n");
}

//游戏
void game() {
	//生产随机数
	//rand:生成数:0—RAND_MAX(0x7ff:16进制,32767)之间,用srand改变其生产起点
	//模100的余数:0-99,+1,0-100
	int ret = rand() % 100 + 1;

	//猜数字
	int guess = 0;
	printf("猜:");
	while (1) {
		scanf("%d", &guess);
		if (guess < ret) {
			printf("小n");
			printf("再猜:");
		}
		else if (guess > ret) {
			printf("大n");
			printf("再猜:");
		}
		else {
			printf("YEAH! %dn",ret);
			break;
		}
	}
}

int main() {
	int input = 0;

	//在调用rand的之前调用srand设置随机数的生成,需要unsigned int类型
	//时间戳:随时变化的值,time()获取,返回time-t类型,本质上也是(64位)整形
	srand((unsigned int)time(NULL));//利用time设置一个随机的起点

	do {
		manu();//打印菜单
		printf("选择:");
		scanf("%d",&input);
		switch (input) {
			case 1:
				printf("begin!n");
				game();
				break;
			case 0:
				printf("bye!n");
				break;
			default:
				printf("error!n");
				break;
		}
	} while (input);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号