实验8-1-7 数组循环右移(20 分)

实验8-1-7 数组循环右移(20 分)

本题要求实现一个对数组进行循环右移的简单函数:一个数组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[]中。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#define MAXN 10

int 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;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
2
6 2
1 2 3 4 5 6

输出样例:

1
5 6 1 2 3 4

实验8-1-6 函数实现字符串逆序(15 分)

实验8-1-6 函数实现字符串逆序(15 分)

本题要求实现一个字符串逆序的简单函数。

函数接口定义:

1
void f( char *p );

函数fp指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
char s[MAXS];

ReadString(s);
f(s);
printf("%s\n", s);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
Hello World!

输出样例:

1
!dlroW olleH

实验8-1-5 在数组中查找指定元素(15 分)

实验8-1-5 在数组中查找指定元素(15 分)

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义:

1
int search( int list[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#define MAXN 10

int 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;
}

/* 你的代码将被嵌在这里 */

输入样例1:

1
2
3
5
1 2 2 5 4
2

输出样例1:

1
index = 1

输入样例2:

1
2
3
5
1 2 2 5 4
0

输出样例2:

1
Not found

实验8-1-4 使用函数的选择法排序(25 分)

实验8-1-4 使用函数的选择法排序(25 分)

本题要求实现一个用选择法对整数数组进行简单排序的函数。

函数接口定义:

1
void sort( int a[], int n );

其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#define MAXN 10

void 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;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
2
4
5 1 7 6

输出样例:

1
After sorted the array is: 1 5 6 7

实验8-1-3 拆分实数的整数与小数部分(15 分)

实验8-1-3 拆分实数的整数与小数部分(15 分)

本题要求实现一个拆分实数的整数与小数部分的简单函数。

函数接口定义:

1
void splitfloat( float x, int *intpart, float *fracpart );

其中x是被拆分的实数(0≤x<10000),*intpart*fracpart分别是将实数x拆分出来的整数部分与小数部分。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
2.718

输出样例:

1
2
The integer part is 2
The fractional part is 0.718

实验8-1-2 计算两数的和与差(10 分)

实验8-1-2 计算两数的和与差(10 分)

本题要求实现一个计算输入的两数的和与差的简单函数。

函数接口定义:

1
void sum_diff( float op1, float op2, float *psum, float *pdiff );

其中op1op2是输入的两个实数,*psum*pdiff是计算得出的和与差。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
4 6

输出样例:

1
2
The sum is 10.00
The diff is -2.00

实验8-1-1 利用指针找最大值(10 分)

实验8-1-1 利用指针找最大值(10 分)

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义:

1
void findmax( int *px, int *py, int *pmax );

其中pxpx是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
3 5

输出样例:

1
5

实验7-3-10 删除重复字符(20 分)

实验7-3-10 删除重复字符(20 分)

本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

输入格式:

输入是一个以回车结束的非空字符串(少于80个字符)。

输出格式:

输出去重排序后的结果字符串。

输入样例:

1
ad2f3adjfeainzzzv

输出样例:

1
23adefijnvz

实验7-3-9 字符串字母大小写转换(15 分)

实验7-3-9 字符串字母大小写转换(15 分)

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

输入格式:

输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:

在一行中输出大小写转换后的结果字符串。

输入样例:

1
Hello World! 123#

输出样例:

1
hELLO wORLD! 123

实验7-2-8 找鞍点(20 分)

实验7-3-8 统计字符出现次数(20 分)

本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。

输入格式:

输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。

输出格式:

在一行中输出给定字符在给定字符串中出现的次数。

输入样例:

1
2
programming is More fun!
m

输出样例:

1
2
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×