第六章 利用数组处理批量数据(字符串的使用和折半查找)

2024-09-01 09:20

本文主要是介绍第六章 利用数组处理批量数据(字符串的使用和折半查找),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

例子
逆序打印数组
#include<stdio.h>
int main(){int i=0;int arr[10];for(i=0;i<10;i++) {arr[i]=i; }for(i=9;i>=0;i--){printf("%d ",arr[i]);}
} 
冒泡排序
#include<stdio.h>
int main(){int i=0;int arr[10]={34,67,90,43,124,87,65,99,132,26};printf("排序前:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n");for(i=0;i<9;i++){int j=0;for(j=0;j<9-i;j++){if(arr[j]>arr[j+1]){int temp=arr[j];;arr[j]=arr[j+1];arr[j+1]=temp; }}}printf("排序后:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}
} 
有多少个单词 
#include<stdio.h>
#include<string.h> 
int main(){char str[1000]={0};gets(str);int i=0;int word=0;for(i=0;str[i]!='\0';i++){if(str[i]!=' '&&(str[i+1]==' '||str[i+1]=='\0'))word++;} printf("%d\n",word);return 0;} 
#include<stdio.h>
#include<string.h> 
int main(){char str[1000]={0};gets(str);int i=0;int word=0,num=0;for(i=0;str[i]!='\0';i++){if(str[i]==' ')word=0;else if(word==0){ //根据字符 判断   第一个单词直接进入 后续遇空格后第一个字符num++ word=1;num++;}}printf("%d\n",num);return 0;} 

函数

#include<string.h>

        puts函数 输出字符串的函数
        gets函数 输入字符串的函数
#include<stdio.h>
#include<string.h> 
int main(){char str[10]={0};gets(str);puts(str);return 0;} 
        strcat函数 字符串连接函数
#include<stdio.h>
#include<string.h> 
int main(){char str[30]="cc";char str1[10]="acccj";strcat(str,str1);printf("%s\n",str);return 0;} 
        strcpy和strncpy 字符串复制函数
#include<stdio.h>
#include<string.h> 
int main(){char str[10]="ccbbaabbc";char str1[6]="acccj";strcpy(str,str1);printf("%s\n",str);//acccj printf("%c\n",str[8]); //c char str2[10]="ccbbaabbc";char str3[6]="acccj";strncpy(str2,str3,5);//acccjabbcprintf("%s\n",str2);return 0;} 
        strcmp 字符串比较函数
#include<stdio.h>
#include<string.h> 
int main(){char str[10]="ccbbaabbc";char str1[6]="acccj";if(strcmp(str,str1)>0){printf(">\n");} else if(strcmp(str,str1)==0){printf("=\n");}else{printf("<\n");}strcpy(str,str1);if(strcmp(str,str1)>0){printf(">\n");} else if(strcmp(str,str1)==0){printf("=\n");}else{printf("<\n");}return 0;} 
        strlen  测字符串长度的函数
#include<stdio.h>
#include<string.h> 
int main(){char str[10]="ccbbaabbc\0";char str1[6]="accc";printf("%d\n",strlen(str));printf("%d\n",strlen(str1));return 0;} 
        strlwr 转换为小写的函数
        strupr 转换为大写的函数

        

#include<stdio.h>
#include<string.h> 
int main(){char str[10]="abc";printf("%s\n",strupr(str)); //ABCprintf("%s\n",str); //ABCprintf("%s\n",strlwr(str)); //abc return 0;} 
课后习题
用筛选法求100以内的素数
#include<stdio.h>
#include<math.h> 
int main(){int arr[101]={0};int i=1;for(i=1;i<=100;i++){arr[i]=i; }arr[1]=0;for(i=2;i<sqrt(100);i++){int j=0;for(j=i+1;j<=100;j++){if(arr[i]!=0&&arr[j]!=0){if(arr[j]%arr[i]==0){//能被素数整除arr[j]=0; }}} }for(i=2;i<=100;i++){if(arr[i]!=0){printf("%d ",arr[i]);}}return 0;} 
用选择法对10个整数排序
#include<stdio.h>
int main(){int arr[10]={0};int i=0;for(i=0;i<10;i++){scanf("%d",&arr[i]);printf("arr[%d]=%d\n",i,arr[i]);} printf("排序前\n"); for(i=0;i<10;i++){printf("%d ",arr[i]); }//先找到最小的数的索引 让它和当前i位置的数交换 int min=0;for(i=0;i<10;i++){min=i;//重置当前位置 int j=0;for(j=i+1;j<10;j++){if(arr[min]>arr[j]){min=j;}}int temp=arr[i];arr[i]=arr[min];arr[min]=temp;}printf("\n");printf("排序后\n");for(i=0;i<10;i++){printf("%d ",arr[i]); }return 0;} 
求对角线元素之和
#include<stdio.h>
int main(){int arr[3][3]={1,2,3,4,5,6,7,8,9};int sum=0;int sum1=0;int i=0,j=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==j){sum+=arr[i][j];}}}for(i=0;i<3;i++){for(j=0;j<3;j++){if(i+j==2)sum1+=arr[i][j];}}printf("%d\n",sum);printf("%d\n",sum1);  return 0;} 
插入元素进数组
#include<stdio.h>
int main(){int arr[11]={0,1,2,3,4,5,6,7,8,9};
//	int arr[11]={0,0,0,0,0,0,0,0,0,0};
//	int arr[11]={9,8,7,6,5,4,3,2,1,0};int i=0;int num=0;scanf("%d",&num); if(arr[0]>arr[9]){//逆序  987654321 for(i=9;i>=0;i--){if(num>arr[i]){arr[i+1]=arr[i];}else{arr[i+1]=num;break;}if(i==0){arr[i]=num;//比完也没跳出循环 } }}else{//顺序 或者 00000 for(i=9;i>=0;i--){if(num<arr[i]){arr[i+1]=arr[i];}else{arr[i+1]=num;break;}if(i==0){arr[i]=num;//比完也没跳出循环 } }} for(i=0;i<11;i++){printf("%d ",arr[i]);}return 0;} 
逆序重新存放
#include<stdio.h>
int main(){
//	int arr[10]={0,1,2,3,4,5,6,7,8,9};int arr[5]={8,6,5,4,1}; int len=sizeof(arr)/sizeof(arr[0]);int i=0;for(i=0;i<len/2;i++){int temp=arr[i];arr[i]=arr[len-1-i];arr[len-1-i]=temp;} for(i=0;i<len;i++){printf("%d ",arr[i]);}return 0;} 
打印杨辉三角
#include<stdio.h>
int main(){int arr[11][11];int i=0;int j=0;//找规律 对角线都为1 第一行都为1 for(i=1;i<=10;i++){for(j=1;j<=10;j++){if(j==1)arr[i][j]=1;else if(i==j)arr[i][j]=1;else arr[i][j]=arr[i-1][j]+arr[i-1][j-1];}}for(i=1;i<=10;i++){for(j=1;j<=i;j++){printf("%2d ",arr[i][j]);}printf("\n");} return 0;} 
魔方阵
#include<stdio.h>
int main(){int n=0;scanf("%d",&n);  int arr[10][10]={0};int i=0;int j=0;int row=0;int col=0; for(i=1;i<=n;i++){for(j=1;j<=n;j++)arr[i][j]=0;} //第一行的中间放1arr[1][n/2+1]=i;row=1;col=n/2+1;for(i=2;i<=n*n;i++){row-=1;col+=1;if(row<1)//防止row溢出 row+=n;if(col>n)//防止col溢出 col%=n;if(arr[row][col]==0){arr[row][col]=i;} else{row+=2;//row可能溢出 col-=1;//col可能溢出 if(col<1)col+=n;if(row>n)row%=n; arr[row][col]=i;}}for(i=1;i<=n;i++){for(j=1;j<=n;j++){printf("%d ",arr[i][j]); } printf("\n");}return 0;
} 
#include<stdio.h>
int main(){
int a[15][15],i,j,k,p,n;
p=1;
while(p==1){printf("1~15");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0)){p=0;}for(i=1;i<=n;i++){for(j=1;j<=n;j++){a[i][j]=0;}}//建立魔方阵
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i+=2;j-=1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i+=2;j-=1;a[i][j]=k; } 
} 
} 
for(i=1;i<=n;i++){for(j=1;j<=n;j++){printf("%d ",a[i][j]); } printf("\n");}return 0;
} 
鞍点
#include<stdio.h>
int main(){//测试数据 
//	1 2 3 4 5
//	2 4 6 8 10
//	3 6 9 12 15
//	4 8 12 16 20//	1 2 3 4 11
//	2 4 6 8 12
//	3 6 9 10 15
//	4 8 12 16 7int arr[4][5]={0};int i=0;int j=0;int n=0;printf("请输入数组数据\n");for(i=0;i<4;i++){for(j=0;j<5;j++){scanf("%d",&arr[i][j]);}}int flag=1; //为1说明有一个鞍点int ii=0; int jj=0;//标记最大的一行j在哪 for(i=0;i<4;i++){int max=arr[i][0];//标记一个最大值for(j=1;j<5;j++){if(arr[i][j]>max){ii=i;jj=j;max=arr[i][j];}}for(n=0;n<4;n++){if(arr[n][jj]<max)flag=0;}if(flag==1)break;}if(flag)printf("arr[%d][%d]=%d\n",ii,jj,arr[ii][jj]); elseprintf("没找到\n");return 0;
} 
二分查找
#include<stdio.h>
int main(){
//	int arr[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int arr[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};int left=0;int right=sizeof(arr)/sizeof(arr[0]);int mid,flag=0;int num;//需要查找的那个数scanf("%d",&num); while(left<=right){mid=(left+right)/2;if(num==arr[mid]){flag=1;//成功找到该元素 退出循环break; }else{//该数组从大到小排序 if(num>arr[mid]){right=mid-1;}else{left=mid+1;} }}if(flag==1)printf("found! 循环为%d\n",mid+1);elseprintf("No found!\n"); return 0;
} 
判断字符数量
#include<stdio.h>
#include<string.h>
int main(){char text[3][80];int i=0,j=0;int upstring=0;//大写字符int lowstring=0;//小写字符int dig=0;//数字int space=0;//空格字符int other=0;//其它字符 for(i=0;i<3;i++){printf("please input line %d:\n",i+1);gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z'){upstring++;}else if(text[i][j]>='a'&&text[i][j]<='z'){lowstring++;}else if(text[i][j]>='0'&&text[i][j]<='9'){dig++;}else if(text[i][j]==' '){space++;}else{other++;}}}printf("大写字母个数:%d\n",upstring);printf("小写字母个数:%d\n",lowstring);printf("数字个数:%d\n",dig);printf("空格个数:%d\n",space);printf("其它字符个数:%d\n",other);return 0;
} 
打印图案 
#include<stdio.h>
//* * * * *
//  * * * * *
//    * * * * *
//      * * * * *
//        * * * * *int main(){int i=0;int j=0;for(i=0;i<5;i++){for(j=0;j<5+i;j++){if(j<i){printf("  ");}else{printf("* ");}}printf("\n");}return 0;
} 
转译密文
#include<stdio.h>
#include<string.h>
//26-(a-'A')+'A'+1 ---->25-a+'A'+'A'
//R droo erhrg Xsrmz mvcg dvvp.int main(){char text[80],trans[80];gets(text);int i=0;for(i=0;i<80;i++){if((text[i]>='a')&&(text[i]<='z')){trans[i]=(char)(25-text[i]+'a'+'a');}else if((text[i]>='A')&&(text[i]<='Z')){trans[i]=(char)(25-text[i]+'A'+'A');}else{trans[i]=text[i];}}printf("%s\n",trans);return 0;
} 
模拟strcat
#include<stdio.h>int main(){char s1[80],s2[40];int i=0,j=0;printf("input string1:\n");scanf("%s",s1);printf("input string2:\n");scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0'){s1[i++]=s2[j++];}s1[i]='\0';printf("new String is -> %s\n",s1);return 0;}
模拟strcmp
#include<stdio.h>int main(){char s1[40],s2[40];int num=0;gets(s1);gets(s2);int i=0;while(s1[i]==s2[i]&&s1[i]!='\0')i++;if(s1[i]=='\0'&&s2[i]=='\0')	num=0;elsenum=s1[i]-s2[i];printf("result:%d\n",num);return 0;}
模拟strcpy
#include<stdio.h>
#include<string.h> int main(){char s1[40]="sd",s2[40];printf("原来的s1->:%s\n",s1);scanf("%s",s2);int i=0;//=strlen是为了把\0也拷过去 for(i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf("%s\n",s1);return 0;}

这篇关于第六章 利用数组处理批量数据(字符串的使用和折半查找)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126538

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转