本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有$n(\gt 0)$个整数,将每个整数循环向右移$m(\geq 0)$个位置,即将a中的数据由$\left(a_{0} a_{1} \cdots a_{n-1}\right)$变换为$\left(a_{n-m} \cdots a_{n-1} a_{0} a_{1} \cdots a_{n-m-1}\right)$(最后m个数循环移至最前面的m个位置)。
1
int ArrayShift( int a[], int n, int m );
其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数ArrayShift须将循环右移后的数组仍然存在a[]中。
a[]
n
m
ArrayShift
12345678910111213141516171819202122232425
#include <stdio.h>#define MAXN 10int ArrayShift( int a[], int n, int m );int main(){ int a[MAXN], n, m; int i; scanf("%d %d", &n, &m); for ( i = 0; i < n; i++ ) scanf("%d", &a[i]); ArrayShift(a, n, m); for ( i = 0; i < n; i++ ) { if (i != 0) printf(" "); printf("%d", a[i]); } printf("\n"); return 0;}/* 你的代码将被嵌在这里 */
12
6 21 2 3 4 5 6
5 6 1 2 3 4
本题要求实现一个字符串逆序的简单函数。
void f( char *p );
函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
f
p
123456789101112131415161718
#include <stdio.h>#define MAXS 20void f( char *p );void ReadString( char *s ); /* 由裁判实现,略去不表 */int main(){ char s[MAXS]; ReadString(s); f(s); printf("%s\n", s); return 0;}/* 你的代码将被嵌在这里 */
Hello World!
!dlroW olleH
本题要求实现一个在数组中查找指定元素的简单函数。
int search( int list[], int n, int x );
其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到
list[]
x
则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。
search
123456789101112131415161718192021222324
#include <stdio.h>#define MAXN 10int search( int list[], int n, int x );int main(){ int i, index, n, x; int a[MAXN]; scanf("%d", &n); for( i = 0; i < n; i++ ) scanf("%d", &a[i]); scanf("%d", &x); index = search( a, n, x ); if( index != -1 ) printf("index = %d\n", index); else printf("Not found\n"); return 0;}/* 你的代码将被嵌在这里 */
123
51 2 2 5 42
index = 1
51 2 2 5 40
Not found
本题要求实现一个用选择法对整数数组进行简单排序的函数。
void sort( int a[], int n );
其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。
a
#include <stdio.h>#define MAXN 10void sort( int a[], int n );int main(){ int i, n; int a[MAXN]; scanf("%d", &n); for( i=0; i<n; i++ ) scanf("%d", &a[i]); sort(a, n); printf("After sorted the array is:"); for( i = 0; i < n; i++ ) printf(" %d", a[i]); printf("\n"); return 0;}/* 你的代码将被嵌在这里 */
45 1 7 6
After sorted the array is: 1 5 6 7
本题要求实现一个拆分实数的整数与小数部分的简单函数。
void splitfloat( float x, int *intpart, float *fracpart );
其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。
*intpart
*fracpart
#include <stdio.h>void splitfloat( float x, int *intpart, float *fracpart );int main(){ float x, fracpart; int intpart; scanf("%f", &x); splitfloat(x, &intpart, &fracpart); printf("The integer part is %d\n", intpart); printf("The fractional part is %g\n", fracpart); return 0;}/* 你的代码将被嵌在这里 */
2.718
The integer part is 2The fractional part is 0.718
本题要求实现一个计算输入的两数的和与差的简单函数。
void sum_diff( float op1, float op2, float *psum, float *pdiff );
其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。
op1
op2
*psum
*pdiff
12345678910111213141516
#include <stdio.h>void sum_diff( float op1, float op2, float *psum, float *pdiff );int main(){ float a, b, sum, diff; scanf("%f %f", &a, &b); sum_diff(a, b, &sum, &diff); printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff); return 0; }/* 你的代码将被嵌在这里 */
4 6
The sum is 10.00The diff is -2.00
本题要求实现一个简单函数,找出两个数中的最大值。
void findmax( int *px, int *py, int *pmax );
其中px和px是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。
px
findmax
pmax
#include <stdio.h>void findmax( int *px, int *py, int *pmax );int main(){ int max, x, y; scanf("%d %d", &x, &y); findmax( &x, &y, &max ); printf("%d\n", max); return 0;} /* 你的代码将被嵌在这里 */
3 5
5
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入是一个以回车结束的非空字符串(少于80个字符)。
输出去重排序后的结果字符串。
ad2f3adjfeainzzzv
23adefijnvz
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入为一个以“#”结束的字符串(不超过30个字符)。
在一行中输出大小写转换后的结果字符串。
Hello World! 123#
hELLO wORLD! 123
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
在一行中输出给定字符在给定字符串中出现的次数。
programming is More fun!m
2
auhanjie
Zhuhai, China
文章
465
分類
21
標籤
30
mysql
java
leetcode
Update your browser to view this website correctly. Update my browser now
×