【C语言】程序练习(四)

news2024/12/25 2:11:06

大家好,这里是争做图书馆扫地僧的小白。非常感谢各位的支持,也期待着您的关注。

目前博主有着C语言、C++、linux以及数据结构的专栏,内容正在逐步的更新。

希望对各位朋友有所帮助同时也期望可以得到各位的支持,有任何问题欢迎私信与我。

个人主页:争做图书馆扫地僧的小白_-CSDN博客

C语言专栏:C语言_争做图书馆扫地僧的小白的博客-CSDN博客

C++专栏:C++系列_争做图书馆扫地僧的小白的博客-CSDN博客

linux系统:linux系统_争做图书馆扫地僧的小白的博客-CSDN博客

数据结构:数据结构_争做图书馆扫地僧的小白的博客-CSDN博客

最后送大家一句话,路好不好走,也许我不能决定,但走不走,却只有我能决定。

目录

前言

一、数组

(一)一维数组

        1 一维数组的性质

        2.一维数组的初始化

        3练习题

(二)二维数组

        1 二维数组

        2 二维数组的初始化

        3练习题1

        4 练习题2

总结


前言

         C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

        本篇程序练习时对应博主的C语言学习笔记(中)-CSDN博客,本次博客内容将围绕学习笔记中的相关知识点进行整理程序的相关练习,也是博主在学习C语言的过程中所练习的一些题目,希望对有需要的朋友有所帮助,本篇包括一维数组、二维数组性质,数组的初始化练习题以及综合的练习题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数组

(一)一维数组

        1 一维数组的性质

#include <stdio.h>

int main()
{
	int s[5];

	//给数组元素赋值
	s[0] = 1;
	s[1] = 2;
	s[2] = 3;
	s[3] = 4;
	s[4] = 5;
	//读取数组元素的值
	printf("s[0] = %d\n", s[0]);
	printf("s[1] = %d\n", s[1]);
	printf("s[2] = %d\n", s[2]);
	printf("s[3] = %d\n", s[3]);
	printf("s[4] = %d\n", s[4]);

	// &变量名  & 取地址符  可以获取变量的地址
	printf("&s[0] = %p\n", &s[0]);
	printf("&s[1] = %p\n", &s[1]);
	printf("&s[2] = %p\n", &s[2]);
	printf("&s[3] = %p\n", &s[3]);
	printf("&s[4] = %p\n", &s[4]);

    //数组的长度:元素的个数
	printf("sizeof(s) = %ld\n", sizeof(s));
	
	//数组的元素是变量 允许被重新赋值
	s[0] = 10;
	printf("s[0] = %d\n", s[0]);

	//下标可以是一个变量
	int m = 1;
	s[m] = 1234;
	printf("s[m] = %d\n", s[m]);
	//下标可以是一个表达式
	s[s[0]-519] = 1314;
	printf("s[1] = %d\n", s[1]);

	//遍历一维数组 方式1
	int i = 0;
	for(i = 0; i < 5; i++){
		printf("%d  ", s[i]);
	}
	printf("\n");

	//遍历一维数组 方式2
	for(i = 0; i < sizeof(s)/sizeof(s[0]); i++){
		printf("%d  ", s[i]);
	}
	printf("\n");

	return 0;
}

        2.一维数组的初始化

#include <stdio.h>

int main()
{
	//完全初始化
	int s[5] = {10, 20, 30, 40, 50};
	//不完全初始化
	int s[5] = {10, 20};
	//全部初始化成 0
	int s[5] = {0};  
	//省略下标的初始化
	int s[] = {10, 20, 30};

	int i = 0;
	for(i = 0; i < 5; i++){
		printf("%d  ", s[i]);
	}
	printf("\n");
	return 0;
}

        3练习题

定义一个长度为10的int类型的一维数组

        从终端给数组的元素赋值

        找出数组中最大的值,输出最大值。

#include <stdio.h>

int main()
{
	int s[10] = {0};
	int i = 0;
	//循环给数组赋值
	for(i = 0; i < 10; i++){
		scanf("%d", &s[i]);
	}
	
	//保存最大值的下标
	int max_index = 0;
	for(i = 1; i < 10; i++){
		if(s[max_index] < s[i]){
			max_index = i;
		}
	}
	//当循环结束的时候 max_index 中记录的就是最大值的下标
	printf("max_value = %d\n", s[max_index]);

	return 0;
}

(二)二维数组

        1 二维数组

#include <stdio.h>

int main(int argc, const char *argv[])
{
	//每个元素都是一个 int 类型的 变量
	int s[3][4];

	//二维数组访问元素   数组名[行号][列号]
	s[0][0] = 10;
	s[0][1] = 2;
	s[2][2] = 3;
	printf("s[0][0] = %d\n", s[0][0]);
	printf("s[0][1] = %d\n", s[0][1]);
	printf("s[2][2] = %d\n", s[2][2]);

	//二维数组的大小 = 行数*列数*单个元素的大小
	printf("sizeof(s) = %ld\n", sizeof(s));//48  == 3 * 4 * sizeof(int)
	
	//二维数组的元素再内存上也是连续的
	printf("%p\n", &s[0][3]);	
	printf("%p\n", &s[1][0]);

	//遍历二维数组
	int i = 0;
	int j = 0;
	//外层循环控制行数
	for(i = 0; i < 3; i++){
		//内层循环控制列数
		for(j = 0; j < 4; j++){
			printf("%d  ", s[i][j]);
		}
		printf("\n");
	}

	return 0;
}

        2 二维数组的初始化

#include <stdio.h>

int main(int argc, const char *argv[])
{
    //完全初始化
    int s[3][4] = {{1,2,3,4},\
					{5,6,7,8},\
					{9,10,11,12}};
	//不完全初始化 没有初始化的位 也是用0初始化
	int s[3][4] = {{1,2},\
					{5,6},\
					{9}};

	//完全初始化
	int s[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
	//不完全初始化 没有初始化的位 也是用0初始化
	int s[3][4] = {1,2,3,4,5,6};
	
	//全部初始化成0  
	int s[3][4] = {0};
	
	//省略下标的初始化
	int s[][4] = {1,2,3,4,5,6,7,8,9};

	printf("sizeof(s) = %ld\n", sizeof(s));

	//遍历二维数组
	int i = 0;
	int j = 0;
	for(i = 0; i < 3; i++){
		for(j = 0; j < 4; j++){
			printf("%d  ", s[i][j]);
		}
		putchar(10);
	}

	return 0;
}

        3练习题1

定义一个3行4列的二维数组,并以行为单位完全初始化

        初始化的数据随便指定,找出数组中最大的元素,及最大元素所在的行号、列号,并输出。

代码示例:

#include <stdio.h>

int main(){
    int s[3][4] = {{12,23,34,45},{11,22,33,44},{456,1,2,3}};
    int max_h = 0;
    int max_l = 0;
    int i = 0;
    int j = 0;
    for(i = 0; i < 3; i++){
        for(j = 0; j < 4; j++){
            if(s[i][j] > s[max_h][max_l]){
                max_h = i;
                max_l = j;
            }
        }
    }
    printf("max_value = %d  max_hang = %d max_lie = %d\n",
            s[max_h][max_l], max_h, max_l);
    
    return 0;
}

        4 练习题2

使用10*10的二维数组保存杨辉三角的数据 并输出。

代码示例

#include <stdio.h>

#define N 10
int main(){
	int s[N][N] = {0};
	s[0][0] = 1;
	
	//循环给数组赋值
	int i = 0;
	int j = 0;
	for(i = 1; i < N; i++){
		s[i][0] = 1;//给每行的第一列赋值
      //其他列的值循环
		for(j = 1; j <= i; j++){
			s[i][j] = s[i-1][j] + s[i-1][j-1];
		}
	}
	
	//输出数组的值
	for(i = 0; i < N; i++){
		for(j = 0; j <= i; j++){
			printf("%-4d", s[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}


总结

        以上就是今天要讲的内容, 以上就是今天所整理的全部内容,本篇包括一维数组、二维数组性质,数组的初始化练习题以及综合的练习题。希望对正在学习的小伙伴们有所帮助,同时也期待着您的关注。

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

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

相关文章

Rust 圣经 阅读 引用与借用

Rust 通过 借用&#xff08;Borrowing&#xff09; 在使用某个变量的指针或引用。 获取变量的引用&#xff0c;称之为 借用&#xff08;borrowing&#xff09; 。 引用与解引用 引用是为了解决在使用函数时&#xff0c;频繁地传递所有权。 引用只是获取了引用权&#xff0c;而…

QML —— Canvas重绘钟表组件(附完整源码)

示例效果] 源码 main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine>int main(int argc, char *argv[]) {QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);QQmlApplicationEngine engine;const…

Nacos学习思维导图

一、服务注册 参考文档&#xff1a;http://www.bryh.cn/a/118936.html https://blog.csdn.net/Saintmm/article/details/121981184 二、服务续约 参考文档&#xff1a;http://www.bryh.cn/a/118936.html https://blog.csdn.net/Saintmm/article/details/121981184 三、服务…

案例089:基于微信小程序的校园综合服务平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

cmd命令启动C# windows服务程序

因为Process.Manage.Service.exe程序为Windows服务程序&#xff0c;不能直接双击打开&#xff0c;所以需要借助windows系统自带InstallUtil.exe程序来启动它。 以管理员身份运行cmd命令控制台窗口 输入命令进入到InstallUtil.exe程序所在的文件夹 cd C:\Windows\Microsoft.NET…

鸿蒙开发第一天

一、开发准备工作 1、开发工具的安装 1&#xff09;下载地址&#xff1a;https://developer.huawei.com/consumer/cn/deveco-studio/ 2&#xff09;查询API文档链接&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/syscap-00000014080893…

【操作系统xv6】学习记录2 -RISC-V Architecture

说明&#xff1a;看完这节&#xff0c;不会让你称为汇编程序员&#xff0c;知识操作系统的前置。 ref&#xff1a;https://binhack.readthedocs.io/zh/latest/assembly/mips.html https://www.bilibili.com/video/BV1w94y1a7i8/?p7 MIPS MIPS的意思是 “无内部互锁流水级的微…

手撕Vuex-vuex实现原理分析

本章节主要围绕着手撕 Vuex&#xff0c;那么在手撕之前&#xff0c;先来回顾一下 Vuex 的基本使用。 创建一个 Vuex 项目&#xff0c;我这里采用 vue-cli 创建一个项目&#xff0c;然后安装 Vuex。 vue create vuex-demo 选择 Manually select features。 这里只需要&#xff0…

莫比乌斯函数

积性函数定义 若gcd(p,q)1&#xff0c;有f(p*q)f(p)*f(q)&#xff0c;则f(x)是积性函数 其中规定f(1)1&#xff0c;对于积性函数有&#xff1a;所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …

哪些洗地机比较好?洗地机选购指南

随着社会生活水平的提高&#xff0c;人们对居家环境的卫生和清洁要求不断提升。家用洗地机作为一种先进的清洁工具&#xff0c;带来了许多便利和优势&#xff0c;特别是在解决一些特殊需求的家庭环境方面。 以下是一些家用洗地机的优势和适用场景&#xff1a; 1.高效清洁&…

[ Tool ] celery分布式任务框架基本使用

celery官方 Celery 官网&#xff1a;www.celeryproject.org/ Celery 官方文档英文版&#xff1a;docs.celeryproject.org/en/latest/i… Celery 官方文档中文版&#xff1a;docs.jinkan.org/docs/celery… Celery是一个简单、灵活且可靠的&#xff0c;处理大量消息的分布式系…

HackTheBox - Medium - Linux - Agile

Agile Agile 是一个中等难度的 Linux 机器&#xff0c;在端口 80 上有一个密码管理网站。创建帐户并添加几个密码后&#xff0c;发现网站的导出到 CSV 功能容易受到任意文件读取的攻击。其他终结点的枚举显示“/download”在访问时引发错误&#xff0c;并显示“Werkzeug”调试…

贪心算法part05 435无重叠区间

435无重叠区间 763 划分字母区间 56合并区间

什么是聚合支付,又能带来哪些好处?

随着科技的飞速发展&#xff0c;人们的支付方式也在不断地发生变革。从最初的现金支付、银行卡支付&#xff0c;到现在的移动支付、扫码支付等&#xff0c;支付方式已经变得越来越便捷。聚合支付作为一种新型的支付方式&#xff0c;也在逐渐改变着人们的生活方式。那么&#xf…

CSS 中间位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-center: isAnimating }"><!-- 元素内容 -->…

一篇文章带你搞定Python所有内置函数

前言 Python 内置了许多的函数和类型&#xff0c;比如print()&#xff0c;input()等&#xff0c;我们可以直接在程序中使用它们&#xff0c;非常方便&#xff0c;并且它们是Python解释器的底层实现的&#xff0c;所以效率是比一般的自定义函数更有效率。目前共有71个内置函数&…

深入解析d3dcompiler_47.dll文件及其丢失的修复方法

一、d3dcompiler_47.dll是什么文件&#xff1f; d3dcompiler_47.dll是DirectX SDK中的一个动态链接库文件&#xff0c;它是用于编译DirectX着色器的工具之一。DirectX是由微软公司开发的一种多媒体编程接口&#xff0c;它提供了一系列的API和工具&#xff0c;用于开发游戏和多…

打造专业开发者指南:针对ShardingProxy分库分表解决策略的深度剖析 – 详解部署、使用、服务治理与优化技巧

一、 ShardingProxy快速使用 ShardingProxy的功能同样是分库分表&#xff0c;但是他是一个独立部署的服务端&#xff0c;提供 统一的数据库代理服务。注意&#xff0c;ShardingProxy目前只支持MySQL和PostgreSQL。并且&#xff0c;客户端连接ShardingProxy时&#xff0c;最好使…

java每日一题——双色球系统(答案及编程思路)

前言&#xff1a; 打好基础&#xff0c;daydayup! 题目&#xff1a;要求如下&#xff08;同时&#xff1a;红球每个号码不可以相同&#xff09; 编程思路&#xff1a;1&#xff0c;创建一个可以录入数字的数组&#xff1b;2&#xff0c;生成一个可以随机生成数字的数组&#xf…

MT8766安卓核心板规格参数_MTK8766核心板模块方案定制

MT8766安卓核心板&#xff1a;高性能、稳定可靠、集成度高的一体化解决方案 MT8766安卓核心板采用联发科MTK8766四核4G模块方案&#xff0c;是一款高度集成的安卓一体板。四核芯片架构&#xff0c;主频可达到2.0GHz&#xff0c;支持国内4G全网通。12nm制程工艺&#xff0c;支持…