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");}
}
欢迎大家积极留言呀!