![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
半命仙
这个作者很懒,什么都没留下…
展开
-
C语言对文件的输入输出程序设计
之前很多C语言程序都是面向终端的程序,这些程序的处理对象是终端,也即我们对电脑的操作。从终端流入,依靠的是我们使用的键盘等,从终端流出,靠的是显示器、打印机等。而现在要讲到的是面向文件的C语言程序。其特点在于输入流、输出流都是相对文件进行的。最典型的例子就是在以终端为对象时,我们有puts、gets函数。puts函数用于输出给终端,gets用于从终端获取。而以文件为对象,有类似的函数fputs、fgets、fputc、fgetc。它们的作用是在文件中获取/填入(字符/字符串)。因此对文件的处理,我们应该“原创 2021-02-26 17:17:10 · 264 阅读 · 0 评论 -
C语言如何使用共用体结构
共用体union类型,与结构体struct类型很相似。两者的区别在于,结构体类型的空间是结构体类型成员所占空间之和,而共用体类型的空间是其成员中占用空间最大的成员空间大小。对于结构体,它可以同时给所有成员赋值,而对共用体,在每一瞬间只能存放其中一个成员的内容。利用共用体,我们能够简化结构体类型在描述成员属性高度相似的结构体构造。例如下例,我们要构造一个结构体数组,存入一名学生和一名老师的信息,但学生和老师的区别在于学生的属性中有一项“班级”,而老师的属性中有一项“职务”,除此之外二人其他属性相同。如果不使原创 2021-02-23 16:04:29 · 441 阅读 · 0 评论 -
C语言用结构体构造动态链表
非常实际的一个问题,我们需要通过构造动态链表来输入一组学生的成绩信息,代码及注释如下:#include <stdio.h>#include <stdlib.h> //调用malloc函数需要stdlib库#define LEN sizeof(struct student) //可以简单的理解为将程序中所有的"LEN"替换为"sizeof(struct student)"struct student{ long num; float score; stru原创 2021-02-23 09:13:51 · 627 阅读 · 0 评论 -
C语言使用结构体制作的票数统计算法
结构体是在C语言中用户自定义的变量类型,它可以由若干个类型的变量组成。结构体变量、结构体数组常用于对多个包含多项属性的成员的处理。设计程序统计得票是对结构体的简单应用,代码如下:#include <stdio.h> #include <string.h> int main(){ struct H { char name[20]; int num; }join[3]={"Wang",0,"Xie",0,"Zhang",0};//定义结构体数组join并赋初值原创 2021-02-18 10:32:49 · 1429 阅读 · 0 评论 -
C语言指针与一维数组、二维数组之间的关系
在C语言中,指针与数组总有密不可分的联系,这之中衍生了许多易于混淆的概念,在这里我就我的学习经验总结一下。1.指针与一维数组的关系。这无疑是最简单的,我们常见的有p=a,其p是指针变量,a是数组名。这里需要注意的是数组名和数组元素的区别。数组名代表数组的首地址,可以直接让指针指向它。而数组元素是值,需要取地址符才能指向,实例如下:int a[2];int *p;p=a;p=&a[0];虽然上述两个指向都使得p指向数组首地址,但指向方式不同,这种区别会在多维数组中体现。2.(*(p+原创 2021-02-18 00:13:27 · 1184 阅读 · 0 评论 -
C语言实现字符串删除字符函数
要求输入一个字符串内有若干个字符,再输入一个字符,使得输出字符串中这一字符全部被删除。对于这个问题,我们考虑构造delete_me函数(delete是已定义过的函数不能再做变量名)来实现。我们首先想到的思路当然是使用两个字符串数组,一个输入原始字符串,一个进行删减处理后输出,代码如下:#include <stdio.h>int main(){ char a,str[100]; void delete_me(char str[],char ch); printf("请输入字符串\n"原创 2021-01-22 11:55:33 · 22021 阅读 · 2 评论 -
C语言解决汉诺塔问题
Hanoi塔问题,讲的是有三个座A,B,C,开始时A座上有一定数量的盘子,盘子大小不等,大的在下,想要将A座上的盘子移到C座,要求每次只移动一个盘,在移动过程中保持大盘在下小盘在上,要求用编程输出移动的步骤。从简单的入手,我们先看3个叠在一起要如何操作:记由上而下盘子为1,2,3号盘子。把1号放c处,2号放b处,1号放b处,3号放c处,1号放a处,2号放c处,1号放c处,完成移动。在上面这个过程中,不难发现撇开3号放c处这一步骤不看,前三个步骤和后三个步骤不同之处只在于是对cb位置和ac位置的操作。原创 2021-01-20 18:22:32 · 971 阅读 · 2 评论 -
C语言字符串处理相关问题
在最近翻阅《C程序设计》一书时,在6.3.7节字符串数组应用举例中我发现了一个值得学习的例子。题目如下:输入一行字符,统计其中有多少个单词,单词之间用空格隔开这个程序的设计思路并不难,我们对单词的特性很清楚,只要有空格说明出现了单词数量变化。而为了避免因为输入不规范出现多个空格影响单词个数判断的...原创 2021-01-10 20:37:02 · 247 阅读 · 0 评论 -
C语言中插入法的应用
我们由一个问题引入对插入法的介绍:我们希望在一个数组中插入任意指定的一个数,要求这个数能依照大小顺序插入到正确的位置。这个问题是一个非常好的插入法例子,在问题中,我们需要考虑两个问题,其一是如何在数组空间足够时插入元素,其二是如何保证插入到的地方满足大小关系。对数组的处理,由于数组元素的繁多,我们无疑会考虑到循环语句。对于这个问题,for循环语句和while循环语句都可以解决问题,但通过while循环语句设计出来的程序将会更为简洁巧妙。先考虑for循环,在循环中,我们要让所有比插入的数大的往后挪一位,原创 2021-01-04 19:30:29 · 5065 阅读 · 1 评论 -
C语言中关于选择法的一些问题
选择法是C语言中关于数组元素处理的一种重要方法,利用选择法我们可以从数组中筛选出最大最小项,可以对数组元素进行重排序。对数组元素的处理是在之后处理结构体内数据的一个基础。筛选最大项:思路是假定第k个数组元素是最大的,利用for循环让所有数组元素与它依次比较,如果出现第i个数组元素比它大,那么替换为第i个元素继续比较。代码如下:#include "stdio.h"int main(){ int i,k; int a[10]={0,7,3,4,8,2,5,9,1}; for(i=0原创 2021-01-02 21:19:23 · 3261 阅读 · 1 评论 -
一个计算一元二次函数的C语言程序
判断并计算一元二次函数根的情况,在C语言算法设计中是非常简单的。主要依据的就是Δ的正负来判断根的虚实,用Δ的取值来判断根的个数。代码如下://一元二次函数实根和虚根 #include "stdio.h"#include "math.h"int main( ){ float a,b,c,d,x1,x2,lp,ip; printf("请按顺序输入一元二次函数的二次项系数、一次项系数、常数项系数。\n") ; scanf("%f%f%f",&a,&b,&c);原创 2021-01-01 12:57:22 · 4264 阅读 · 1 评论 -
C语言实现概率论中的验血问题
有这样一道概率论题目,我认为将其编写为C程序实现是一件非常有意思的事情,题目如下:在一个人数很多的团体中普查某种疾病,为此要抽验N个人的血。有如下两种方法,法一为逐个抽验,则需验N次,法二为按k个人一组进行分组,把K个人抽来的血液混合在一起检验,如果呈阴性,则这k个人正常,只需要验一次。如果呈阳性,则这k个人逐个化验,则这k个人要验k+1次。现假设每个人化验呈阳性概率为p,且每个人化验结果相互独立,问p、k取不同值时对方法的选择如何。在概率论中,这是一道依照期望来比较的题目,但当我们将它视为一道C语言题原创 2020-12-30 11:03:34 · 1183 阅读 · 4 评论 -
让指针指向数组指定位置的正确写法
分享一个我遇到的小问题,相信很多初学者也犯过和我一样的错误来看一段代码 int a[6]={1,2,3,4,5,6}; int *p=a[2];毫无疑问,在这个代码中我们想做的是定义一个指针p让它指向数组a的第三个元素所在的位置,但显然这种非常感性的写法是错误的。会出现这样的报错:[Error] invalid conversion from ‘int’ to ‘int*’ [-fpermissive]。这个报错的意思是你不能让一个int型的指针指向一个int型的元素。很显然,我们原创 2020-12-09 22:29:50 · 2954 阅读 · 0 评论 -
C语言如何用while循环实现阶梯输出
今天一个学弟问到这样一道基础的计数问题,我认为处理这种问题的思路是很有用的。题目如下∶用while循环输出12345678910这个题目的解题点在于如何对每一行该有的数计数,因为只有这样才能去做分行操作,我的代码是这样的∶#include<stdio.h>int main(){ int i=1,j=0,n=1; while(i<=10) { printf("%d",i); j++;//现在有几个数 if(j==原创 2020-11-17 23:07:50 · 3123 阅读 · 0 评论 -
C语言实现倒三角数据输出
今天早上刷csdn看到一个很有意思的题目求助。大概意思是输入一个数n(0-9)输出的数呈倒三角形式。例如输入n=5,则输出为:1111111112222222333334445这样的形式,当时学业繁忙没来得及细想,直至抽空将这道题解了出来代码如下:#include <stdio.h>int main(){ int n,i,j,k,l; scanf("%d",&n); int a[n][2*n-1]; for(i=0;i<=n-1;i++) f原创 2020-11-16 20:29:40 · 6752 阅读 · 2 评论 -
C语言实现斐波那契额数列
一个简单的含数组循环语句//斐波那契数列实现 #include <stdio.h>int main(){ int n; printf("你想看斐波那契数列的前几位?\n"); scanf("%d",&n); int a[n+1]; a[1]=1; a[2]=1; for(int i=3;i<=n;i++) { a[i]=a[i-1]+a[i-2]; } for(int j=1;j<=n;j++) printf("%d ",a[j]);原创 2020-11-13 23:01:41 · 1231 阅读 · 1 评论 -
C语言筛选水仙花数
关键是用除法、取余方式找出每一位数//水仙花数#include <stdio.h>int main(){ int a=100; while(a<1000) { int a1=a/100; int a2=(a%100)/10; int a3=a%10; if(a==a1*a1*a1+a2*a2*a2+a3*a3*a3) { printf("%d是水仙花数\n",a); } a++; }return 0; } ...原创 2020-11-13 12:47:14 · 300 阅读 · 0 评论 -
C语言实现找闰年问题
简单的if条件语句与while循环语句设计程序//寻找闰年#include <stdio.h>int main(){ int s,e; printf("你想找哪一年到哪一年之间的闰年?\n"); scanf("%d %d",&s, &e); while(s<=e) { if((s%4==0&&s%100!=0)||(s%400==0))//四年一闰,百年不闰,四百年再闰 {printf("%d年是闰年\n",s);} s++;原创 2020-11-13 10:54:36 · 573 阅读 · 0 评论 -
C语言如何输入二维字符串数组
C语言如何输入二维字符串数组二维字符串数组是由多个字符串组成的数组,可以采取循环输入一维字符串的做法为这样的二维数组赋值。#include <stdio.h>int main(){ int i,j,a[10][10]; for(i=1;i<=3;i++) scanf("%s",a[i]); return 0;}这个代码片可以作为一种输入思路的参考。...原创 2020-10-12 15:58:29 · 36339 阅读 · 8 评论 -
用简单的C语言程序验证哥德巴赫猜想(是验证不是证明啦)
题目需求输入一个非二的偶数,验证它可以分解成两个质数的和。我的想法第一种方法:先把所有质数列出来,然后再从中找出两个质数相加等于输入的偶数,从而完成验证。法一代码:下面展示一些 内联代码片。#include<stdio.h>int main(){ int judge, i, j, k, l; printf("请输入你想验证的偶数\n"); scanf_s("%d", &judge); for (i = 1; i < 99999; i++) { for (原创 2020-10-07 21:50:13 · 3596 阅读 · 0 评论 -
在C语言中如何在不使用数组的情况下筛选出任意指定范围内的所有素数
最近碰到一道很有意思的C语言练习题,题目要求如下:输入整型数据m和n,要求输出m~n之间的所有素数我在网上浏览了很多解法,大多数使用到了数组。在我的想法下,我想仅通过循环语句进行筛选。我的设计思路是,让每一个在m、n范围内的数(记为k)去除从2到k-1的所有数,累加取余不为零的次数,如果次数是k-2次,那么这个数就是一个素数,这样,就可以通过两次循环嵌套一个if判断,得出这个范围内的所有素数这样我们就能实现求一定范围内素数的目的。第一次发布博客,还请大佬们指正呀 0.0...原创 2020-05-23 21:49:01 · 731 阅读 · 0 评论