C 语言练习分享

c语言的一些小练习,可以多思考,多看看

1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{//Sum=1-2+3-4+5-6+……+99-100int sum=0;for (int i = 1; i <= 100; ++i){if (i % 2 == 0){sum -= i;}else{sum += i;}}printf("Sum=1-2+3-4+5-6+……+99-100=%d", sum);//结果为-50
}

2. 有无符号数比大小

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{int num1 = -10;unsigned int num2 = 5;//unsigned是无符号数的定义//条件运算表达式num1 + num2 > 0 ? printf(">0\n") : printf("<0\n");//格式:表达式?结果1:结果2;
}

3. 数组的逆置

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{int a[10] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;int j = sizeof(a) / sizeof(a[0]) - 1;int tmp = 0;while (i < j){		//前后交换tmp = a[i];a[i] = a[j];a[j] = tmp;//移动位置i++;j--;}for (int i = 0; i <= sizeof(a) / sizeof(a[0])-1; i++){printf("%d ", a[i]);}
}

4. 数组的冒泡排列

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{int a[5] = { 2,5,6,3,-1 };int n = sizeof(a) / sizeof(a[0]);//sizeof是计算数值存储变量的字节for (int i = 0; i < n - 1; i++) //比较轮数{for (int j = 0; j < n - 1 - i; j++) //比较两数的大小,如果后面的数比前面的数大,则互换一下位置{if (a[j] > a[j + 1]){int tmp = a[j + 1];a[j + 1] = a[j];a[j] = tmp;}}}for (int i = 0; i < n; i++)//打印数组{printf("%d ", a[i]);}printf("\n");return 0;
}

5. 计算三列的平均数和统计没课的不及格数:a[5][3] = { {80,75,56},{59,65,71},{59,63,70},{85,45,90},{76,77,45} }

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{//二维数组float a[5][3] = { {80,75,56},{59,65,71},{59,63,70},{85,45,90},{76,77,45} };float sum = 0.0;float aver[3] = { 0 };   //数组第一列5个数的平均值的空数组int num[3] = { 0 };     //不及格次数的空数组for (int i = 1; i < 3; i++){sum = 0;//每次循环的sum值都要初始化,清零for (int j = 0; j < 5; j++){sum += a[j][i];if (a[j][i] < 60)   //判断分数及格还是不及格{num[i]++;}}aver[i] = sum / 5;}for (int i = 0; i < 3; i++)  //统计平均数{printf("%f\n", aver[i]);}for (int i = 0; i < 3; i++)  //统计次数{printf("%d\n", num[i]);}
}

6. 数组(寻找\0的下标)

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{char buf[128] = "helloA";int i = 0;while (buf[i] != '\0')//有几个元素不等于0{i++;}printf("i=%d\n", i);buf[i - 1] = '\0';//使最后一个元素等于\0printf("%s", buf);system("pause");return 0;
}

7. 字符数组的比大小

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{/*定义两个空字符串*/char str1[128] = "";char str2[128] = "";printf("请输入两个字符串:\n");fgets(str1, sizeof(str1), stdin); /*stdin的意思是,从键盘获取(固定值)*/fgets(str2, sizeof(str2), stdin); /*strlen()是测字符数组里面有多个元素,后面是使最后一个元素等于0,也就是结束数组,0等于\0*/str1[strlen(str1) - 1] = 0;str2[strlen(str2) - 1] = 0;printf("%s\n", str1);printf("%s\n", str2);/*第一种,写法用的是while,元素不能是\0和互不相等*/int i = 0;while (str1[i] != 0 && str2[i] != 0) /*去掉if条件,直接加 && str1[i]==str2[i]*/{if (str1[i] != str2[i])break;i++;}/*第二种,用for*///  for (int i= 1; str1[i] != 0 && str2[i] != 0 && str1[i] == str2[i]; i++)if (str1[i] > str2[i])  /*比较大小*/{printf("str1>str2\n");}else if (str1[i] < str2[i]){printf("str1<str2\n");}else{printf("str1==str2");}
}

8. 有个数组,找出第二大的数,并且打印出来(使用指针操作数组元素个数,不要使用[ ])int a[ ]={100,100,100,234,123,500,32,68,41,99,13,71}

#define _CRT_SECURE_NO_WARNINGS 1 //要写在第一行
#include "stdio.h"
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
int main() 
{    int a[] = {100, 100, 100, 234, 123, 500, 32, 68, 41, 99, 13, 71};int size = sizeof(a) / sizeof(a[0]);  // 计算数组的大小int *ptr = a;  // 指向数组的指针int max = *ptr;  // 假设第一个元素为最大值int secondMax = *ptr;  // 假设第一个元素为第二大的值// 遍历数组,找出最大值和第二大的值   for (int i = 0; i < size; i++) //遍历数组{        if (*ptr > max) //*ptr是首元素地址,max是指针地址{            secondMax = max;            max = *ptr;       } else if (*ptr > secondMax && *ptr < max) {            secondMax = *ptr;       }ptr++;  // 指针移动到下一个元素   }   std::cout << "第二大的数是:" << secondMax << std::endl;return 0;
}

9. 提取字符串

int main()
{char buf[] = "               hello world         ";char num[128] = "";char* start = buf;/*首元素地址*/char* end = &buf[strlen(buf) - 1];/*字符串最后元素地址*/while (*start == ' ' && *start != 0){start++;}while (*end == ' ' && *end != 0){end--;}printf("%d\n", end - start + 1);/*提取字符的元素个数*/strncpy(num, start, end - start + 1);/*拷贝:将字符数组start拷贝至num,拷贝个数是end-start+1个*/printf("num=%s\n", num); 
}

10. 字符串的前后替换

int main()
{char buf[] = "abcdefg";char* start = buf;char* end = &buf[strlen(buf) - 1];while (end > start){char ch = *end;* end = *start;*start = ch;end--;start++;}printf("%s\n", buf);
}

谢谢大家的观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVS(Layout versus schematic)比的是什么?

概述 LVS不是一个简单地将版图与电路原理图进行比较的过程&#xff0c;它需要分两步完成。第一步“抽取”&#xff0c;第二步“比较”。首先根据LVS提取规则&#xff0c;EDA 工具从版图中抽取出版图所确定的网表文件&#xff1b;然后将抽取出的网表文件与电路网表文件进行比较…

跳槽多次未成功,问题源自何处?

众所周知&#xff0c;2023年市场很难&#xff01;看着企业们纷纷裁员&#xff0c;甚至连内推这个后门都走不通&#xff01;哪怕有面试&#xff0c;都是屡屡碰壁&#xff0c;你想清楚问题出在哪了吗&#xff1f;&#x1f62d;“求职不得&#xff0c;夜不能寐&#xff1b;三更半夜…

GEE土地分类——基于遥感影像数据的不同作物的分类

简介 这里我们首先要更改原始代码的中的影像和研究区矢量的问题,这个为了防止我们计算的过程超限,建议先将我们的研究区影像和样本点先存在自己的assets中,然后导入到新的脚本中。然周本文就是对其进行影像进行归一化处理,然后进行样本点值提取至点,然后训练样本点,进行…

学习刷题-14

3.29 贪心算法 跳跃游戏 II 给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 贪心的思路&#xff0c;局部最优&#xff1a;当前可移动距离尽可能多…

【4】单链表(有虚拟头节点)

【4】单链表&#xff08;有虚拟头节点&#xff09; 1、虚拟头节点2、构造方法3、node(int index) 返回索引位置的节点4、添加5、删除6、ArrayList 复杂度分析(1) 复杂度分析(2) 数组的随机访问(3) 动态数组 add(E element) 复杂度分析(4) 动态数组的缩容(5) 复杂度震荡 7、单链…

【软考高项范文】论信息系统项目的进度管理

项目进度管理是保证项目的所有工作都在指定的时间内完成的重要管理过程。营理项目进度是每个项目经理在项目管理过程中耗时耗力最多的一项工作,项目进度与项目成本、项目质量密不可分。 请以“信息系统项目的进度管理”为题,分别从以下三个方面进行论述: 1.概要叙述你参与…

3.两数相加 - 链表

文章目录 题目简介题目解答代码&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 两数相加 相关的讲解&#xff01;&#x1f600; 题目简介 题目解答 通过题目给的第一个示例来解析 图解如下&#xff1a; l1的2和l2的5首先相加变为7 这里相加结果为7…

Ubuntu18.04安装wireshark

安装wireshark 环境Ubuntu18.04 1.使用root用户进行安装 2.将 wireshark-dev/stable PPA 添加到系统的软件源列表中。系统就可以从该PPA获取Wireshark软件包及其更新了。 apt-add-repository ppa:wireshark-dev/stable3.确保你系统上的软件包信息是最新的&#xff0c;这样在…

Yarn - macOS 上安装使用

文章目录 关于 YarnYarn 工作流程安装检查安装、查看版本 常用命令 关于 Yarn Yarn 是一款成熟的开源软件包管理器&#xff0c;用于管理 JavaScript 项目中的依赖关系。 官网&#xff1a;https://yarnpkg.comgithub : https://github.com/yarnpkg官方文档&#xff1a;https:/…

高炉项目中DeviceNET到Ethernet的转换奥秘

在工业自动化的世界中&#xff0c;高炉项目中的数据通信至关重要。其中DeviceNET和Ethernet作为两种主流的网络协议&#xff0c;扮演着不可或缺的角色。它们之间的转换不仅仅是技术上的桥梁&#xff0c;更是实现信息高效传递的关键。今天&#xff0c;我们就来揭开从DeviceNET到…

LeetCode-热题100:394. 字符串解码

题目描述 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的空格&am…

数据结构——lesson13排序之计数排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

Java 中的单例模式

引言&#xff1a; 在 Java 编程中&#xff0c;单例模式是一种常见的设计模式&#xff0c;它保证一个类只能创建一个实例&#xff0c;并提供一个全局访问点。单例模式在很多场景下都非常有用&#xff0c;比如线程池、日志系统、数据库连接池等。本文将详细介绍 Java 中单例模式的…

操作教程|在MeterSphere中通过SSH登录服务器的两种方法

MeterSphere开源持续测试平台拥有非常强大的插件集成机制&#xff0c;用户可以通过插件实现平台能力的拓展&#xff0c;借助插件或脚本实现多种功能。在测试过程中&#xff0c;测试人员有时需要通过SSH协议登录至服务器&#xff0c;以获取某些配置文件和日志文件&#xff0c;或…

知乎:多云架构下大模型训练,如何保障存储稳定性?

知乎&#xff0c;中文互联网领域领先的问答社区和原创内容平台&#xff0c;2011 年 1 月正式上线&#xff0c;月活跃用户超过 1 亿。平台的搜索和推荐服务得益于先进的 AI 算法&#xff0c;数百名算法工程师基于数据平台和机器学习平台进行海量数据处理和算法训练任务。 为了提…

Python学习笔记 - Python 2.x 和 Python 3.x 之间的重要区别

接手了一个基于Python 2.x编写的程序,想要将它们统一到新的Python 3.x的环境下,有些东西会报错,所以查了查,并且记录一下。 Python 除法运算符 首先需要注意除法运算符,移植代码时,最好使用浮点值(如 7.0/5 或 7/5.0)来获得预期结果。 print(7 / 5 ) print(-7 / 5) …

在 Linux中解压,压缩命令详解

在 Linux中解压&#xff0c;压缩命令详解 在 Linux中解压&#xff0c;压缩命令详解 &#x1f427;&#x1f4bb;摘要引言正文内容解压命令详解1. 解压 .zip 文件unzip 命令 2. 解压 .tar.gz、.tar.bz2、.tar.xz 文件tar 命令 3. 解压其他格式的压缩文件gzip 命令bzip2 命令 压…

开源软件协议全解析:深入解读开源世界的“游戏规则”

在数字经济的浪潮下&#xff0c;开源软件已经成为软件行业的中流砥柱&#xff0c;为众多开发者提供了宝贵的资源和灵感。然而&#xff0c;开源软件并非“免费午餐”&#xff0c;背后隐藏着各种协议和法律约束。本文将深入剖析开源软件的各种协议&#xff0c;为开发者提供一份详…

探讨人类“爱看热闹”现象的心理机制及其社会意义

“爱看热闹”这一行为现象普遍存在于世界各地的人群之中&#xff0c;无论是街头巷尾的小事&#xff0c;还是社交媒体上的热点事件&#xff0c;总能吸引大量人群驻足围观或参与讨论。这种看似寻常的社会现象背后&#xff0c;实则蕴含着丰富的人类心理机制和社会学原理。本文旨在…

js Class的概念及其应用场景

含义&#xff1a;类是用来创建对象的模板。 了解类概念之前最好了解以下的知识&#xff1a; 懂点闭包构造函数原型 JS和其他语言不同&#xff0c;它是没有Class的&#xff0c;它本质就是JS的构造函数封装的语法糖。ES6提供一种更为清晰的方式来遵循面向对象的编程方式。 首先…