【C语言】二维内存分配做函数参数
二维内存做函数参数题目:1234567891011121314151617(语言: C)输入n×n阶矩阵(n最大为10),按如下函数原型/* 函数功能: 计算n×n矩阵中两条对角线上的元素之和 */int AddDiagonal(int a[N][N], int n);用函数编程计算并输出其两条对角线上的各元素之和。**输入提示信息:"Input n:" "Input %d*%d matrix:\n"**输入格式要求:"%d" **输出格式要求:"sum = %d\n" 程序运行示例如下:Input n:5Input 5*5 matrix:1 2 3 4 5 2 3 4 5 6 3 4 5 6 74 5 6 7 8 5 6 7 8 9sum = 45注:不允许使用goto语句 代码实现:函数声明和定义中的函数参数改成int **a 。 1234567891011121314151617181920212223242526272829303132333...
【C语言】运算符优先级判断技巧
运算符优先级判断技巧在C语言的逻辑里,*数学运算(算术)的优先级高于*比较运算(关系) 第一层:非 (Unary / 单目) —— 霸道总裁 运算符: ! (逻辑非), ++, --, sizeof, ~, * (指针取值) 特点: 它们紧紧贴着变量,最先执行。比如 !a 或 i++。 第二层:算 (Arithmetic / 算术) —— 先算账 运算符: *, /, % > +, - 特点: 这里遵循小学数学,“先乘除模,后加减”。 第三层:关 (Relational / 关系) —— 后比较 运算符: >, <, >=, <= > ==, != 注意(这也是考点): “比较大小”的优先级 高于 “判断相等”。 例子:a < b == c 实际上是先算 (a < b) 的结果(0或1),再看这个结果等不等于 c。 第四层:逻 (Logical / 逻辑) —— 判真假 运算符: && (与) > || (或) 特点: 只有两边的算术和比较都做完了,才能最后进行...
【C语言】二级指针动态内存分配
二级指针动态内存分配背景123456789101112131415用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。输入提示信息:"Input array size m,n:""Input %d*%d array:\n"输入m,n的格式:"%d,%d"输入成绩的格式:"%d"输出提示信息和格式:"maxScore = %d, class = %d, number = %d\n"输入:Input array size m,n:2,3Input 2*3 array:↙90 69 8897 95 95maxScore = 97, class = 2, number = 1↙ 代码实现:123456789101112131415161718192021222324252627282930313233343536373839404142#includ...
【C语言】动态内存分配
动态内存分配背景以前如果需要从键盘输入数组的范围并定义是行不通的。只能定义一个较大的值作为数组的大小,此时数组长度必须在编译的时候 确定而动态数组 允许你在程序运行过程中 (Runtime)才决定数组的大小。有: 12345678910111213语言: C)产生动态数组,编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。**输入格式要求:"%d" 提示信息:"Enter array size:"**输出格式要求:"array[%d]=%d\n"程序运行示例如下:Enter array size:8array[0]=0array[1]=10array[2]=20array[3]=30array[4]=40array[5]=50array[6]=60array[7]=70 代码实现123456789101112131415161718192021222324252627282930313233343536#include <stdio.h>#include <stdlib.h>...
【C语言】二维矩阵字符串排序
二维矩阵字符串排序遇到个很难的题目:123456789101112131415161718192021222324252627282930字符串排序。调用Input函数输入10个字符串,调用Sort函数对这10个字符串按字典顺序排序,调用Print函数打印输出排序后的字符串。Input函数原型: void Input(char str[][80],int n);Sort函数原型: void Sort(char str[][80],int n);Print函数原型: void Print(char str[][80],int n);***输入数据格式:读入可包含有空格的字符串(字符串最大长度80)***输出数据格式: 一行输出一个字符串程序运行示例:hello↙my↙name↙is↙zyk↙how↙are↙you↙he↙and↙andarehehellohowismynameyouzyk 我写的代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748...
【C语言】函数指针
函数指针背景:123456789编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 求1/1+1/3+...+1/n(要求利用函数指针编程)输入格式:"%d"程序运行示例1如下:10Even=1.141666程序运行示例2如下:9Odd=1.787302 代码实现:1234567891011121314151617181920212223242526272829303132333435363738#include <stdio.h>double even_sum(int);double odd_sum(int);int main(){ int n; double (*current)(int); scanf("%d",&n); if(n%2==0){ current=even_sum; }else{ current=odd_sum; } double result=current(n); if(n%2==0)...
【C语言】辗转相除法的最简形态
辗转相除法的最简形态用最简单的代码求最大公约数直入主题: 123int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);} a一定要比b大吗?完全不需要这也是欧几里得算法(辗转相除法)最神奇、最“智能”的地方:它自带自动纠正(Auto-Swap) 功能。不管你传进去的是 gcd(大, 小) 还是 gcd(小, 大),结果完全一样,代码不需要做任何修改。 为什么不需要?如果在第一次调用时,a 比 b 小(比如 a=10, b=25),% 运算会产生一个神奇的效果:因为在数学中,如果被除数比除数小,余数就是被除数本身。 即:10 % 25 = 10。让我们来看看如果把小的数放前面,程序会怎么跑: 场景演示:gcd(10, 25) 第 1 轮: 调用 gcd(10, 25) a = 10, b = 25 计算 a % b -> 10 % 25 = 10 执行递归:gcd(25, 10) 看! 仅仅经过一步,两个数字的位置就自动互换 了,变成“大数在前,小数在后”了...
【C语言】临时笔记
讲一下字符串初始化的格式讲一下什么是,sizeof,strlen,stract,strcmp,strcpy这几个函数是C语言字符串操作的“基石”。特别是 sizeof 和 strlen 的区别,是期末考试和面试的必考题。我们分两部分来讲: 第一部分:字符串初始化的格式在 C 语言中,字符串本质上是以\0 结尾的字符数组。常见的初始化方式有以下 4 种: 1. 指定长度的数组(最标准)C 12// 申请 10 个格子,填入 hello,剩下的格子自动补 \0char str[10] = "hello"; 2. 偷懒写法(省略长度)C 12// 编译器会自动数:h-e-l-l-o-\0,一共申请 6 个字节char str[] = "hello"; 3. 逐个字符赋值(最麻烦,容易漏 \0)C 12// 必须手动在最后加 '\0',否则打印时会乱码char str[] = {'h', 'e', 'l', 'l', '...
【C语言】二维数组做函数参数与矩阵的相乘
二维数组做函数参数与矩阵的相乘背景:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859二维数组实验题:利用矩阵相乘公式,编程计算M*N阶矩阵A和N*M阶矩阵B之积C(M*M阶矩阵)。要求如下:1.用宏定义形式分别定义M、N的值为3、4。2.函数原型分别定义成:void MultiplyMatrix(int a[M][N], int b[N][M], int c[M][M]);/* 函数功能:计算矩阵相乘之积,结果存于二维数组c中 */void InputMatrixA(int a[M][N]);/* 函数功能:输入矩阵a中的元素 */void InputMatrixB(int b[N][M]);/* 函数功能:输入矩阵b中的元素 */void OutputMatrix(int a[M][M]);/* 函数功能:输出矩阵a中的元素 */3.主函数定义成:int main(){ int a[M][N], b[...
【C语言】代码日常(1)
代码日常(1)1/2将数据按照奇偶排输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1,3,5,7,9,2,4,6,8,10。(提示:可定义2个数组,一个用来存放输入的整数,并对这个数组进行排序,然后将数据按先奇数后偶数的顺序分别复制到另一个数组中,再输出第二个数组,注意最后一个数据的格式与前面9个不同)。程序运行结果如下:Input 10 numbers:3 12 7 65 8 4 17 25 36 50↙Output: 3,7,17,25,65,4,8,12,36,50输入格式: “%d”输入数据提示信息:”Input 10 numbers:\n”输出格式:输出数据提示信息:”Output: “ (注:冒号“:”的后面有一个空格)前9个数据的输出格式:”%d,”最后一个数据的输出格式:”%d\n” 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495...


