![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
动起来才能健康快乐
这个作者很懒,什么都没留下…
展开
-
关于C语言函数之间的数据交换
C语言的函数可以分为主调函数和被调函数两大类,他们共同完成程序的功能。现在把主调函数当成一个人,被调函数是一个具有某个功能的工厂。那么人怎样协调工厂一起把原料加工成产品呢。有三种模式:一、普通的参数传递(图片来自百度,向图片作者致谢)此时,我们的甘蔗棍就是原材料,榨汁机就是工厂,工厂加工后,产品就是果汁。对应到函数,榨汁机就是函数,留的那个放甘蔗的地方就是形式参数,甘蔗是实际参数,液体是水龙头提供产品的形态,是返回值类型,杯子里的甘蔗汁是返回值。当你不用甘蔗机的时候,原创 2022-01-09 11:47:54 · 766 阅读 · 0 评论 -
素数判断中一个典型错误
在学习C语言过程中,素数判断也是一个经典题目,大约每年都有40%的学生学不会。究其原因,是逻辑没有理顺的原因。下面是一个典型错误,看看你是否犯过。输入一个整数x,判断其是否是素数,若是输出Yes,否则输出No。某学生写成下面的样子。# include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL x,i; cin>>x; for(i=2;i<原创 2021-12-28 09:43:40 · 660 阅读 · 0 评论 -
帮你理解 sum=1阶乘+2阶乘+3阶乘+...+n阶乘 的简单高效算法---多添加打印语句
在学习循环时,计算 sum=!+2!+3!+...+n!,是一个经典的题目。除了双重循环这个逻辑简单、效率低的算法外,老师往往还会介绍一个高效的算法,如下:# include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL n,item=1,sum=0,i; cin>>n; for(i=1;i<=n;i++) { item=item*i; sum=su原创 2021-12-28 09:28:55 · 976 阅读 · 0 评论 -
初学编程者要学会发现问题---多加打印语句
一些学生,对编程很感兴趣,也会去做题,但当程序运行结果不正确时,往往不会去发现问题。这里给大家演示一个方法,可以帮助你看清楚程序的运行过程,从而自己发现问题,进而解决问题。 只有自己发现问题、解决问题,得到的成就感和幸福感才是实实在在的。 比如:输入一个整数n,计算 sum=1!+2!+3!+....+n!,输出 sum。 某个同学写出下面的程序:# include <bits/stdc++.h>using names...原创 2021-12-28 09:16:35 · 353 阅读 · 0 评论 -
有些实数在计算机内存储是不精确的,如何验证?
我们列出0-10,这11个数的开平方b,b*b,比较一下结果。并且我们保留到小数点后10位和20位。#include<bits/stdc++.h>using namespace std;int main(){ for(int i=0;i<11;i++) { double b; b=sqrt(i); //cout<<b<<" "<<b*b<<" "<<i...原创 2021-12-15 21:21:55 · 1051 阅读 · 0 评论 -
C语言中的跳转语句goto和return
•顺序结构中的语句顺次执行•一条都不能少我们能不能从某个地方跳转到另外一个地方执行呢?可以!用goto语句和return语句。goto语句在较复杂程序中,不提倡使用,但不影响我们了解。一、goto语句1、向下跳。选择结构的前生往世。#include<stdio.h>int main(){ double a,b,c; a=b=0; a=4; goto L; b=12;L: c=a+b; printf("%lf\n",c); ...原创 2021-03-27 11:29:15 · 2438 阅读 · 0 评论 -
学习数据结构-补充部分C++知识-基础不牢-地动山摇
各位同学: 本学期的数据结构课程授课过程中采用了一点点C++的知识,目的是为了简化、方便代码的编写。涉及的知识点有如下几个:1、文件扩展名的变化C语言的源代码文件扩展名为c,C++语言的源代码文件扩展名为cpp2、头文件的变化C语言采用scanf、printf作为输入输出函数,格式繁杂,容易出错,对应的头文件格式为:#include<stdio.h>C++语言采用cin、cout作为输入输出函数,格式简单,对应的头文件格式为:#include &l...原创 2020-09-07 19:43:39 · 450 阅读 · 0 评论 -
DS003-集合的并集-用数组存储集合的元素-分别用数组-结构体-类模板实现
用数组作为容器,存储集合LA、LB的元素编程计算LC=LA+LB; 即求LA和LB的并集。算法:把LA中元素拷贝到LC中,对于LB中每个元素,如果LC中不存在,则将其放入LC中。用C语言编程实现:#include "stdlib.h" #include "stdio.h" int LA[]={3,4,5,7};int na=4;int LB[]={1,2,4,6,8};int nb=5;int LC[100];int nc=0;int find(i...原创 2020-09-01 22:39:33 · 376 阅读 · 0 评论 -
DS002-矩阵的乘法
本程序演示矩阵的乘法原创 2020-08-31 21:01:32 · 165 阅读 · 0 评论 -
DS001-测试冒泡排序的运行时间
本程序演示如何测试一段程序的运行时间。以冒泡排序算法为例。#include "time.h" //与时间相关的函数#include "stdlib.h" //rand()函数在此库中#include "stdio.h" //输入输出相关函数 void BubbleSort(int *a, int n){//冒泡排序, a是指针,代表连续空间的首地址,n表示有n个元素 for(int i=1;i<=n-1;i++) { for(int j=0;j<=n-i-1;j原创 2020-08-31 20:48:46 · 1366 阅读 · 0 评论 -
c# -C语言在线考试系统-online judge端
前面介绍了考试系统学生端的功能:学生在线答题,提交答案,标注答案的状态为IsCompiling。本篇介绍后台如何判题。1、后台进程不断扫描solution表,取出答案状态为IsCompiling的那些2、如果有编译错误,提示“不能生成exe”,如果能生成exe文件,转向第3步3、对准备好的input数据,作为exe文件的输入,输出结果存入output文件4、对比output文件和标准答案,如果完全相同,则accept,否则是答案错误,需要继续修改。参考代码如下:using Sy原创 2020-08-05 09:51:29 · 1444 阅读 · 0 评论 -
c#-asp net -C语言在线考试系统-考生端
学习了asp net的winform web,需要练习巩固。决定重写一下去年用python django实现的 c语言online judge系统。本篇介绍C语言在线判题系统的考生端。主要功能:1、学生用学号、姓名注册,系统根据题目列表抽取题目;2、学生进入查看题目列表;3、学生进入具体题目;4、学生提交程序;5、学生查看online judge的判题结果一、登录界面二、试题列表界面三、单个题目界面四、提交界面五、查看结果界面数..原创 2020-08-04 16:56:36 · 1139 阅读 · 2 评论 -
hdu1005-sequence number-解题
这是一道在数字序列中寻找周期的题目。其中有令人叹为观止的技巧。原创 2020-07-07 08:00:54 · 870 阅读 · 0 评论 -
C语言-素数判定-朋友-你了解素数吗-你的C语言期末考试是否因为素数问题而折戟沉沙-那么来吧-我来给你好好掰扯掰扯
本篇介绍如何判断一个整数是否为素数。提供了几种方法,采取逐步优化的方法。原创 2020-07-06 09:45:37 · 374 阅读 · 0 评论 -
C语言-函数-学会方程你的数学能力会乘风破浪突飞猛进-学会函数你的编程能力将百尺竿头更进一步
方程是一种数学工具,列方程解方程能够有效解决数学问题。函数是一种编程技巧,设计函数实现函数能够提高程序设计的效率。本篇从简单到复杂介绍函数的设计。原创 2020-07-05 06:31:38 · 535 阅读 · 0 评论 -
hdu1002-A+B-求长整数的加法-acm程序竞赛入门题目
长整数的加法。程序设计竞赛入门题目。考查数组的灵活应用。原创 2020-07-04 07:37:54 · 255 阅读 · 0 评论 -
C语言-初步-级数计算相关
我们来一步一步说明白级数的计算问题。一、计算 s=1+2+3+...+n这是一个累加问题#include<stdio.h>int main(void){ int n,sum=0,i; scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum+i; } printf("%d",sum); return 0; }二、计算 n!这是一个累乘问题#include&.原创 2020-07-03 08:49:23 · 5549 阅读 · 1 评论 -
C语言初步-循环结构-多重循环-百钱百鸡问题
题目描述: 公鸡每只值五文钱,母鸡每只值三文钱,小鸡每三只值一文钱。现在用一百文钱买一百只鸡。问:这一百只鸡中,公鸡、母鸡、小鸡各有多少只?题目解析:设有公鸡、母鸡、小鸡各为x、y、z只,则有方程组:x+y+z=1005*x+3*y+z/3=100 此为三元一次方程组,但只有两个方程式,因此可能有多个解。我们用穷举法编程求解。参考程序:#include<stdio.h>int main(void){...原创 2020-07-01 08:41:35 · 1730 阅读 · 0 评论 -
C语言初步-循环结构-素数判定-判断一个数是否为素数
题目描述:判断一个正整数是否为素数。题目解析:(1)本题考查什么是素数。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。1既不是素数也不是合数。(2)如何用一重循环编程判断素数。参考代码:#include <stdio.h>int isPrime(int x){//如果x是素数,返回1,否则返回0 int i; if(x==1) return 0; f...原创 2020-07-02 06:36:19 · 1775 阅读 · 0 评论 -
C语言初步-循环结构-求最大公约数-非递归法
题目描述: 求两个整数m和n的最大公约数.题目解析: 从最小的那个整数开始,用x表示,如果x能同时被m和n整除,则找到,否则试探x-1.参考程序:#include"stdio.h"int gcd(int m,int n){ int x=m; if(x>n) x=n; while(1) { if(m%x==0 && n%x==...原创 2020-06-30 07:57:06 · 1431 阅读 · 0 评论 -
C语言初步-选择结构-闰年判断
题目描述: 输入一个年份,判断其是否是闰年,若是闰年则输出“闰年”,否则输出“不是闰年”。题目解析:闰年满足的条件是: (1)能被4整除,但不能被100整除的年份是闰年; 或者 (2)能被400整除的年份是闰年 为什么是这样规定,请百度之,我们此处不普及天文学知识。https://baike.baidu.com/item/%E9%97%B0%E5%B9%B4/27098?fr=aladdin参考程序:#include<...原创 2020-06-29 08:04:11 · 2860 阅读 · 0 评论 -
C语言初步-顺序结构-已知三边求三角形面积-余弦定理
由此,求三角型的面积为s=b*sin(a)*c/2程序如下:#include<stdio.h>#include "math.h"int main(void){ double a,b,c,s,cosa,sina; scanf("%Lf%Lf%Lf",&a,&b,&c); cosa=(b*b+c*c-a*a)/2/b/c; sina=sqrt(1-cosa*cosa); s=b*c*sina/2; ...原创 2020-06-28 08:48:52 · 2915 阅读 · 0 评论 -
C语言初步-顺序结构-已知三边求三角形面积-海伦公式
题目描述:输入三角形的三条边a、b、c,输出它的面积s。题目解析:这是一个比较难的题目,因为由三角形的三条边计算其面积,公式不容易记忆。下面是海伦公式:所以本题一是考察考查海伦公式,一是考察开平方函数的用法。参考程序:#include<stdio.h>#include "math.h"#define PI 3.1415926int main(void){ double a,b,c,d,s;...原创 2020-06-26 06:47:18 · 5459 阅读 · 1 评论 -
C语言初步-顺序结构-已知半径求圆的面积
输入圆的半径r,计算圆的面积 s,并输出。s=pi*r*r;pi为圆周率,#include <stdio.h> int main() { double r,s,pi=3.1415926; scanf("%lf",&r); s=pi*r*r; printf("%f",s); return 0; }原创 2020-06-25 06:19:22 · 9779 阅读 · 1 评论 -
只有刻意练习递归,才能掌握递归-递归专题12-头插法建立带头结点的单链表
每来一个数据,生成一个结点,插入点链表的头部。#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node* CreateNode(int x){//为数据x生成一个结点//成功后,返回指向新结点的指针//失败后,返回空指针 struct node *temp; temp=(struct node*)malloc(sizeo.原创 2020-06-23 08:21:34 · 314 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题10--一维数组-冒泡排序
代码如下原创 2020-06-21 10:31:07 · 194 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题11-递归法打印单链表
#include<stdio.h> struct node{ int data; struct node *next; }; void printF2L(struct node *head){//head指向第一个数据结点 //从头到尾打印,递归 struct node *p=head; if(p==0)return; printf("%d ",p->data);//先打印第一个 printF2L(p->next); //再打印其他 }void.原创 2020-06-22 07:01:29 · 305 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题13-尾插法建立带头结点的单链表
每来一个数据,生成一个结点,插入点链表的尾部。#include<stdio.h>#include<stdlib.h>struct node{ int data; struct node *next;};struct node* CreateNode(int x){//为数据x生成一个结点//成功后,返回指向新结点的指针//失败后,返回空指针 struct node *temp; temp=(struct node*)malloc(sizeof原创 2020-06-24 07:56:09 · 290 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题8-递归专题-求数组中最大值的下标
代码如下:#include <stdio.h> int max(int *A,int i,int j) {//求数组A的区间[i,j]中最大值的下标 if(i==j) return i; int x; x=max(A,i+1,j); if(A[x]>A[i]) { return x; } return i; }int main() { int A[]={1,3,6,2,4,5}; printf("%d\n",max(A,0,5));原创 2020-06-19 09:23:15 · 331 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题9-递归专题-简单选择排序
代码如下:#include <stdio.h> void printArray(int *A,int n){ if(n==0) { return; } printf("%d ",*A); printArray(A+1,n-1); }void ssSort(int *A,int n){//简单选择排序 if(n<=1) { return; } int i,t; for(i=1;i<n;i++) {//一趟简单选择排序 if(A原创 2020-06-20 06:27:30 · 288 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题7-求数组中数据最大值
代码如下:#include <stdio.h> int max(int *A,int n) {//求数组中最大值 if(n==1) return *A; int x; x=max(A+1,n-1); if(x>*A) { return x; } return *A; }int main() { int A[]={1,3,6,2,4,5}; printf("%d\n",max(A,6)); return 0; } ..原创 2020-06-18 08:37:38 · 215 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题6-一维数组中元素倒置
代码如下原创 2020-06-17 16:13:08 · 192 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题5-求斐波那契数列第n项
代码如下:原创 2020-06-16 07:10:44 · 229 阅读 · 3 评论 -
只有刻意练习递归,才能掌握递归-递归专题4-打印一维数组中数据
代码如下原创 2020-06-15 06:03:54 · 197 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题3-求两个数的最小公倍数
要求两个整数m、n的最小公倍数,从m、n中的最大数开始,不失一般性,假设为x试探x,如果能同时被m、n整除,则x就是最大公约数,否则x++,继续试探原创 2020-06-14 09:34:52 · 413 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题2-求两个数的最大公约数-非辗转相除法
要求两个整数m、n的最大公约数,从m、n中的最小数开始,不失一般性,假设为x试探x,如果能同时被m、n整除,则x就是最大公约数,否则x--,继续试探原创 2020-06-13 07:10:08 · 242 阅读 · 0 评论 -
只有刻意练习递归,才能掌握递归-递归专题1-求n!-阶乘
代码如下:原创 2020-06-12 10:57:52 · 230 阅读 · 0 评论 -
c语言-一个itoa函数搞定求整数的二进制、八进制、十六进制
#include <stdio.h> #include <stdio.h> int main() { int num = 8; char str[25]; itoa(num, str, 2);//2进制 printf("%s\n",str); itoa(num, str, 8);//8进制 printf("%s\n",str); num=16; itoa(num, str, 16);//16进制 printf("%s\n",str); itoa.原创 2020-06-11 06:54:31 · 761 阅读 · 0 评论 -
在数组中查找数据-C++的find函数
在数组a中查找元素x,是一个常规性的操作。在C语言中没有对应的函数,在C++中有。下面进行介绍。对于简单数据类型,语法形式如下:x的位置=find(开始位置,结束位置+1,x);//即对于简单数据类型就是通常意义上的指针例如://#include<bits/stdc++.h>#include<algorithm>//find函数在其中 #include<iostream>using namespace std;int main(){原创 2020-06-06 13:50:53 · 15964 阅读 · 5 评论 -
C语言知识点-经典程序
一、交换程序1、int、double、char型数据交换;2、字符串交换;3、数组元素 A[i]、A[j]的交换;4、结构体变量交换5、指针数据的交换以上交换用函数怎样实现?二、条件语句1、奇偶判断2、a\b\c能否构成三角形3、闰年平年判断4、分段函数5、百分制转换成五级制三、循环1、求n!2、求1!+2!+3!+....+n!3、素数判断4、求两数的最大公约数、最小公倍数5、级数的计算6、百钱白鸡问题7、男人女人小孩吃饭问题原创 2020-06-04 07:27:12 · 256 阅读 · 0 评论