6-2查找星期:本题要求实现函数,可以根据下表查找到星期,返回对应的序号
序号 | 星期 |
---|---|
0 | Sunday |
1 | Monday |
2 | Tuesday |
3 | Wednesday |
4 | Thursday |
5 | Friday |
6 | Saturday |
函数接口定义:
int getindex( char *s );
函数getindex
应返回字符串s
序号。如果传入的参数s
不是一个代表星期的字符串,则返回-1。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#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!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题代码
int getindex(char *s) {
char*p[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int i;
for(i=0;i<7;i++){
if(strcmp(s,p[i])==0)
return i;
}
return -1;
}
解题思路
先建立一个数组指针,存放周日到周六,然后再用”strcmp“函数将字符一一进行比大小,若完全相同,则结果为0.
6-3 给数组排序,使数组从小到大排列:应用选择排序,使数组中的元素从小到大排列
函数接口定义:
void sort(int *p, int n);
在这里解释接口参数。例如:其中 p
和 n
都是用户传入的参数。 n
是数组长度; p
指向数组元素首地址。
裁判测试程序样例:
#include<stdio.h>
void sort(int* p, int n);
//n 是数组长度; p 指向数组元素首地址
int main()
{
int a[5];
int* p = a;
for (int i = 0; i < 5; i++)
{
scanf("%d", &a[i]);
}
sort(a, 5);
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
}
/*在这里开始写你的代码*/
输入样例:
在这里给出一组输入。例如:
4 2 1 6 8
输出样例:
在这里给出相应的输出。例如:
1 2 4 6 8
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题代码
void sort(int* p, int n) {
int temp, i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (p[j] > p[j + 1]) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
解题思路
这道题我用的是冒泡排序法,但其实这个效率不是很好,时间复杂度是O(n2),更快的方法也可以使用快速排序,这里是一个快速排序的b站视频,作为拓展可以了解一下
【全网最清晰快速排序,看完快排思想和代码全部通透,不通透你打我!】https://www.bilibili.com/video/BV1vP411g7J3?vd_source=b9de36505dd0073d0edd813c003c2c1d