C语言练习(一)

今天来讲解一下数组相关的习题,巩固昨天的知识
欢迎加入嵌入式学习群:559601187

1.对于二维数组首地址偏移。
二维数组数组名偏移一个数,地址偏移一行,针对这个问题后面会做一个详细的讲解

#include <stdio.h>
int main()
{int str[3][3]={1,2,3,4,5,6,7,8,9};int i=0,j=0;for(i=0;i<3;i++){for(j=0;j<3;j++){printf("str[%d][%d]=%p\n",i,j,&str[i][j]);}}printf("%p\n",(str+1)[0]);//4地址--偏移一行printf("%d\n",(str[0]+1)[0]);//数字2--偏移一个元素return 0;
}

2、利用数组实现斐波那契数列的前30项,并要求格式化对齐,每行值输出5个数
(斐波那契数列:1 1 2 3 5 8 13 21……)

#include <stdio.h>
int main()
{int str[30]={1,1},i=0,sum=0;for(i=2;i<30;i++){str[i]=str[i-1]+str[i-2];}for(i=0;i<30;i++){   printf("%-8d",str[i]);    if((i+1)%5==0){printf("\n"); }}return 0;
}  

3、要用用二维数组实现:求一个3*4的矩阵的转置矩阵
(将原来矩阵的行变成新矩阵的列,原来矩阵的列变成新矩阵的行)。

#include <stdio.h>
int main()
{int str[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},i=0,j=0;int str2[4][3]={0};for(i=0;i<3;i++){for(j=0;j<4;j++){str2[j][i]=str[i][j];}}for(i=0;i<4;i++){for(j=0;j<3;j++){printf("%-4d",str2[i][j]);}printf("\n");}return 0;
}

4、输入一行字符串,统计其中大写字母的个数,并将所有的大写字母转化成小写字母后输出。scanf(“%s”,数组名)

#include <stdio.h>
#include <string.h>
int main()
{char str[100]={0};int i=0,len=0,count=0;scanf("%s",str);len=strlen(str);for(i=0;i<len;i++){if(str[i]>='A'&&str[i]<='Z'){count++;str[i]+=32;}}printf("count=%d,%s\n",count,str);return 0;
}

5、输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。
如“abcba”和”123321”都是回文

#include <stdio.h>
#include <string.h>
int main()
{char str[100]={0};int i=0,len=0;scanf("%s",str);len=strlen(str);for(i=0;i<len/2;i++){if(str[i]==str[len-i-1]){//count++;break;}}if(i==len/2){printf("yes\n");}else{printf("no\n");}return 0;
}

6、按以下输出格式打印杨辉三角的前10行
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

#include <stdio.h>
#include <string.h>
int main()
{int str[10][10]={0};int i=0,j=0;for(i=0;i<10;i++){str[i][0]=1;str[i][i]=1;}for(i=2;i<10;i++){for(j=1;j<10;j++){str[i][j]=str[i-1][j]+str[i-1][j-1];}}for(i=0;i<10;i++){for(j=0;j<=i;j++){printf("%-5d",str[i][j]);}printf("\n");}return 0;
}

9、假设有10个数已经按照从小到大的顺序存放在数组中,要求向从键盘输入一个整数,
插入这10个数中,使数组仍是从小到大的顺序排列

#include <stdio.h>
#include <string.h>
int main()
{int str[11]={1,2,3,4,5,6,7,8,9,10};int i=0,j=0,num=0,temp=0;scanf("%d",&num);for(i=0;i<10;i++){if(num<str[i]){temp=i;break;}}if(num>str[9]){temp=10;}for(i=10;i>temp;i--){str[i]=str[i-1];}str[temp]=num;for(i=0;i<11;i++){printf("%d\n",str[i]);}return 0;
}

10、输入10进制数转换为二进制进行输出

#include <stdio.h>
#include <string.h>
int main()
{int str[100]={0};int count=0,num=0,i=0;scanf("%d",&num);while(num){str[count++]=num%2;num/=2;}for(i=count-1;i>=0;i--){printf("%-2d",str[i]);}printf("\n");return 0;
}

本文章仅供学习交流用禁止用作商业用途,文中内容来水枂编辑,如需转载请告知,谢谢合作

微信公众号:zhjj0729

微博:文艺to青年

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

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

相关文章

(五)C语言之二维数组

今天的第二个内容单独拿出来讲一下&#xff0c;对于初接触C语言的人来说&#xff0c;这个知识点比较难懂&#xff0c;后面在讲指针的时候我还会提到这部分的内容&#xff0c;看不懂的同学可以看后面的内容。 指针变量可以指向一维数组中的元素&#xff0c;当然也就可以指向二维…

平衡二叉树AVL删除

平衡二叉树的插入过程: http://www.cnblogs.com/hujunzheng/p/4665451.html 对于二叉平衡树的删除采用的是二叉排序树删除的思路: 假设被删结点是*p&#xff0c;其双亲是*f&#xff0c;不失一般性&#xff0c;设*p是*f的左孩子&#xff0c;下面分三种情况讨论&#xff1a;  ⑴…

(六)C语言之函数

本篇文章分为三个部分讲解&#xff0c;分别为函数、局部变量和全局变量、c语言存储分区 &#xff08;一&#xff09;函数的定义和调用 函数&#xff1a;工程中最小的单位&#xff0c;为了实现某一功能的 函数的定义&#xff1a; 数据类型 函数名(数据类型 形参1&#xff0c;…

堆排序算法---属于选择排序

1.堆 堆实际上是一棵完全二叉树&#xff0c;其任何一非叶节点满足性质&#xff1a; Key[i]<key[2i1]&&Key[i]<key[2i2]或者Key[i]>Key[2i1]&&key>key[2i2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆…

(七)C语言之指针

c语言相比其他高级语言来说&#xff0c;更接近于对计算机硬件的操作&#xff0c;而指针的应用更是为我们对硬件的操作插上了翅膀&#xff0c;所以指针是嵌入式编程不可少的一部分&#xff0c;在一定意义上说&#xff0c;指针是c语言的精髓。 一、 什么是指针 在计算机中&#…

各种排序(数据结构复习之内部排序算法总结)

1.三种选择排序&#xff08;简单选择排序&#xff0c;树形选择排序&#xff0c;堆排序&#xff09; #include<iostream> #include<cstring> #include<string> #include<queue> #include<map> #include<cstdlib> #include<cstdio> c…

(八)C语言之结构

今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 &#xff08;一&#xff09;结构体&#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续&#xff0c;每次分配最大数据类型的宽度占用内存为所有变…

插入排序之表插入排序

1.表插入排序只是求得一个有序的链表&#xff0c;它是修改指针的值来代替移动记录&#xff0c;操作过程如下 2.但是这样只能进行顺序查找&#xff0c;不能进行随机查找&#xff0c;为了能实现有序表的折半查找&#xff0c;需要对记录进行重新排列。操作过程如下&#xff1a; 3.…

电容降压LED驱动电路

电容降压电路具有体积小、成本低、电流相对稳定等优点&#xff0c;可应用于小功率的LED驱动电路中&#xff0c;本文主要介绍了电容降压电路的基本电路 图一&#xff1a; 电容降压式简易电源的基本原理如图一所示&#xff0c;C3为降压电容器&#xff1b;D4为半波整流二极管&…

延时电路分析

延时电路经常会用到&#xff0c;RC电路是比较简单的电路。在电路设计中经常会用到将电阻和电容正极连接&#xff0c;电阻另一端接上电源&#xff0c;电容负极接地。 简单的延时电路 上面就是延时的电路图了&#xff0c;延时的时间为T-ln((VCC-Vout)/VCC)RC&#xff0c;公式中的…

恒流电路的分析(一)

在这里分析一个简单的LED恒流电路&#xff0c;软件采用Multisim进行波形采集 一、元器件 R1为80KΩ左右的金属膜电阻&#xff1b;Q选取耐压值超过350V的VPN三极管&#xff1b;D选取2V左右的稳压二极管(如1N4680)&#xff1b;C2选取10V、100UF以上的电解电容&#xff1b;R2选择…

ST-LINK USB communication error解决方法

今天在用stlink-v2下载程序时出现ST-LINK USB communication error&#xff0c;突然就出现了这个问题&#xff0c;在网上找了好多解决办法都不可以用&#xff0c;下面给出我的解决方案&#xff0c;文章末尾给出了网上的几种解决办法&#xff0c;仅供参考。 第一步&#xff1a;找…

ajax实现上传文件

1.html部分 <input style"width: 280px" type"file" name"upLoadProjectPlan" id"upLoadProjectPlan" value"<%taskAppend.getTaskAllocationDoc()%>"/><a style"float: right; margin-right: 40px&qu…

利用STM32制作红外测温仪之硬件设计

最近受疫情的影响详细大家都在家里没事干&#xff0c;这里利用stm32最小系统做一个红外测温仪 这篇教程里我们来制作红外测温仪需要用到的硬件&#xff0c;关于PCB的工程文件&#xff0c;后文会给出。 &#xff08;一&#xff09;系统分析 由于我们的功能比较单一&#xff0c;…

如何在博客中插入背景音乐

1.首先进入网音乐官方网站&#xff1b; 2.查找自己喜欢的歌&#xff0c;看到如下界面 3.点击"生成外链播放器" 4.看到下面的html代码了吗&#xff1f;将代码进行复制。 5.进入博客园&#xff0c;点击 "管理" ->"设置"&#xff0c; 将代码复制…

常用存储器介绍

注意&#xff1a;"易失/非易失"是指存储器断电后&#xff0c;它存储的数据内容是否会丢失的特性。 &#xff08;一&#xff09;RAM和ROM 1.1 RAM RAM即随机存储器&#xff0c;它是指存储器中的数据被读入或者写入与信息所在位置无关&#xff0c;时间都是相同的 1…

TortoiseGit与github实现项目的上传

1. 下载并安装相关软件 这里主要涉及的软件包括msysgit和TortoiseGit。 msysgit的下载地址&#xff1a;http://msysgit.googlecode.com/files/Git-1.7.4-preview20110204.exe TortoiseGit的下载地址&#xff1a;http://code.google.com/p/tortoisegit/downloads/list&#xff0…

Uboot启动

&#xff08;一&#xff09;uboot 配置编译分析 u-boot源码是通过gcc和Makefile组织编译的&#xff0c;顶层目录下的Makefile可通过boards.cfg来设置开发板的定义 然后递归调用各级子目录下的Makefile&#xff0c;把编译过的程序连接成u-boot boards.cfg文件&#xff1a; 开发…

行列式计算的两种方法

#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define N 100 using namespace std; int a[N][N]; double aa[N][N]; int n;/**********************************************************/ //求行列式的值&#xff1…

uboot启动流程分析

Uboot的启动流程分为两个阶段&#xff0c;第一阶段主要是汇编语言编写&#xff0c;第二阶段是C语言编写&#xff0c;每个阶段所做的工作不同&#xff0c;这篇文章分析的是uboot 2010版&#xff0c;以tiny4412的uboot为例。 启动过程涉及的主要文件&#xff1a; arch/arm/cpu/a…