本题要求实现函数,可以返回一个给定月份的英文名称。
函数接口定义:
char *getmonth( int n );
函数getmonth
应返回存储了n
对应的月份英文名称的字符串头指针。如果传入的参数n
不是一个代表月份的数字,则返回空指针NULL
。
裁判测试程序样例:
#include
char *getmonth( int n );
int main()
{
int n;
char *s;
scanf("%d", &n);
s = getmonth(n);
if ( s==NULL ) printf("wrong input!\n");
else printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
5
输出样例1:
May
输入样例2:
15
输出样例2:
wrong input!
char *getmonth(int n) {
static char a[12][20] = {"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"};
if (n == 1) return a[0];
else if (n == 2) return a[1];
else if (n == 3) return a[2];
else if (n == 4) return a[3];
else if (n == 5) return a[4];
else if (n == 6) return a[5];
else if (n == 7) return a[6];
else if (n == 8) return a[7];
else if (n == 9) return a[8];
else if (n == 10) return a[9];
else if (n == 11) return a[10];
else if (n == 12) return a[11];
else return NULL;
}
本题要求实现函数,可以根据下表查找到星期,返回对应的序号。
序号 | 星期 |
---|---|
0 | Sunday |
1 | Monday |
2 | Tuesday |
3 | Wednesday |
4 | Thursday |
5 | Friday |
6 | Saturday |
函数接口定义:
int getindex( char *s );
函数getindex
应返回字符串s
序号。如果传入的参数s
不是一个代表星期的字符串,则返回-1。
裁判测试程序样例:
#include
#include
#define MAXS 80
int getindex( char *s );
int main()
{
int n;
char s[MAXS];
scanf("%s", s);
n = getindex(s);
if ( n==-1 ) printf("wrong input!\n");
else printf("%d\n", n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
Tuesday
输出样例1:
2
输入样例2:
today
输出样例2:
wrong input!
int getindex(char *s) {
char *English[MAXS] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int i;
for (i = 0; i < 7; i++) {
if (strcmp(s, English[i]) == 0) {
return i;
}
}
return -1;
}
本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。
函数接口定义:
int max_len( char *s[], int n );
其中n
个字符串存储在s[]
中,函数max_len
应返回其中最长字符串的长度。
裁判测试程序样例:
#include
#include
#include
#define MAXN 10
#define MAXS 20
int max_len( char *s[], int n );
int main()
{
int i, n;
char *string[MAXN] = {NULL};
scanf("%d", &n);
for(i = 0; i < n; i++) {
string[i] = (char *)malloc(sizeof(char)*MAXS);
scanf("%s", string[i]);
}
printf("%d\n", max_len(string, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
4
blue
yellow
red
green
输出样例:
6
int max_len(char *s[], int n) {
int a[MAXN] = {0};
int i;
for (i = 0; i < n; i++) {
a[i] = strlen(s[i]);
}
int max = 0;
for (i = 0; i < n; i++) {
if (a[i] >= max) max = a[i];
}
return max;
}
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。
函数接口定义:
char *match( char *s, char ch1, char ch2 );
函数match
应打印s
中从ch1
到ch2
之间的所有字符,并且返回ch1
的地址。
裁判测试程序样例:
#include
#define MAXS 10
char *match( char *s, char ch1, char ch2 );
int main()
{
char str[MAXS], ch_start, ch_end, *p;
scanf("%s\n", str);
scanf("%c %c", &ch_start, &ch_end);
p = match(str, ch_start, ch_end);
printf("%s\n", p);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
program
r g
输出样例1:
rog
rogram
输入样例2:
program
z o
输出样例2:
(空行)
(空行)
输入样例3:
program
g z
输出样例3:
gram
gram
char *match(char *s, char ch1, char ch2) {
int index = -1;
for (int i = 0; i < strlen(s); i++) {
if (index == -1 && s[i] == ch1)
index = i;
if (index != -1)printf("%c", s[i]);
if (index != -1 && s[i] == ch2)break;
}
printf("\n");
if (index == -1)return s + strlen(s);
return s + index;
}
本题要求实现一个字符串查找的简单函数。
函数接口定义:
char *search( char *s, char *t );
函数search
在字符串s
中查找子串t
,返回子串t
在s
中的首地址。若未找到,则返回NULL
。
裁判测试程序样例:
#include
#define MAXS 30
char *search(char *s, char *t);
void ReadString( char s[] ); /* 裁判提供,细节不表 */
int main()
{
char s[MAXS], t[MAXS], *pos;
ReadString(s);
ReadString(t);
pos = search(s, t);
if ( pos != NULL )
printf("%d\n", pos - s);
else
printf("-1\n");
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:
The C Programming Language
ram
输出样例1:
10
输入样例2:
The C Programming Language
bored
输出样例2:
-1
char *search(char *s, char *t) {
int i = 0, j = 0, flag = 0;
char *k;
for (j = 0; s[j] != '\0'; j++) {
if (t[0] == s[j]) {
k = &s[j];
for (i = 0; t[i] != '\0'; i++, j++) {
flag = 0;
if (t[i] == s[j])
flag = 1;
else break;
}
}
if (flag == 1) break;
}
if (flag == 1) return k;
else return NULL;
}