新生培训 day1 C语言基础 顺序 分支 循环 数组 字符串 函数

news/2024/12/31 0:38:29/

比赛地址
b牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

C语言数据类型

字符

整型数

int 2e9

long long 9e18

浮点数

代码示例

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>int main() {// 定义变量int intVar;long longVar;long longLongVar;float floatVar;double doubleVar;char charVar;// 输入整型scanf("%d", &intVar);printf("您输入的整数是: %d\n", intVar);// 输入浮点型scanf("%f", &floatVar);printf("您输入的浮点数是: %.2f\n", floatVar);// 输入双精度浮点型scanf("%lf", &doubleVar);printf("您输入的双精度浮点数是: %.2lf\n", doubleVar);// 输入字符型scanf("%c", &charVar);printf("您输入的字符是: %c\n", charVar);// 输入 long 类型scanf("%ld", &longVar);printf("您输入的 long 是: %ld\n", longVar);// 输入 long long 类型scanf("%lld", &longLongVar);printf("您输入的 long long 是: %lld\n", longLongVar);return 0;
}

常量

定义常量的用途主要有以下两个方面:

  1. 提高代码可读性

    • 常量通过使用具有描述性的名称,能够使代码更易于理解。例如,使用 #define PI 3.14 可以让读者一目了然地知道这个值代表的是圆周率,而不是直接在代码中看到一个数字。
  2. 提高代码的可维护性

    • 当需要修改常量的值时,只需在一个地方进行更改(常量定义处),而不必在代码的多个位置逐一修改。这降低了出错的概率,并且便于在未来进行维护和更新。使用常量可以避免“魔法数字”的出现,减少代码中的硬编码。

这两个用途共同作用,使得代码更加清晰、简洁和健壮。

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>
#define mod 19
int main() {int a, b;scanf("%d %d", &a, &b);printf("%d\n", (a * b) % mod);  return 0;  
}

运算表达式

 ++ a和a++的区别

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>int main() {int a = 1;// 先运算再赋值 int b = ++a; //结果是b=2int a = 1;// 先赋值再运算 int b = a++; //结果是b=1}

用途 数组

判断输出结果

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>int main() {int arr[4]{1,2,3,4};int j=0;for(int i=0;i<3;i++){printf("%d",arr[++j]);} }
/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>int main() {int arr[4]{1,2,3,4};int j=0;for(int i=0;i<3;i++){printf("%d",arr[j++]);} }

运算符大全

逻辑运算符

用于生成条件表达式

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */
#include <stdio.h>int main() {int a = 5;int b = 10;// 使用逻辑与运算符int result = (a > 0 && b < 15);printf("结果为: %d\n", result); // 结果为 1 (true)return 0;
}
#include <stdio.h>int main() {int x = 0;int y = 20;// 使用逻辑或运算符int result = (x == 0 || y > 15);printf("结果为: %d\n", result); // 结果为 1 (true)return 0;
}

条件执行语句

判断语句

单条件判断语句

// 用法
if (条件表达式){// 条件满足要执行的语句
}

条件分支语句 

// 用法
if (条件表达式){// 条件满足要执行的语句
}else{// 条件不满足要执行的语句
}

多条件分支语句 

// 用法
if (条件表达式1){// 满足条件表达式1要执行的语句;
}else if (条件表达式2) {// 满足条件表达式2要执行的语句;
}else if (条件表达式3) {// 满足条件表达式3要执行的语句;
}...else if (条件表达式n) {// 满足条件表达式n要执行的语句;
}else{// 所有条件表达式都不满足要执行的语句;
}

switch语句:开关语句,一般配合case关键字使用

switch(表达式)
{case 常量1: // 如果表达式的值等于常量1,执行下面的语句1语句1 ;break;case 常量2: // 如果表达式的值等于常量2,执行下面的语句2语句2;break;...case 常量n:// 如果表达式的值等于常量n,执行下面的语句n语句n;break;default:// 默认执行的语句,如果没有通过上面的开关语句退出,就会执行下面的语句n+1语句n+1;//break; // default可以省略break;因为它本身就是最后执行,执行完就会退出开关语句。}

注:switch语句如果没有break会一直向下执行直到结束。

举例

新生训练day1

#include<stdio.h>
int main(){int a,b;scanf("%d",&a);b=a%100;if(2<b&&b<6){printf("spring");}if(5<b&&b<9){printf("summer");}if(8<b&&b<12){printf("autumn");}if(b==12&&b<3){printf("winter");}return 0;
}
#include <stdio.h>int main() {int a, b;scanf("%d", &a);b = a % 100;switch (b) {case 3: case 4:case 5:printf("spring\n");break;case 6: case 7:case 8:printf("summer\n");break;case 9: case 10:case 11:printf("autumn\n");break;case 12: case 1:case 2:printf("winter\n");break;default:break;}return 0;
}

循环执行语句

for循环

//用法
for (循环变量赋初值;循环条件;循环变量增量){执行语句;
}

while循环

//用法
while (循环条件){执行语句;
}

do while循环

//用法
do{执行语句;
}while (循环条件);

数组

1. 数组的定义

要定义一个数组,你需要指定数组的类型和大小。例如,定义一个可以存储10个整数的数组:

 

cCopy Code

int numbers[10];

2. 数组的初始化

你可以在定义数组时直接初始化它:

 

cCopy Code

int numbers[5] = {1, 2, 3, 4, 5};

如果你不指定大小,编译器会根据初始化的数据自动推断大小:

 

cCopy Code

int numbers[] = {1, 2, 3, 4, 5}; // 数组大小为5

3. 访问数组元素

数组中的元素可以通过索引访问,索引从0开始。例如,访问第一个元素和最后一个元素:

 

cCopy Code

int first = numbers[0]; // 获取第一个元素 int last = numbers[4]; // 获取第五个元素

4. 修改数组元素

你可以通过索引修改数组中的元素:

 

cCopy Code

numbers[2] = 10; // 将第三个元素改为10

5. 遍历数组

你可以使用循环来遍历数组中的所有元素,例如使用for循环

for (int i = 0; i < 5; i++) { printf("%d ", numbers[i]); 
}

6. 多维数组

C语言支持多维数组,最常用的是二维数组。例如,定义一个3行4列的二维数组:

int matrix[3][4];

初始化一个二维数组:

int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} };

访问二维数组的元素:

  // 遍历二维数组for (int i = 0; i < 2; i++) {        // 外层循环遍历行for (int j = 0; j < 3; j++) {    // 内层循环遍历列printf("%d ", matrix[i][j]); // 打印当前元素}printf("\n"); // 每行结束后换行}

获取元素

int value = matrix[1][2]; // 获取第二行第三列的元素

7. 数组作为函数参数

数组可以作为函数参数传递,但实际上传递的是指向数组首个元素的指针。例如:

void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}
}
printArray(numbers, 5);

函数

C语言入门基础知识【完整版】_c语言基础知识入门-CSDN博客

ASCII码

ASCII码表完整版_asiica码表-CSDN博客

新生赛day1题解

A

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
int main(){printf("Helo word!");return 0;
}

B

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
int main(){int n;scanf("%d",&n);printf("%d",n*262144);return 0;
}

C

遍历

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
int main()
{printf("1*1= 1\n");printf("1*2= 2 2*2= 4\n");printf("1*3= 3 2*3= 6 3*3= 9\n");printf("1*4= 4 2*4= 8 3*4=12 4*4=16\n");printf("1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25\n");printf("1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36\n");printf("1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49\n");printf("1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64\n");printf("1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81\n");
return 0;
}

循环

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include <stdio.h>int main() {int i, j;for (i = 1; i <= 9; i++) {for (j = 1; j <= i; j++) {printf("%d*%d=%2d ", j, i, j * i);}printf("\n"); // 每一行结束后换行}return 0;
}

D

循环

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
int main(){int n;scanf("%d",&n);while(n--){int a;int b;scanf("%d %d",&a,&b);printf("%d \n",a+b);}
}

函数

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
void solve(){int a;int b;scanf("%d %d",&a,&b);printf("%d\n",a+b);
}
int main(){int n;scanf("%d",&n);while(n--){solve();}
}

E

判断

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include<stdio.h>
int main(){int a,b;scanf("%d",&a);b=a%100;if(2<b&&b<6){printf("spring");}if(5<b&&b<9){printf("summer");}if(8<b&&b<12){printf("autumn");}if(b==12&&b<3){printf("winter");}return 0;
}

switch

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include <stdio.h>int main() {int a, b;scanf("%d", &a);b = a % 100;switch (b) {case 3: // fall into springcase 4:case 5:printf("spring\n");break;case 6: // fall into summercase 7:case 8:printf("summer\n");break;case 9: // fall into autumncase 10:case 11:printf("autumn\n");break;case 12: // winter casecase 1:case 2:printf("winter\n");break;default:// If b is not in the range of 1 to 12, you can handle it herebreak;}return 0;
}

F

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include <stdio.h>
#include <math.h>void solve();int main() {int t;scanf("%d", &t);while (t-- > 0) {solve();}return 0;
}void solve() {int n;scanf("%d", &n);if (n == 1) {printf("No\n");} else {int is_prime = 1;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) {is_prime = 0;break;}}if (is_prime) {printf("Yes\n");} else {printf("No\n");}}
}

G

/** Author: Dduo * Date: 2024-10-8* Description: 新生培训day1 */#include <stdio.h>int main() {char x;scanf(" %c", &x); // 注意空格以处理前导空格char temp = 'A';int a = (int)x - 64;for (int i = 1; i <= a; i++) {// 打印前导空格for (int i1 = 1; i1 <= a - i; i1++) {printf(" ");}// 打印递增部分for (int i2 = 1; i2 <= i; i2++) {printf("%c", temp);temp++;}temp -= 1;// 打印递减部分for (int i3 = 1; i3 <= i - 1; i3++) {temp -= 1;printf("%c", temp);}printf("\n");}return 0;
}

http://www.ppmy.cn/news/1536243.html

相关文章

低代码时代的企业信息化:规范与标准化的重要性

在当今数字化转型的浪潮中&#xff0c;企业的信息化建设正逐步向低代码平台倾斜。低代码不仅仅是简化开发过程&#xff0c;更是对企业内部流程、规范和标准化的深刻理解与应用。本文将探讨低代码在企业信息化中的重要性&#xff0c;特别是在运维和开发流程中的标准化&#xff0…

MQ高级:RabbitMQ小细节

在之前的学习中&#xff0c;我们只介绍了消息的发送&#xff0c;但是没有考虑到异常的情况&#xff0c;今天我们就介绍一些异常情况&#xff0c;和细节的部分。 目录 生产者可靠性 生产者重连 生产者确认 MQ可靠性 持久化 Lazy Queue 消费者可靠性 消费者确认机制 失…

chatGPT对我学术写作的三种帮助

chatGPT对我学术写作的三种帮助 概述提高学术写作水平大模型选择概述上下文以提供精确的指令 提升同行评审优化编辑反馈 概述 从生成式人工智能中获得的价值并非来自于技术本身盲目地输出文本&#xff0c;而是来自于与工具的互动&#xff0c;并利用自身的专业知识来完善它所生…

Prompt 初级版:构建高效对话的基础指南

Prompt 初级版&#xff1a;构建高效对话的基础指南 文章目录 Prompt 初级版&#xff1a;构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型&#xff0c;帮助用户更好地理解如何在对话中构建有效的…

第三十九章 创建安全对话

文章目录 第三十九章 创建安全对话概述开始安全对话 第三十九章 创建安全对话 IRIS 支持安全对话&#xff0c;遵循 WS-SecureConversation 1.3 规范。本页介绍如何手动创建安全对话。 概述 在安全对话中&#xff0c;Web 客户端向 Web 服务发出初始请求并接收包含 <Securi…

【机器学习-无监督学习】降维与主成分分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

MySQL存储过程原理、实现及优化

目录 第一章 存储过程概述 1.1 存储过程定义与作用 1.2 存储过程的优点与缺点 1.2.1 优点 1.2.2 缺点 1.3 MySQL中的存储过程 第二章 存储过程的原理 2.1 存储过程的执行流程 2.1.1 编译阶段 2.1.2 存储阶段 2.1.3 执行阶段 2.2 存储过程的存储机制 2.3 存储过程与…

Linux bash脚本 远程开发环境配置

参考资料 太香了&#xff0c;VSCode远程开发插件&#xff0c;值得一试Visual Studio Code で Remote SSH する。Managing extensions 目录 一. 远程开发必备二. 连接远程开发服务器三. 安装远程开发插件 一. 远程开发必备 ⏹ VSCode插件 Remote - SSH 通过使用 SSH 链接虚拟…