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;