C基础day7(2023.7.7)

一、Xmind整理:

二、课上练习:

练习1:二维数组地址

int main(int argc, const char *argv[])
{int arr[2][3]={11,22,33,44,55,66};for(int i=0;i<2;i++){for(int j=0;j<3;j++){printf("arr[%d][%d]=%p\n",i,j,&arr[i][j]);}}

练习2:计算m行n列的二维数组的最大值和最小值,以及所在的行列 

    //1,定义m,n,并输入//2,定义二维数组 int arr[m][n]//3,循环输入二维数组//4,给max,min复制二位数组的第一个元素arr[0][0]//5,计算最大值和最小值//6,先得到最值的i,jint main(int argc, const char *argv[])
{int m,n;printf("please enter m,n:");scanf("%d %d",&m,&n);int arr[m][n];for(int i=0;i<m;i++){for(int j=0;j<n;j++){scanf("%d",&arr[i][j]);}}int max=arr[0][0],min=arr[0][0];int maxi,maxj,mini,minj;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(max <arr[i][j]){max=arr[i][j];//得到最大值maxi=i;//得到最大值的行下表maxj=j;//得到最大值的列下表}if(min>arr[i][j]){min=arr[i][j];mini=i;minj=j;}}}printf("max=%d %d行%d列\n",max,maxi+1,maxj+1);printf("min=%d %d行%d列\n",min,mini+1,minj+1);

练习3:字符串逆置 

 "hello"  "olleh"   strlen(a)-101234  i   ji jijint i=0,j=strlen(a)-1; while(i<j){char t=arr[i];arr[i]=arr[j];arr[j]=t; i++;j--;                }

练习4:字符串长度 strlen

1>计算变量的长度char str[]="hello"printf("strlen(str)=%ld\n",strlen(str));
2>计算字符串常量的长度printf("strlen(”hello“)=%ld\n",strlen("hello"));  

练习5: 字符串拷贝strcpy

 char dest[10]="hello";char src[5]="1234";strcpy(dest,src);strcpy(dest,"1234");   

练习6:字符串连接strcat 

 char dest[20]="hello",src[]="world";strcat(dest,src);strcat(dest,"world");

练习7: 字符串比较strcmp

 int main(int argc, const char *argv[])
{char s1[]="ABDD";char s2[]="ABDD";int n=strcmp(s1,s2);printf("n=%d\n",n);if(strcmp(s1,s2)>0)//if(s1>s2)printf("s1>s2");else if(strcmp(s1,s2)<0)printf("s1<s2");elseprintf("s1=s2");return 0;
}

练习8:使用行列的方式遍历二维数组

char a[3][5]={"abcd","ASDF","123"};for(int i=0;i<3;i++){for(int j=0;j<5;j++){printf("%c",a[i][j]);}printf("\n");}

练习9:二维数组的循环输入和循环输出 

char a[3][5];for(int i=0;i<3;i++){scanf("%s",a[i]);}for(int i=0;i<3;i++){printf("%s ",a[i]);}

 三、课后作业:

1.冒泡:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int m,n,i,j,t,count;printf("请问你要输入一个几位数组:");scanf("%d",&n);int arr[n];for(m=0;m<n;m++){printf("请输入第%d个数:",m+1);scanf("%d",&arr[m]);}for(i=1;i<n;i++){count=0;for(j=0;j<n-i;j++){if(arr[j]>arr[j+1]){t=arr[j];arr[j]=arr[j+1];arr[j+1]=t;count++;}}if(count==0)break;}for(i=0;i<n;i++){printf("%d\t",arr[i]); }printf("\n");return 0;
}

 2.简单排序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int m,n,i,j,t,min;printf("请问您要输入一个几位数组:");scanf("%d",&n);int arr[n];for(m=0;m<n;m++){printf("请输入第%d个数:",m+1);scanf("%d",&arr[m]);}for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++){if(arr[min]>arr[j]){min=j;}}if(min!=i){t=arr[min];arr[min]=arr[i];arr[i]=t;}}for(i=0;i<n;i++){printf("%d\t",arr[i]);}printf("\n");return 0;
}

3.杨辉三角

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int n;printf("请问您要输入一个几行几列的杨辉三角:");scanf("%d",&n);int a[n][n];int i,j;for(i=0;i<n;i++){for(j=0;j<n-i;j++){printf("  ");}for(j=0;j<=i;j++){if(j==0 || i==j){a[i][j]=1;}else{a[i][j]=a[i-1][j]+a[i-1][j-1];}printf("%4d",a[i][j]);}printf("\n");}return 0;
}

4.图形打印

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{for(int i='A';i<='D';i++){for(int j='A';j<=i;j++){printf("%c",i);}printf("\n");}printf("\n");for(int i='D';i>='A';i--){for(int j='D';j>='D'-i+65;j--){printf("%c",i);}printf("\n");}return 0;
}

5.穷举算法

日本某地发生了一件谋杀案,警察通过排查确定茶人凶手必定4个中的一个

以下为4个嫌疑犯的供词 :

A说:罪犯是他们3人当中

B说:人不是我杀的,是C

C说:A和D之间有一个是罪犯

D说:B说的是事实

已知2个人说了真话,2个人说了假话

请编程确定谁是凶手

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{char killer;for(killer='A';killer<='D';killer++){if(((killer=='B'||killer=='C'||killer=='D')+(killer=='C')+(killer=='A'||killer=='D')+(killer=='C'))==2){printf("凶手是:%c\n",killer);}}return 0;
}

6.判断

给定一个整数,判断它是否被3、5、7整除,并输出一下信息

1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格) 

2.只能被其中两个整数整除(输出两个数,小的在前,大的在后,例如3  5 或者 3  7 或者5  7,中间使用空格隔开)

3. 只能被其中一个整数整除(输出这个除数)

4.不能被任何数整除,输出小写字母n 

案例如下: 输入:105            输出:3 5 7

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int a;printf("请输入一个整数:");scanf("%d",&a);if(a%3==0)printf("3 ");if(a%5==0)printf("5 ");if(a%7==0)printf("7");if(a%3!=0&&a%5!=0&&a%7!=0)printf("n");printf("\n");return 0;
}

7.字符串单词逆置

”good good study“

"study good good"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{char str[100]="";printf("请输入一个字符串:");gets(str);char t,m;int i=0,k;int j=strlen(str)-1;while(i<j){t=str[i];str[i]=str[j];str[j]=t;i++;j--;}i=0;j=0;while(str[i]!='\0'){while(str[j]!=' '&&str[j]!='\0'){j++;}k=j-1;while(i<k){m=str[i];str[i]=str[k];str[k]=m;i++;k--;}while(str[j]==' '){j++;}i=j;}puts(str);return 0;
}

 8.实现atoi函数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{char str[100]="";printf("请输入一个字符串:");scanf("%s",str);int i=0,sum=0;while(str[i])  //while(str[i]!=0){int n=str[i]-'0';sum=sum*10+n;i++;}printf("sum=%d\n",sum);return 0;
}

 9.输入一个字符串,删除字符串中的空格

''this is my class"

"thisismyclass"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{char str1[100]="";printf("请输入一个字符串:");gets(str1);char str2[100];int k=0;for(int i=0;str1[i]!='\0';i++)if(str1[i]!=' ')str2[k++]=str1[i];puts(str2);return 0;
}

10.四个字符串函数,非函数实现

①strlen函数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{char str[100]="";printf("请输入一个字符串:");scanf("%s",str);int count=0;for(int i=0;str[i]!='\0';i++){count++;}printf("这个字符串的长度为:%d\n",count);return 0;
}

②strcpy函数

char dest[100]="";char src[100]="";printf("请输入第一个字符串:");scanf("%s",dest);printf("请输入第二个字符串:");scanf("%s",src);int i;for(i=0;src[i]!='\0';i++){dest[i]=src[i];}dest[i]='\0';printf("交换后dest=%s\n",dest);

③strcat函数

for(i=0;dest[i]!='\0';i++);int j;for(j=0;src[j]!='\0';j++){dest[i]=src[j];i++;}dest[i]='\0';printf("连接后的dest=%s\n",dest);

④strcmp函数

int i=0;
int j=0;while(dest[i]==src[j]){if(dest[i]=='\0'){break;}i++;j++;}if(dest[i]>src[j])printf("dest>src\n");else if(dest[i]<src[j])printf("dest<src\n");elseprintf("dest=src\n");

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

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

相关文章

七大排序算法——归并排序,通俗易懂的思路讲解与图解(完整Java代码)

文章目录 一、排序的概念排序的概念排序的稳定性七大排序算法 二、归并排序核心思想代码实现 三、性能分析四、七大排序算法性能对比 一、排序的概念 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0…

NTLM协议

0x01 LM Hash加密算法 LM Hash本质是一个DES加密&#xff0c;从Windows Vista和Windows Server 2008开始就禁用了LM Hash。LM Hash明文密码被限定在14位以内&#xff0c;密码超过14位则会停止使用LM Hash。下面介绍一下LM Hash的加密流程&#xff0c;以Pss1234为例&#xff1a…

FFMPEG 编译流程(极客版)

前言 依葫芦画瓢 全程30分钟从零完成ffmpeg编译&#xff0c;主打的就是一个极客 编译环境 OS 要求&#xff1a;Ubuntu 20.04 LTS VMware新建虚拟机 NDK 要求&#xff1a;android-ndk-r20b FFmpeg 功能模块&#xff1a; libavformat:多媒体文件或协议的封装和解封装库&a…

计算机基础--->数据结构(9)【并查集】

文章目录 并查集的概述并查集的主要用途并查集的实现创建和初始化集合查找当前元素的集合根节点判断两个元素是否处于同一集合合并两个集合对节点的路径进行压缩 并查集的概述 并查集是一种用于解决集合合并和查询问题的数据结构&#xff0c;主要用于实现有关集合的操作&#x…

IDEA 配置 openjdk,jre

使用 idea 配置 zip 版本的 openjdk 和 jre&#xff0c;我使用的时 redhat 提供的 jdk 和 jre。 一、下载 idea、jdk 和 jre 红帽下载地址为&#xff1a; jdk 和 jre 安装地址根据个人配置&#xff0c;我的配置如下&#xff1a; 下划线的分别为我的 jdk 和 jre 保存路径 二…

【力扣刷题 | 第十八天】

目录 前言&#xff1a; 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 134. 加油站 - 力扣&#xff08;LeetCode&#xff09; 总结&#xff1a; 前言&#xff1a; 今天随机刷题&#xff0c;不对题型做具体的要求 1005. K 次取反后最大化的数组和 …

【2023,学点儿新Java-33】字符型变量char | 布尔类型变量 boolean:true、false

前情提要&#xff1a; 【2023&#xff0c;学点儿新Java-32】Java基础小练习&#xff1a;根据圆周率与半径求圆的面积 | 温度转换 | 计算矩形面积 | 判断奇偶数 | 年龄分类【2023&#xff0c;学点儿新Java-31】测试&#xff1a;整型和浮点型变量的使用 | 附&#xff1a;计算机存…

2.zabbxi操作和设置

文章目录 zabbxi操作和设置添加zabbix-agent客户端web端添加客户端 自定义监控模板&#xff08;面试&#xff09;监控模板下载地址案例1案例2 设置邮件报警自动注册和自动发现自动发现&#xff08;对于agent是被动模式&#xff09;自动注册&#xff08;对于agent是主动模式&…

PROFINET转TCP/IP网关TCP/IP协议的含义是

大家好&#xff0c;今天要和大家分享一款自主研发的通讯网关&#xff0c;远创智控YC-PN-TCPIP。这款网关可是集多种功能于一身&#xff0c;PROFINET从站功能&#xff0c;让它在通讯领域独领风骚。想知道这款网关如何实现PROFINET和TCP/IP网络的连接吗&#xff1f;一起来看看吧&…

虚拟化容器化与docker

虚拟化容器化与docker 基本概念虚拟化分类虚拟化实现主机虚拟化实现容器虚拟化实现命名空间namespace空间隔离 控制组群cgroup资源隔离 LXC(Linux Container) docker与虚拟机 基本概念 物理机&#xff1a; 实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理…

DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)

DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作&#xff09; 文章目录 DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作&#…

【软件设计师暴击考点】操作系统知识高频考点暴击系列【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…