在字符串中查找字符,并输出其最大下标

合集下载

JAVA编程习题及答案_完全版

JAVA编程习题及答案_完全版

1.test10001显示短句//程序填空.//在屏幕上显示一个短句“Programming in Java is fun!”import java.io.*;public class Test10001{public static void main(String args[]){/*------------------------*/System.out.println("Programming in Java is fun!");}}2.test10002显示网格/*程序填空。

在屏幕上显示如下网格。

+---+---+| | || | |+---+---+*/import java.io.*;public class Test10002{public static void main(String args[]){/*------------------------*/System.out.println("+---+---+");System.out.println("| | |");System.out.println("| | |");System.out.println("+---+---+");}}3.test10095显示hello world!import java.io.*;public class Test10095{public static void main(String args[]){/*---------------------------*/System.out.println("Hello world!");}}4.test10097求两个数的和/*输入n表示做n次下面的操作:输入两个正整数,输出它们的和.例:输入:2 //表示n=2,做两次操作10 1120 30输出:sum=21sum=50*/import java.util.Scanner;public class Test10097{public static void main(String args[]){int n,a,b,i,sum;Scanner in=new Scanner(System.in);n=in.nextInt(); //输入nfor(i=1; i<=n; i++){/*------------*/a=in.nextInt();b=in.nextInt();sum=a+b;System.out.println("sum="+sum);}}}5.test20001求两个数的和与差/*程序填空,不要改变与输入输出有关的语句。

C语言练习3(数组)=参考答案

C语言练习3(数组)=参考答案

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]B) a[1]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).A) a[3]=93;B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

lee code常见面试题

lee code常见面试题

lee code常见面试题
以下是Lee Code常见的面试题:
1. 字符串翻转:给定一个字符串,将字符串中的字符逆序输出。

2. 二分查找:给定一个有序数组和一个目标值,在数组中查找目标值,并返回其下标。

如果目标值不存在于数组中,则返回 -1。

3. 链表反转:给定一个链表,将链表中的节点顺序反转。

4. 二叉树镜像:给定一个二叉树,将二叉树进行镜像翻转。

5. 数组去重:给定一个数组,将数组中的重复元素去除,并返回新的数组。

6. 判断链表是否有环:给定一个链表,判断链表中是否存在环。

7. 二叉树的前序遍历和中序遍历:给定一个二叉树,分别进行前序遍历和中序遍历。

8. 判断二叉树是否为完全二叉树:给定一个二叉树,判断该二叉树是否为完全二叉树。

9. 字符串分割:给定一个字符串和一个分隔符,将字符串分割成若干个子串,并返回这些子串组成的数组。

10. 二进制中1的个数:给定一个整数,统计该整数二进制表示中1的个数。

以上题目仅供参考,Lee Code的面试题非常丰富,具体题目可能因面试官
和公司而异。

re.search函数用法

re.search函数用法

re.search函数用法Python语言中的re模块提供了与正则表达式相关的函数,其中re.search()函数是最常用的函数之一。

该函数的主要作用是在一个字符串中查找匹配指定正则表达式的字符串,并返回一个匹配对象。

使用该函数需要注意一些细节,本文将详细介绍re.search()函数的用法。

一、re.search()函数的语法格式re.search(pattern, string, flags=0) 该函数接受三个参数,其中pattern是指定的正则表达式字符串,string是需要搜索的字符串,flags是用于控制正则表达式匹配的一些标志位。

其中,pattern和string是必选参数,如果不指定flags,则默认为0。

二、re.search()函数的使用示例下面是一个简单的示例,演示了如何使用re.search()函数查找一个字符串中是否包含指定的子字符串:import re# 定义需要查找的字符串 string = "This is a test string."# 查找是否包含指定的子字符串 match =re.search("test", string)# 判断查找结果是否成功 if match:print("Found a match:", match.group()) else: print("No match found.")运行以上代码,输出结果如下:Found a match: test从结果可以看出,re.search()函数成功找到了指定的子字符串,并返回了一个Match对象。

如果没有找到,则会输出“No match found.”。

下面是对以上代码的解释:1. 首先,导入了re模块;2. 然后,定义了需要查找的字符串string;3. 接着,调用re.search()函数,将需要查找的正则表达式指定为"test";4. 查找结果保存在一个Match对象match中;5. 最后,根据查找结果输出相应的提示信息。

C语言编程题练习

C语言编程题练习

1.编程求出 1000到 3000之间能被 7、 11、 17同时整除的整数的平均值 ,并输出(结果保留两位小数) 。

2.用选择结构的嵌套实现:判断一个数是否同时是5和 7 的倍数3.在给定的含n (不超过100)个整数的数组中查找某个数m若找到则打印在数组中第几个元素,若不在该数组中则打印“无此数” 。

4.编程判断输入的正整数是否既是5又是7的整倍数。

若是,输出 yes,否则输出no。

5.歌唱比赛有 10个评委,分别给出 1~100分,除去一个最高分,再除去一个最低分,剩余 8个人的给分的平均值作为选手的最终得分。

请编写该程序。

6.输入一个正整数n(1<n<=10),再输入n个整数,输出最大值及其下标(设最大值唯一,下标从0开始)。

要求使用数组实现。

7.编程求1+ (1+2) +…+ (1+2+…+n),n的值由键盘输入。

要求使用for语句实现8.输入一个字符,判断它是否是小写字母,是小写字母,则将它转换成大写字母,如果不是,则不转换,然后输出所得到字符。

9.输入 1 个整数,判断该数是奇数还是偶数10.从键盘输入 10 个整数,统计其中正数、负数和零的个数,并在屏幕上依次输出。

要求必须使用 while 语句。

11.用数组实现以下功能:输入 5个学生成绩,而后求出这些成绩的平均值并显示出来。

12.从键盘接收一个字符,如果是字母,输出其对应的 ASCII 码,如果是数字,按原样输入,否则给出提示信息“输入错误!”。

13.在给定的含n (不超过100)个整数的数组中查找某个数m若找到则打印在数组中第几个元素,若不在该数组中则打印“无此数” 。

14.编写一个程序,能够实现当从键盘输入 x 和 y 时,求出 xy 的结果。

15.定义一个菜单,用 switch 结构显示选择的菜单项16.从键盘输入正整数 n,输出1+1/3+1/5+1/7+…前n项的和.(输入的n<=10)17.从键盘接收三个整数,分别存在变量 x,y,z 中。

获取字符串中某个特定位置的字符串的方法

获取字符串中某个特定位置的字符串的方法

获取字符串中某个特定位置的字符串的方法获取字符串中某个特定位置的字符串可以采用不同的方法,其中包括使用字符索引、字符串切片、正则表达式等等。

下面将详细介绍这些方法。

使用字符索引在Python中,字符串可以被视为一个字符数组,因此可以通过索引来获取其中的字符或子字符串。

字符串的第一个字符索引为0,最后一个字符索引为字符串长度减1。

要获取字符串中特定位置的子字符串,只需要通过相应的索引进行切片即可。

下面是一个示例代码,用于获取字符串中第五个位置(也就是第六个字符)的子字符串:```str = "hello, world!"substring = str[5]print(substring)```该代码将输出:`,`,因为第五个位置上是该字符串中的逗号。

字符串切片是指从一个字符串中提取子字符串的过程。

在Python中,可以使用切片运算符“:”来获取一个特定位置之间的子字符串。

通常切片运算符的形式如下:```str[start:end:step]```start表示开始位置索引,end表示结束位置索引,step表示步长。

如果start和end 都未指定,那么切片包含整个字符串;如果step未指定,则默认为1。

该代码将输出:`o, w`。

使用正则表达式正则表达式是一种用于匹配字符模式的方法,它可以在字符串中查找特定位置的子字符串。

Python内置的re模块提供了对正则表达式的支持。

```import restr = "There are 2 apples and 3 oranges."pattern = r'\d+'该代码将输出:`2`,因为它找到了字符串中的第一个数字。

在该示例中,`r'\d+'`表示匹配一个或多个数字字符。

需要注意的是,在使用正则表达式时,需要了解相应的语法,并按照语法规则编写正确的模式。

否则,可能会导致找不到匹配项或匹配项不正确。

c语言中在字符串中查找某个字符最快算法

在C语言中,在字符串中查找某个字符的最快算法是一个常见的问题。

在本文中,我们将讨论一些常用的算法和优化方法,以及它们在查找字符串中某个字符时的效率。

1. 简单线性查找算法最简单的方法是使用线性查找算法,遍历整个字符串,逐个比较字符,直到找到目标字符或到达字符串末尾。

这种方法的时间复杂度为O(n),其中n为字符串的长度。

2. 使用标准库函数C语言提供了一些标准库函数来处理字符串操作,比如strchr()函数。

这些函数由经验丰富的程序员编写,并经过了优化,通常比手动编写的算法更快。

strchr()函数可以在字符串中查找指定字符的第一次出现的位置,其时间复杂度为O(n)。

3. 优化的线性查找算法在实际应用中,可以对线性查找算法进行一些优化,以提高效率。

使用循环展开、局部性优化等技术可以减少循环迭代和内存访问次数,从而加快查找速度。

可以使用一些技巧,比如将目标字符作为一个整数进行比较,以减少字符比较的时间。

4. 二分查找算法如果字符串是有序的,可以使用二分查找算法来加快查找的速度。

这种算法的时间复杂度为O(log n),其中n为字符串的长度。

然而,要使用二分查找算法,需要先对字符串进行排序,这会带来额外的时间和空间开销。

5. 哈希表哈希表是一种常见的数据结构,可以在O(1)的时间复杂度内进行查找操作。

可以将字符串中的每个字符映射到一个哈希表中,然后直接查找目标字符是否在哈希表中。

然而,哈希表需要额外的空间来存储映射关系,并且在处理冲突时需要解决哈希碰撞的问题。

6. Boyer-Moore算法Boyer-Moore算法是一种高效的字符串查找算法,它利用了字符比较的位置信息和坏字符规则,可以在最坏情况下达到O(n/m)的时间复杂度,其中n为字符串的长度,m为目标字符串的长度。

这使得Boyer-Moore算法成为一种常用的字符串查找算法。

7. 总结在C语言中,在字符串中查找某个字符的最快算法取决于字符串的特性、目标字符的特性以及对时间和空间的需求。

从键盘读入5个字符,找出ascii值最大的字符,并将该字符输出10次用c语言代码

以下是一个简单的C语言程序,该程序从键盘读取5个字符,找出ASCII值最大的字符,然后打印该字符10次。

```c
#include <stdio.h>
int main() {
char chars[5];
int i, max_ascii = -1;
char max_char;
printf("请输入5个字符:\n");
for(i = 0; i < 5; i++) {
scanf("%c", &chars[i]);
if(chars[i] > max_ascii) {
max_ascii = chars[i];
max_char = chars[i];
}
}
printf("最大的ASCII字符是:%c\n", max_char);
for(i = 0; i < 10; i++) {
printf("%c\n", max_char);
}
return 0;
}
```
在此代码中,我们首先声明一个字符数组来存储用户输入的字符。

我们还声明了两个变量`max_ascii`和`max_char`来跟踪我们找到的最大ASCII值和对应的字符。

然后,我们使用一个for循环来读取用户输入的5个字符,同时检查每个字符的ASCII值是否大于`max_ascii`。

如果是,我们更新`max_ascii`和`max_char`。

最后,我们打印出找到的最大ASCII字符,并使用另一个for循环打印该字符10次。

C语言上机考题分析3

第三类题主要是基本算法和字符串操作。

例如求最大(小)值、排序、数字拆分、字符串操作(连接、长度、合并、回文、插入、删除、反序、排序、单词分割等)。

3-1. 编程,任意输入6个整数,按从小到大的顺序输出。

结果:输入: 9、7、8、6、7、5输出: 5、6、7、7、8、9。

分析:用选择法排序。

3-2. 编程,任意输入10个人的成绩,按从大到小的顺序排列。

运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。

结果:输入: 4、7、3、6、1、5,12,0,23,-1输入: 4输出: The 4th is 6分析:用选择法排序。

第n名是a[n-1]。

3-3. 编程,输入10个人的序号和成绩,对成绩从小到大排序,输出排序后的序号和成绩。

结果:输入: 1,10 2,9 3,8 4,7 5,6 6,7 7,8 8,9 9,12 10,0输出:10: 05: 64: 76: 73: 87: 82: 98: 91: 109: 12。

分析:用选择法排序。

a[j][0]--序号,a[j][1]--成绩。

按a[j][1]排序,注意交换时a[j][0]、a[j][1]同步交换。

3-4. 编程,输入10个人的序号和成绩,对成绩从大到小进行排序,输出排序后的序号和成绩。

结果:输入: 1,10 2,9 3,8 4,7 5,6 6,7 7,8 8,9 9,12 10,0输出:9: 12。

1: 108: 92: 97: 83: 86: 74: 75: 610: 0分析:用选择法排序。

a[j][0]--序号,a[j][1]--成绩。

3-5. 编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,并输出它们原来输入时的序号。

结果:输入:1,15 2.11 3,0 4,7 5,1 6,5 7,7 8,40 9,2 10,23输出:8: 40 10: 233: 0 5: 1分析:用选择法排序。

a[j][0]--序号,a[j][1]--成绩。

C语言中查找字符在字符串中出现的位置的方法

C语⾔中查找字符在字符串中出现的位置的⽅法C语⾔strchr()函数:查找某字符在字符串中⾸次出现的位置头⽂件:#include <string.h>strchr() ⽤来查找某字符在字符串中⾸次出现的位置,其原型为:char * strchr (const char *str, int c);【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第⼀次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳⼊检索范围,所以 str 的组后⼀个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。

设字符在字符串中⾸次出现的位置为 i,那么返回的地址可以理解为 str + i。

提⽰:如果希望查找某字符在字符串中最后⼀次出现的位置,可以使⽤ strrchr() 函数。

【实例】查找字符5⾸次出现的位置。

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){char *s = "0123456789012345678901234567890";char *p;p = strchr(s, '5');printf("%ld\n", s);printf("%ld\n", p);system("pause");return 0;}输出结果:1201646412016469C语⾔strrchr()函数:查找某字符在字符串中最后⼀次出现的位置头⽂件:#include <string.h>strrchr() 函数⽤于查找某字符在字符串中最后⼀次出现的位置,其原型为:char * strrchr(const char *str, int c);【参数】str 为要查找的字符串,c 为要查找的字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档