一.有关函数的练习 1.请写一个函数,输出100-200之间的素数 示例代码: include<stdio.h> intprime(intn){ intj=0; for(j=2;j<;j){ if(n%j0){ return0; } return1; } } intmain(void){ inti=0; for(i=100;i<=200;i){ if(prime(i)1){ printf("%d",i); } } return0; } 程序目标:在main()函数中创建了一个for循环用来循环输出100-200的数字,...

  uUWKQE7Avyk4   2023年11月02日   48   0   0 if语句C语言函数循环

一.练习题 1.写一段代码要求实现一个整型有序数组的二分查找 有bug的代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> include<windows.h> intfunction(intarr[],intk){ intleft=0; intright=(sizeof(arr)/sizeof(arr[0]))1; while(left<=right){ intmid=(left+right)/2; if(arr[mid]<k){ left=mid+1; } elseif(...

  uUWKQE7Avyk4   2023年11月02日   23   0   0 C语言函数数组二分查找算法

一.函数的嵌套调用 在C语言中函数和函数是可以有机结合在一起的,如以下代码: include<stdio.h> voidone_hello(void){ printf("hello!\n"); } voidthree_hello(void){ inti=0; for(i=0;i<3;i){ one_hello(); } } intmain(void){ three_hello(); getchar(); return0; } 上述代码创建了两个自定义函数one_hello()与three_hello(),one_hello()函数中的内容为调用print...

一.函数的声明概念 1.告诉编译器函数的名称,函数的参数以及函数的返回类型是什么?但是函数具体存不存在无关紧要 2.函数的声明一般出现在函数使用之前,做到先声明后调用 3.函数的声明一般要放在头文件中(后缀名为.h的文件) 二.函数的定义概念 函数的定义是指函数的具体实现,交代函数功能的实现 下面我们来看一段代码: include<stdio.h> intmain(void){ inta=10; intb=10; intsum=Add(a,b); printf("%d",sum); getchar(); return0; } intAdd(intx,inty){...

一.头文件中的ifndef、define与endif语句解释 我们先来回顾一下上次我们自己写头文件,在头文件中来声明函数,再在新建的源文件中定义函数,最后在原来的头文件中调用自定义函数,如下代码: 代码1(add.h头文件中的内容): ifndef__ADD_H__ define__ADD_H__ intAdd(intx,inty); endif 代码2(add.c源文件中的内容): intAdd(intx,inty) { intz=x+y; returnz; } 代码3(code.c源文件中的内容): include<stdio.h> include"add.h" ...

  uUWKQE7Avyk4   2023年11月02日   24   0   0 C语言函数堆栈内存递归

一.引入部分 我们先来看一个题目: 接受一个整型值(无符号),按照顺序打印它的每一位数字,如输入1234,则程序应输出1234 示例代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> voidprint(intn){ if(n>9){ print(n/10); } printf("%d",n%10); } intmain(void){ unsignedintnum=0; printf("请输入:"); scanf("%d",&num); print(num); return0; } 我们来分析...

  uUWKQE7Avyk4   2023年11月02日   66   0   0 C语言函数递归

一.问题导入 题目:请编写函数不允许创建临时变量,求字符串长度 我们先来回忆一下,之前我们是如何求字符串长度的,我们来看以下代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> include<string.h> intmain(void){ chararr[]="hello"; intlen=strlen(arr); printf("len=%d",len); getchar(); return0; } arr数组中存着hello这个字符串,我们只需要使用strlen()函数对数组进行计算,然后将结果赋...

  uUWKQE7Avyk4   2023年11月02日   91   0   0 函数指针数组字符串递归

一.递归练习题 1.使用递归的方式,输出n的阶乘(不考虑溢出问题) 参考信息: 假若函数名为Fac(),下列为阶乘的计算公式: 当n的值小于等于1的时候阶乘的结果就为1,当n的值大于1的时候阶乘的结果为nFac(n-1),我们可以发现当n<=1的时候可以直接使用代码: return1; 来返回结果,但是当n的值大于1的时候则需要将n的值乘以Fac(n-1),这就使用到了简单递归,如以下代码: returnnFac(n1); 所以我们可以将代码写成如下形式: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> intFac...

我们前一篇文章介绍了利用函数的递归来实现斐波那契数 代码如下: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> include<windows.h> intFib(intn){ if(n<=2){ return1; } else{ returnFib(n1)+Fib(n-2); } } intmain(void){ intn=0; intret=0; printf("请输入:"); scanf("%d",&n); ret=Fib(n); printf("ret=%d\n",ret...

  uUWKQE7Avyk4   2023年11月02日   33   0   0 C语言函数斐波那契数迭代递归

学习目标: 1.一维数组的创建与初始化 2.一维数组的使用 3.一维数组在内存中的存储 4.二维数组的创建与初始化 5.二维数组的使用 6.二维数组在内存中的存储 7.数组作为函数参数 8.数组的应用实例1:三子棋 9.数组的应用实例2:扫雷游戏 一.一维数组的创建与初始化 1.我们首先来讲数组的创建 概念:数组是一组相同类型元素的集合 数组的创建方式: type_t arr_name[const_n] 其中type_t为数组的元素类型,arr_name为数组名,const_n是一个常量表达式,用来指定数组的大小 下面我们来看一个实例: 要求创建一个整型数组,数组名不限,数组大小为...

  uUWKQE7Avyk4   2023年11月02日   82   0   0 C语言数组数组的初始化字符串

一.导入 我们先来看一段代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> include<string.h> intmain(void){ chararr1[]="abc"; chararr2[]={'a','b','c'}; printf("arr1=%d\n",sizeof(arr1)); printf("arr2=%d\n",sizeof(arr2)); printf("arr1=%d\n",strlen(arr1)); printf("arr2=%d\n",strlen(arr2)); ret...

  uUWKQE7Avyk4   2023年11月02日   35   0   0 数组一维数组strlen字符串sizeof

一.引入 我们前面已经介绍了一维数组的创建以及使用,下面我们来探究一下一维数组在内存中的存储 define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> intmain(void){ intarr[]={1,2,3,4,5,6,7,8,9,10}; intsz=sizeof(arr)/sizeof(arr[0]); for(inti=0;i<sz;i){ printf("&arr[%d]--->%p\n",i,&arr[i]); } return0; } 这里我们创建了一个名为arr的整型数组,数组中...

  uUWKQE7Avyk4   2023年11月02日   27   0   0 C语言数组一维数组内存

一.二维数组的创建 如果我们需要创建一个二维数组我们可以写成如下形式 intarr[3][4]; chararr[5][6]; doublearr[1][2]; 我们可以将第一个[]中的内容理解为行第二个[]中的内容理解为列,以: intarr[3][4]; 为例,我们用图片的形式来表示数组,如图所示: 二.二维数组的初始化 我们还是用前面一个例子: intarr[3][4]={1,2,3,4,5}; 这里我们可能会有一个疑惑,我们数组中放了5个元素,但是我们一列只能存放四个元素,程序会出现问题吗?多出来的元素又是怎么进行存储的呢? 我们可以按下F10进行调试,在监视窗口中输入数...

  uUWKQE7Avyk4   2023年11月02日   46   0   0 C语言数组定义初始化二维数组

一.导入 我们之前使用for循环来打印一维数组中的内容,代码如下: include<stdio.h> intmain(void){ inti=0; intarr[]={1,2,3,4,5,6,7,8,9,0}; intsz=sizeof(arr)/sizeof(arr[0]); for(i=0;i<sz;i){ printf("arr[%d]--->%d\n",i,arr[i]); } getchar(); return0; } 我们利用sizeof()函数计算出数组元素的总个数,然后创建了for循环,当i的值小于sz的时候进入循环,将arr数组中...

  uUWKQE7Avyk4   2023年11月02日   39   0   0 C语言数组for循环内存二维数组

一.数组越界的概念 1.数组的下标是由范围限制的 2.数组的下标规定是从0开始的,如果一个数组里面有n个元素,那么最后一个元素的下标就是n-1 3.当数组的下标小于0或者大于n-1,那就是数组越界访问了,超出了数组合法空间的访问 4.C语言本身是不会做数组下标的越界检测的,编译器在编译代码时候也不一定报错,但是编译器不报错不代表程序就能正确的运行,所以我们在写代码的时候应自己做好越界检查 如下代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> intmain(void) { intarr[8]={1,2,3,4,5,6,7,8...

一.导入 在我们写代码的时候,很多时候都会将数组作为参数传入函数,例如我们需要实现冒泡排序,我们假设有一个整型数组arr里面的内容是9876543210,我们需要用到冒泡排序算法将其变成012456789  思路:我们写一个函数bubble_sort(),将数组arr作为参数传入函数,在C语言中数组传参有两种写法: 第一种:直接传入数组 第二种:传入指针 相比起第二种方式传入指针,第一种写法更加容易理解,以下是代码: define_CRT_SECURE_NO_WARNINGS1 include<stdio.h> voidbubble_sort(intarr[]){ ...

  uUWKQE7Avyk4   2023年11月02日   20   0   0 函数指针数组地址冒泡排序

一.导入 我们先来看一段代码: include<stdio.h> intmain(void){ intarr[10]; printf("%p\n",arr); printf("%p\n",&arr[0]); getchar(); return0; } 我们创建了一个数组arr,第一个printf()语句来打印arr这个数组名,第二个printf()语句来打印数组arr首元素的地址,程序运行结果如下: 我们可以发现两个printf()语句输出的结果是一样的,那么我们就可以得出结论:数组名就是首元素的地址 我们再来看一段代码: include<stdio...

  uUWKQE7Avyk4   2023年11月02日   40   0   0 C语言指针数组地址数组名

一.导入 我们上篇文章讲了一维数组的数组名,接下来我们将介绍二维数组的数组名,我们先来猜一下以下代码执行的结果是多少: include<stdio.h> intmain(void) { intarr[3][4]; intsz=sizeof(arr); printf("%d",sz); return0; } A.3 B.4 C.12 D.48 答案:D,解析:我们之前说过二维数组是以矩阵形式的,有行与列之分,那么就可以得出整个数组的大小为行x列也就是4x3,由于这是一个整型数组,每一个元素的大小都为4个字节,那么就是4x3x4=48,故选D 我们之前说过数组名代表数组首...

  uUWKQE7Avyk4   2023年11月02日   89   0   0 C语言数组二维数组数组名

一.游戏介绍 我们之前学了数组的创建与使用等方面的内容,接下来我们就可以尝试动手自己写一个游戏,这里以三子棋游戏为例,要写这样的游戏代码我们就需要制定一下方案以及思路,以下是我的方案: 项目名:Game 源文件: test.c  测试游戏的逻辑是否有问题 game.c游戏代码 头文件: game.h存放游戏代码的声明与定义 其主要代码存放在game.c与game.h中,项目创建完成后如图所示: 二.游戏菜单 不知道大家还记得我们之前写过的猜数字游戏吗?程序一运行首先会显示一个菜单,让玩家选择游玩或者退出,那我们就先在test.c代码中实现这一功能,代码如下: def...

  uUWKQE7Avyk4   2023年11月02日   24   0   0 C语言三子棋数组实战二维数组

一.回顾 我们上篇文章写了三子棋游戏的菜单以及初始化棋盘(利用的函数是:InitBoard())那么接下来就让我们继续来写这个游戏的其他部分 二.打印棋盘 我们之前说过棋盘本质就是一个二维数组,那么打印棋盘就是打印二维数组中的元素,我们将打印棋盘的代码封装成函数:DisplayBoard()  这个函数与InitBoard()函数一样都需要接收三个参数,分别是:数组名、行、列,那么我们就可以写成以下形式: DisplayBoard(board,ROW,COL); 相应的我们需要在game.h的头文件中定义这个函数,代码如下: voidDisplayBoard(charboard...

  uUWKQE7Avyk4   2023年11月02日   25   0   0 C语言三子棋数组实战二维数组
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~