冒泡排序,判断回文,以及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之间且不含空格、换行等分隔符。

函数接口定义:

其中 str 和 pch 都是用户传入的参数。 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");}
}

欢迎大家积极留言呀!

相关推荐
驭渊的小故事7 分钟前
NC229023 题解:二分答案求解“最大化最小值“问题
java·算法
朝朝辞暮i20 分钟前
C++ 第 36 课:Action——机械臂/VLA 非常重要
开发语言·c++·算法·ros2
Logic10123 分钟前
C语言/数据结构位运算题解:异或XOR找出英雄队伍中的“独特战斗力“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
ra90fy26 分钟前
B3873 [GESP202309 六级] 小杨买饮料
c++·算法
Omics Pro35 分钟前
北理工李荣华:AI虚拟细胞证据多模态推理基准
数据库·人工智能·算法·机器学习·自然语言处理
Cccp.12336 分钟前
【leetcode】(九)哈希函数与哈希表
数据结构·leetcode·哈希算法
xieliyu.39 分钟前
LeetCode 1419 数青蛙:状态模拟求最少青蛙数量|Java 题解
java·算法·leetcode
acd1200942 分钟前
线上偶发 499 错误,并非后端服务异常
算法
Nil2081 小时前
leetcode 45跳跃游戏Ⅱ
算法·leetcode·游戏
小蒋观天下1 小时前
端侧大模型在安防摄像头部署实操(下篇)|模型量化、推理加速、视频接入与量产调优
大数据·人工智能·算法·安全·机器学习·计算机视觉·ai大模型