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

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

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

函数接口定义:

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

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

裁判测试程序样例:

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

cs 复制代码
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>

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 

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

cs 复制代码
#include<stdio.h>
void sort(int arr[],int n)
{
    int i,t=0,j,change=1;
    for(i=0;i<n&&change==1;i++)
    {
        change=0;      //这个可以减少循环次数
        for(j=0;j<n-i-1;j++) //这个判断条件很关键
        {
          if(arr[j]>arr[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之间且不含空格、换行等分隔符。

函数接口定义:

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

裁判测试程序样例:

cs 复制代码
/* 测试程序仅为示例,实际的测试程序可能不同 */
#include <stdio.h>
#include <string.h>
#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
cs 复制代码
#include<stdio.h>
#include<string.h>
#define MAXLEGTH 100
int isPalindrome(const char* str, char* pch)
{
    int i,j;
    for(i=0,j=strlen(str)-1;i<j;i++,j--)
    {
        if(str[i]!=str[j])
            break;
    }
    if(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

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

cs 复制代码
#include<stdio.h>
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");}
}

欢迎大家积极留言呀!

相关推荐
ChoSeitaku31 分钟前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
Fuxiao___40 分钟前
不使用递归的决策树生成算法
算法
我爱工作&工作love我1 小时前
1435:【例题3】曲线 一本通 代替三分
c++·算法
白-胖-子1 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级
workflower1 小时前
数据结构练习题和答案
数据结构·算法·链表·线性回归
好睡凯1 小时前
c++写一个死锁并且自己解锁
开发语言·c++·算法
Sunyanhui12 小时前
力扣 二叉树的直径-543
算法·leetcode·职场和发展
一个不喜欢and不会代码的码农2 小时前
力扣105:从先序和中序序列构造二叉树
数据结构·算法·leetcode
前端郭德纲2 小时前
浏览器是加载ES6模块的?
javascript·算法
SoraLuna2 小时前
「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
算法·macos·cangjie