C语言指针和字符串练习

Problem A:【函数的指针参数】数组排序

题目描述
使用自定义函数void sort(int *a, int n); 对数组a中的整数进行排序(升序)
函数的参数:a为数组(指针),n为数组中元素的个数。
裁判程序如下:
在这里插入图片描述

输入

一组整数(不超过10个),每个整数的绝对值不超过1000,读取到输入结束

输出

按升序输出,每行一个

样例输入

3 1 4 1 5 9

样例输出

1
1
3
4
5
9

答案

void sort(int *a,int n){
   
	int temp;
    for(int i=1;i<n;i++){
   
	    for(int j=0;j<n-i;j++){
   
		    if(a[j]>a[j+1]){
   
			    temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}

Problem B:【函数的指针参数】自定义字符串长度函数 my_strlen

题目描述
编写自定义函数int my_strlen(char* s); 检测字符串s的长度
特别提示:不允许使用“string.h”中的strlen函数。
裁判程序如下:
在这里插入图片描述

输入

一行字符串(长度不超过100)。

输出

字符串的长度。

样例输入

abc
how are you?

样例输出

3
12

答案

int my_strlen(char*s){
   
    int count = 0;
    while (*s != '\0'){
   
        count++;
        s++;
    }
    return count;
}

Problem C:【字符串函数】ispalindrome

题目描述
编写自定义函数int ispalindrome(char* s); 检测字符串s是否为回文(所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的)。
如果s为回文,函数返回值为1,否则返回值为0
输入abc,输出no
输入rotator,输出yes
裁判测试程序如下:
在这里插入图片描述

输入

一行字符串(长度不超过100)

输出

如果输入字符串为回文,则输出yes
否则输出no

样例输入

rotator

样例输出

yes

答案

int ispalindrome(char*s){
   
    int i,j;
    for(i=0,j=(int)strlen(s)-1;i<(int)strlen(s);i++,j--){
   
	    if(*(s+i)!=*(s+j))
	        return 0;
	}
	return 1;
}

Problem D:【函数的指针参数】编写函数,实现字符串的部分复制

题目描述
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
函数接口定义:
void strmcpy( char *t, int m, char *s );
函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。
裁判测试程序样例:
在这里插入图片描述

输入

输入m和字符串t,字符串长度不超过20个字符

输出

输出复制后的字符串

样例输入

7
happy new year

样例输出

new year

答案

void strmcpy( char *t, int m, char *s ){
      
    int i,j;
    for(i=0,j=0;i<MAXN;
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值