冒泡排序,判断回文,以及12-24小时制

6-7 定义函数,完成冒泡排序算法。

本题定义一个冒泡排序算法的函数,调用函数后实现数组的升序排序,其数组长度为任意长度。

函数接口定义:

在这里描述函数接口。例如: void sort(int arr[],int n);

在这里解释接口参数。例如:其中 arr 是用户传入的参数 ,n 表示数组的长度。 函数实现对数组arr的排序。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如: 

在这里给出函数被调用进行测试的例子。例如:
#include 

void sort(int arr[],int n);

int main(void) {
    int n;
    scanf("%d",&n);
    int arr[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d",&arr[i]);
    }
    //排序
    bubble_sort(arr,n);
    //输出
    for (int i = 0; i < n; ++i) {
        printf("%d ",arr[i]);
    }

}
/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

5 1 3 6 2 9

输出样例:

在这里给出相应的输出。例如:

1 2 3 6 9 

其实冒泡排序跟公式一样,大家只要理解他的思路就好啦 

#include
void sort(int arr[],int n)
{
    int i,t=0,j,change=1;
    for(i=0;iarr[j+1])
          {
            t=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=t;
            change=1;
          }
        }
    }
}

 

6-30 判断回文

如果一串字符从左至右读和从右至左读相同,那么这串字符就是回文(Palindrome)。例如,ABCBA是回文,而ABCD则不是。本题要求编写一个判断字符串是否为回文的函数,并且通过函数参数获取字符串的中间字符(如果中间是两个字符,则获取靠左的那一个,例如字符串是ABCDEF,则中间字符是C)。题目保证输入的字符串长度在1至2000之间且不含空格、换行等分隔符。

函数接口定义:

其中 str 和 pch 都是用户传入的参数。 str 是字符串的首地址; pch 是传入的要存放字符串中间字符的变量的地址。如果字符串是回文,函数须返1,否则返回0。

裁判测试程序样例:

/* 测试程序仅为示例,实际的测试程序可能不同 */
#include 
#include 
#define MAXLENGTH 100
int isPalindrome(const char* str, char* pch);
int main(){
    char str[MAXLENGTH],mid;
    scanf("%s",str);
    if(isPalindrome(str, &mid))
        printf("是回文!中间字符是%c\n",mid);
    else
        printf("不是回文!中间字符是%c\n",mid);
    return 0;
}

/* 你编写的函数代码将被嵌在这里 */

输入样例:

ABCDACBC

输出样例:

不是回文!中间字符是D

 

#include
#include
#define MAXLEGTH 100
int isPalindrome(const char* str, char* pch)
{
    int i,j;
    for(i=0,j=strlen(str)-1;i=j)   //如果没有遇见break语句那么i>=j
    {
        if(i==j)  //说明是原字符串长度为奇数
            *pch=*(str+i);
        else
            *pch=*(str+j);
        return 1;
    }
    else
    {
        if(strlen(str)%2==0)
            *pch=*(str+strlen(str)/2-1);
        else
            *pch=*(str+strlen(str)/2);
        return 0;
    }
}

 

7-7 12-24小时制

编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。

输入格式:

输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。

提示:scanf的格式字符串中加入:,让scanf来处理这个冒号。

输出格式:

在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM

输入样例:

21:11

输出样例:

9:11 PM

相信很多人第一眼看见这个题就已经有思路了,这个题目就是考虑的条件有点多,大家细心点就好。 

#include
int main()
{
    int a,b,c=0;
    char m;
    scanf("%d",&a);
    scanf("%c",&m);
    scanf("%d",&b);
    if(a>=12)
    {
        if(a==12)
        {printf("%d",a);}
        else
        {
        a=a-12;
        printf("%d",a);
        }
        c=1;
    }
    else
    {
        printf("%d",a);
        c=0;
    }
    if(b/10==0)
    {
        printf(":");
        printf("%1d ",b);
    }
     else
     {
         printf(":");
         printf("%d ",b);
     }
     if(c)
     {printf("PM");}
     else
     {printf("AM");}
}

 欢迎大家积极留言呀!

你可能感兴趣的:(算法,数据结构,蓝桥杯,c#)