获取字符串的前n个字符(程序填空)

描述

获取字符串的前n个字符(默认的函数参数)

#include <iostream>
#include <cstring>

//获取字符串的前n个字符,n默认值为1
char * left(______________________________) ;

int main() {
 char s[]="fdsfdsfds234234543543scfxzDSGFD*&ASGFwR12%$^";
 std::cout<<left(s)<<':'<<left(s,10)<<':'<<left(s,100)<<std::endl;
    return 0;
}

char *left(const char *s,int n) {
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
 ________________________________________
}

输入

输出

字符串"fdsfdsfds234234543543scfxzDSGFD*&ASGFwR12%$^"的前1、10、100个字符。

输入样例 1 

目录

描述

输入

输出

输入样例 1 

输出样例 1


输出样例 1

f:fdsfdsfds2:fdsfdsfds234234543543scfxzDSGFD*&ASGFwR12%$^
#include <iostream>
#include <cstring>

//获取字符串的前n个字符,n默认值为1
char* left(const char* s, int n);
char* left(char* s);

int main() {
    char s[] = "fdsfdsfds234234543543scfxzDSGFD*&ASGFwR12%$^";
    std::cout << left(s) << ':' << left(s, 10) << ':' << left(s, 100) << std::endl;
    return 0;
}
第一种:
char* left(const char* s, int n) {
   
    char* p = new char[n+1];
    int i = 0;
    while (s[i] != '\0' && i < n) {
        p[i] = s[i];
        i++;

    }
    p[i] = '\0';

    return p;

}

比较浪费存储空间。
第二种:

char * left2(const char *str,int n)
{
	if(n<0)
		n=0;
	int len=strlen(str);
	n=(n<len)?n:len;
	char *p =new char [n+1];
	int i;
	for(i=0;i<n&&str[i];i++)
		p[i]=str[i];
	while(i<=n)
		p[i++]='\0';
	return p;
}
这种方法确保new分配的空间不会多于存储字符串所需要的空间。但是该方法需要调用strlen(),因此程序更长,运行速度将降低,同时还必须包含头文件cstring,或string.h。
第三种:

char * left3(const char *str,int n)
{
	int m=0;
	while(m<n&&str[m])
		m++;
	char *p =new char [m+1];
	int i;
	for(i=0;i<m&&str[i];i++)
		p[i]=str[i];
	while(i<=m)
		p[i++]='\0';
	return p;
}

char* left(char* s) {
    return left(s, 1);
}

错误示范: 

char* left(const char* s, int n) {
    char res[100];

    char* p = res;
    int i = 0;
    while (s[i] != '\0' && i < n) {
        res[i] = s[i];
        i++;

    }
    res[i] = '\0';

    return p;

}

错误原因欢迎各抒己见 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是100个 Python 程序开发基础真题,包括选择题和填空题,附有答案。 选择题: 1. 在 Python 中,如何获取字符串的长度? A. `len(str)` B. `str.length()` C. `str.size()` D. `str.len()` 答案:A 2. 在 Python 中,如何将一个字符串转换为整数? A. `int(str)` B. `str.int()` C. `str.toInt()` D. `str.convertToInt()` 答案:A 3. 在 Python 中,如何获取列表的长度? A. `len(list)` B. `list.length()` C. `list.size()` D. `list.len()` 答案:A 4. 在 Python 中,如何将一个字符串转换为浮点数? A. `float(str)` B. `str.convertToFloat()` C. `str.toFloat()` D. `str.float()` 答案:A 5. 在 Python 中,如何将一个列表反转? A. `list.reverse()` B. `reverse(list)` C. `list.flip()` D. `flip(list)` 答案:A 6. 在 Python 中,如何将一个字符串转换为大写? A. `str.upper()` B. `upper(str)` C. `str.toUpper()` D. `toUpper(str)` 答案:A 7. 在 Python 中,如何将一个字符串转换为小写? A. `str.lower()` B. `lower(str)` C. `str.toLower()` D. `toLower(str)` 答案:A 8. 在 Python 中,如何将一个字符串按照指定字符分割成列表? A. `str.split(char)` B. `split(str, char)` C. `str.divide(char)` D. `divide(str, char)` 答案:A 9. 在 Python 中,如何将一个列表转换为字符串? A. `''.join(list)` B. `list.join('')` C. `list.toString()` D. `toString(list)` 答案:A 10. 在 Python 中,如何从列表中删除一个元素? A. `list.remove(item)` B. `remove(list, item)` C. `list.delete(item)` D. `delete(list, item)` 答案:A 填空题: 1. 编写一个函数,输入一个字符串,返回字符串中的第一个单词。例如,输入 "Hello World",返回 "Hello"。 ```python def first_word(s): return s.split()[0] ``` 2. 编写一个函数,输入一个整数列表,返回列表中的最大值。例如,输入 [1, 2, 3, 4, 5],返回 5。 ```python def max_value(lst): return max(lst) ``` 3. 编写一个函数,输入一个字符串,返回字符串的反转。例如,输入 "Hello",返回 "olleH"。 ```python def reverse_string(s): return s[::-1] ``` 4. 编写一个函数,输入一个整数列表和一个整数 n,返回列表中所有的和为 n 的元素对。例如,输入 [1, 2, 3, 4, 5] 和 7,返回 [(2, 5), (3, 4)]。 ```python def find_pairs(lst, n): pairs = [] for i in range(len(lst)): for j in range(i+1, len(lst)): if lst[i] + lst[j] == n: pairs.append((lst[i], lst[j])) return pairs ``` 5. 编写一个函数,输入一个字符串和一个字符,返回字符串中该字符出现的次数。例如,输入 "Hello World" 和 "o",返回 2。 ```python def count_char(s, c): return s.count(c) ``` 6. 编写一个函数,输入一个整数列表,返回列表中的所有偶数。例如,输入 [1, 2, 3, 4, 5],返回 [2, 4]。 ```python def even_numbers(lst): return [x for x in lst if x % 2 == 0] ``` 7. 编写一个函数,输入一个字符串和一个子串,返回子串在字符串中出现的次数。例如,输入 "Hello World" 和 "l",返回 3。 ```python def count_substring(s, sub): return s.count(sub) ``` 8. 编写一个函数,输入一个整数列表和一个整数 n,返回列表中所有的元素对,使得两个元素之和小于 n。例如,输入 [1, 2, 3, 4, 5] 和 6,返回 [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]。 ```python def find_pairs(lst, n): pairs = [] for i in range(len(lst)): for j in range(i+1, len(lst)): if lst[i] + lst[j] < n: pairs.append((lst[i], lst[j])) return pairs ``` 9. 编写一个函数,输入一个字符串,返回字符串中的所有数字。例如,输入 "Hello 123 World 456",返回 [123, 456]。 ```python import re def extract_numbers(s): return [int(n) for n in re.findall(r'\d+', s)] ``` 10. 编写一个函数,输入一个整数列表,返回列表中的所有奇数。例如,输入 [1, 2, 3, 4, 5],返回 [1, 3, 5]。 ```python def odd_numbers(lst): return [x for x in lst if x % 2 == 1] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值