利用指针找最大值
本题要求实现一个简单函数,找出两个数中的最大值。
函数接口定义:
void findmax( int *px, int *py, int *pmax );
其中px和py是用户传入的两个整数的指针。函数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
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void findmax(int* px, int* py, int* pmax)
{
*pmax = (*px > *py) ? *px : *py;
}
int main()
{
int max, x, y;
scanf("%d %d", &x, &y);
findmax(&x, &y, &max);
printf("%d\n", max);
return 0;
}
计算两数的和与差
本题要求实现一个计算输入的两数的和与差的简单函数。
函数接口定义:
void sum_diff( float op1, float op2, float *psum, float *pdiff );
其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。
裁判测试程序样例:
#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.00
The diff is -2.00
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void sum_diff(float op1, float op2, float* psum, float* pdiff)
{
*psum = op1 + op2;
*pdiff = op1 - op2;
}
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;
}
在数组中查找指定元素
本题要求实现一个在数组中查找指定元素的简单函数。
函数接口定义:
int search( int list[], int n, int x );
其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到
则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。
裁判测试程序样例:
#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:
5
1 2 2 5 4
2
输出样例1:
index = 1
输入样例2:
5
1 2 2 5 4
0
输出样例2:
Not found
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAXN 10
int search(int list[], int n, int x)
{
int* p = list;
for (int i = 0; i < n; i++)
{
if (*(p+i) == x)
return *p;
}
return -1;
}
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;
}
字符串的连接
本题要求实现一个函数,将两个字符串连接起来。
函数接口定义:
char *str_cat( char *s, char *t );
函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}/* 你的代码将被嵌在这里 */
输入样例:
abc
def
输出样例:
abcdef
abcdef
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#define MAXS 10
char* str_cat(char* s, char* t)
{
int i = 0,j=0;
while (*(s + i) != '\0')
{
i++;
}
while (*(t + j) != '\0')
{
*(s + i)= *(t + j);
i++;
j++;
}
return s;
}
int main()
{
char* p;
char str1[MAXS + MAXS] = { '\0' }, str2[MAXS] = { '\0' };
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}