文章目录

  • 一、动态分配内存
  • 二、猴子吃桃问题
  • 三、两种计算π的值
  • 四、计算指定年月有几天

本篇是接着分享一些有趣的C语言实例,其实学习C语言这类结构化语言是非常锻炼逻辑思维的,也可以让我们对编程语言有更深入的理解

一、动态分配内存

1、题:
用动态分配内存来处理学生成绩。输入5个学生成绩,再输出这5个学生的成绩,并且计算出平均成绩;再来5个学生,再计算10个学生的平均成绩;重点在用的是5个动态内存空间来操作,所以称之为动态分配

2、分析:
(1)分配5个保存整数的内存空间,保存输入的5个学生成绩,计算该5个学生的平均分;
(2)重新分配保存10个整数的内存空间,输入新来的5个学生成绩,再计算10个学生的平均成绩

3、参考代码:

#include <stdio.h>main()
{int i;double sum= 0;int *p;p= (int *) malloc(5 * sizeof(int));       //分配动态内存存储空间 ,molloc表示动态内存 ,每个空间大小为一个int型的大小 printf("请输入5个成绩:\n");for(i=0; i<5; i++)      //得到前5个数据的值 {scanf("%d",p+i);}printf("前5个学生的成绩是:\n");for(i=0; i<5; i++)           //输出到屏幕上 {printf("%d  ",*(p+i));}printf("\n");for(i=0; i<5; i++)         //求和,除以5后得到平均值 {sum+= *(p+i);}printf("前5个同学的平均成绩是:%4.2f\n",sum/5);p= (int *) realloc(p, 10 * sizeof(int));      //realloc表示更改已经配置的内存空间printf("请再输入5个学生的成绩:\n");for(i=5; i<10; i++)       //从p+5后的地址开始加入新的数据 {scanf("%d",p+i);} printf("10个学生的成绩是:");for(i=0; i<10; i++){printf("%d  ",*(p+i));}printf("\n");sum= 0;                 //重置sum的值 for(i=0; i<10; i++)     //求10个数的总和,之后求平均数{sum+= *(p+i);} printf("10个学生成绩的平均值为:%4.2f",sum/10);free(p);        //释放动态存储空间的内存
}

4、参考结果:

二、猴子吃桃问题

1、题:
猴子第一天摘了若干桃子,当即吃了一半,又多吃一个;第二天吃了剩下的一半,又多吃一个… 第十天只剩下一个桃;求总共摘了多少桃子

2、分析:
(1)第10天剩下一个桃子,则第9天应该有2×(1+1)=4个桃子,第八天应该有2×(4+1)个桃子,以此类推…
(2)用while或者for循环遍历9次就可以实现,因为第十天到第一天总共只有10天,但是第10天没有吃,仅仅说它只剩下1个桃子了

3、参考代码:

#include <math.h>
//第一天摘了若干桃子,当即吃了一半,又多吃一个;第二天吃了剩下的一半,又多吃一个... 第十天只剩下一个桃子 main()
{int i=0, n=1;    //第十天剩下一个,但第十天没有吃,所有应该遍历9次 while(i<9){n = 2*(n+1);i++; }printf("第一天桃子的个数为:%d\n",n);
}

4、参考结果:

三、两种计算π的值

1、第一种参考代码:

#include <stdio.h>
#include <math.h>
main()
{double t=1.0, pi=0.0;    //t为每一项,pi为每一项的和 double i=1.0, n=1.0;      //n用于保存正负号,i用于遍历 while(fabs(t) >= 1e-6)  //精度为10的-6次方{pi += t;i += 2.0;n = -n;t = n/i;}printf("最终的π值为:%lf",pi*4.0);       //上述计算的是π/4的值,因此输出需要乘以4
}

2、第二种参考代码:

#include <stdio.h>
main()
{double s=0.0, s1=1.0;  //s用来记录数列的总和,s1用来记录数列的每一项的和int n=1;while(s1 >= 0.0005)  //0.0005是精度{s += s1;s1 = s1 * n/(2*n+1);n++; } printf("π的值为:%lf",s*2);  //因为整个数列算的是π/2的值,所以需要乘2才是π最终的值
}

3、两个结果:


很明显,两个结果不一样,因为它们用的计算公式和精度都不一样了,因此算出来的π的近似值也不同

四、计算指定年月有几天

1、题:
输入年份和月份,输出该月份有几天

2、分析:
(1)每年的1、3、5、7、8、10、12有31天,用算法(month<=7 && month%2!=0) || (month%2>=8 && month%2==0)来判断;
(2)用算法(year%4==0 && year%100!=0) || (year%400==0)来判断是否闰年

3、参考代码:

#include <stdio.h>main()
{int year, month;int days;  //记录总天数printf("请输入年份和月份,以空格分开:");scanf("%d %d",&year,&month);if((month<=7 && month%2!=0) || (month%2>=8 && month%2==0)) {days += 31;}else if(month==2)  //判断是否为2月,因为闰年2月有29天 {if((year%4==0 && year%100!=0) || (year%400==0)){days += 29;} elsedays +=28;}elsedays = 30;printf("%d年 %d月总共有 %d天",year,month,days);
}

4、参考结果:

(篇二)C语言动态分配内存、计算π的值相关推荐

  1. 二维数组动态分配内存

    二维数组动态分配内存 C 二维数组动态分配和释放 (1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char ...

  2. R语言difftime函数计算时间差值实战

    R语言difftime函数计算时间差值实战 目录 R语言difftime函数计算时间差值实战 #基础语法 #获取difftime语法帮助

  3. c语言动态分配内存及内存分配部分函数

    #include<stdio.h> /** 在C中动态分配内存的基本步骤有: 1,用malloc类的函数分配内存: 2,用这些内存支持应用程序 3,用free函数释放内存 二.动态内存分配 ...

  4. C语言动态分配内存实现字符串格式化拼接

    这两天的C语言开发工作中用到了多次字符串格式化拼接,分享一下自己写的一个接口,动态分配内存,减少因缓冲区大小不够导致字符串被截断的烦恼 直接上代码: #include <stdio.h> ...

  5. 如何给一个二维数组动态分配内存

    今天最算法project时遇到需要使用一个动态数组,并且这个数组在编译时还是不知道大小的,到底能不能给二维数组动态分配空间,我还真没试过.是不是跟一维数组一样?用int *ar = new int[n ...

  6. 利用R语言irr包计算ICC值(组内相关系数)

    ICC值是一个较为陌生的概念,在统计学中应用较多,引用百度百科的介绍: 组内相关系数(ICC)是衡量和评价观察者间信度(inter-observer reliability)和复测信度(test-re ...

  7. kmp有next和nextval的C语言,KMP算法计算next值和nextVal值

    KMP算法: 给定一个主串S及一个模式串P,判断模式串是否为主串的子串:若是,返回匹配的第一个元素的位置(序号从1开始),否则返回0: 这里先不写算法,仅仅计算next和nextVal值 那么计算时只 ...

  8. c语言编写程序计算行列式值,求行列式的值,用C语言怎么写啊? 如何求行列式的值...

    导航:网站首页 > 求行列式的值,用C语言怎么写啊? 如何求行列式的值 求行列式的值,用C语言怎么写啊? 如何求行列式的值 相关问题: 匿名网友: 行列式计算公式知道吧,给你个源码参考,大一时写 ...

  9. 二维指针动态分配内存连续问题分析

    当我们定义一个二维指针时,如果需要存储相应的数据,就需要我们动态的分配内存,这时,有一点是需要注意的,分配内存的方法不同,内存的连续性也是不相同的,首先,博主先贴出测试代码: #include < ...

最新文章

  1. 这12张手绘图,让我彻底搞懂了微服务架构!
  2. Python 抖音用户粉丝(公开)--分析与实现
  3. Spring Boot与日志 ——日志框架、日志配置||SLF4j使用||SpringBoot日志关系||切换日志框架
  4. hadoop Federation搭建
  5. Android 拉起小程序页面进行传值
  6. marked override, but does not override
  7. leetcode 113. 路径总和 II(Path Sum II)
  8. 剑指offer面试题32 - I. 从上到下打印二叉树(二叉树)(BFS)
  9. 不属于ipo模型的 python_python ipo模型是指什么?_后端开发
  10. 2.1 LibCurl编程流程(转)
  11. 苹果投影仪_无线投屏才是真正的王道,明基智能商务投影仪E580
  12. 05-2_部署 kube-apiserver 集群
  13. 知识分享:C语言语法总结,初学者可收藏
  14. asset文件夹路径 unity_Unity资源常用目录和路径大总结
  15. Apple Pencil 拆解一代 -1212
  16. 深度学习:GAN 对抗网络原理详细解析(零基础必看)
  17. html5打开新标签,[HTML5] 新标签解释及用法
  18. 中国移动通信互联网短信网关接口协议CMPP2.0(普通文本短信、二进制数据短信)
  19. 远程服务器挂机好吗,什么服务器挂机好
  20. Python 之 pygame 学习(入门知识)

热门文章

  1. java弹窗_弹出窗口总结 - 王道JAVA - CSDNBlog
  2. 前端埋点的缺点_【埋点学习埋点质量】埋点的框架设计及其准确性
  3. dispatcher在java中什么含义_java-我可以使用在DispatcherServlet上下文中声...
  4. 个人计算机硬件构成的叙述正确的是,2010年职称计算机考试模拟试题及答案(计算机基础)2...
  5. ppt格式刷快捷键_为什么别人PPT做的比你快?因为你没掌握这些!
  6. 计算机底纹不起作用,CSS - 背景颜色在IE11中不起作用(CSS - background-color not working in IE11)...
  7. linux下抓包工具 wireshark,网络抓包工具Wireshark的简单使用
  8. android从一点展开动画,Android自定义View——从零开始实现可展开收起的水平菜单栏...
  9. 多人博客php源码,wusx php多用户博客(基础thinkphp)
  10. dnf时装预览怎么打开_DNF最疯狂的年代,纯色天空整套白给,“神话”宠物不卖只送...