#include<stdio.h>
int compare(int *min,int *mid,int *max)
{
int temp;
if(*min>*mid)//我一开始所有的变量都没有加*,输出时候任何数据的位置都没有改变
{
temp=*min;
*min=*mid;
*mid=temp;
}
if(*min>*max)
{
temp=*min;
*min=*max;
*max=temp;
}
if(*mid>*max)
{
temp=*mid;
*mid=*max;
*max=temp;
}
}
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
compare(&a, &b, &c);
printf("%d %d %d", a, b, c);
return 0;
}
Problem B: 编写函数:三个数的最大最小值 (Append Code)
Time Limit: 1 Sec
Memory Limit: 2 MB
Submit: 8417
Solved: 5481[
Submit][
Status][
Web Board]
Description
给出三个数a,b,c,最大值是?最小值是?
-----------------------------------------------------------------------------
编写以下两个函数:
get_num()的功能是读取输入的三个整数a,b,c;
max_min()的功能是求出a,b,c的最大值和最小值。
以上函数的调用格式见“Append Code”。这里不给出函数原型,请通过main()函数自行确定。
Input
输入的第一个整数n,表示有n组测试数据,每组3个整数:a,b,c。a,b,c都在int类型范围内。
Output
每组测试数据对应输出一行:为a,b,c的最大值和最小值,格式见sample。
Sample Input
5
20 15 10
10 15 20
100 100 0
0 1 -1
0 0 0
Sample Output
case 1 : 20, 10
case 2 : 20, 10
case 3 : 100, 0
case 4 : 1, -1
case 5 : 0, 0
HINT
Append Code
[
Submit][
Status][
Web Board]
#include<stdio.h>
int get_num(int *a,int *b,int *c)
{
scanf("%d %d %d",a,b,c);//和A题一样的问题,但是这个不加指针就能够输出正确答案
}
int max_min(int *mmax,int *mmin,int *a,int *b,int *c)
{
int temp;
if(a<b)
{
temp=a;
a=b;
b=temp;
}
if(a<c)
{
temp=a;
a=c;
c=temp;
}
if(b<c)
{
temp=b;
b=c;
c=temp;
}
*mmax=a;
*mmin=c;
}
int main()
{
int cases, i;
int mmax, mmin, a, b, c;
scanf("%d", &cases);
for(i = 1; i <= cases; i++)
{
get_num(&a, &b, &c);
max_min(&mmax, &mmin, a, b, c);
printf("case %d : %d, %d\n", i, mmax, mmin);
}
}
Problem A: A+B Problem (VIII) : Pointer Practice (Append Code)
Time Limit: 1 Sec
Memory Limit: 2 MB
Submit: 4118
Solved: 3302[
Submit][
Status][
Web Board]
Description
计算a+b,0<=a,b<1000。
-----------------------------------------------------------------------------
编写一个函数get_int_sum()输入a,b的值,并计算a+b。
用C语言实现,函数原型为
int get_int_sum(int *, int *);
功能:函数的参数传入a和b的地址,用来存储输入两数的值,返回值是两数之和。
用C++实现,函数原型为
int get_int_sum(int &, int &);
功能:函数的参数传入a和b的引用,用来存储输入两数的值,返回值是两数之和。
get_int_sum()的调用格式见“Append Code”。
Input
输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。
Output
每行输出一个a+b的和,顺序与输入对应。
格式为“sum = a + b”,具体参见输出样例。
Sample Input
21 210 20
Sample Output
3 = 1 + 230 = 10 + 20
HINT
参看系统首页上的“Append Code”使用说明,讨论版(Web Board)上也有。
Append Code
[
Submit][
Status][
Web Board]
#include<stdio.h>
#include<string.h>
int get_int_sum(int *a, int *b)
{
int sum=0;
scanf("%d %d",a,b);
sum=*a+*b;
return sum;
}
int main()
{
int n, a, b, i;
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
printf("%d = ", get_int_sum(&a, &b));
printf("%d + %d\n", a, b);
}
return 0;
}
Problem C: 编写函数:字符串的复制 之一 (Append Code)
Time Limit: 1 Sec Memory Limit: 2 MB Submit: 4972 Solved: 2958[ Submit][ Status][ Web Board]Description
将输入的一个字符串s拷贝输出。
-----------------------------------------------------------------------------
编写一个函数str_cpy()求一个串的拷贝:
原型:char * str_cpy(char * t, char * s);
功能:把串s复制到串t中,返回值是串t。
函数的调用格式见“Append Code”。
-----------------------------------------------------------------------------
Invalid Word(禁用单词)错误:在解决这个题目时,某些关键词是不允许被使用的。如果提交的程序中包含了下列的关键词之一,就会产生这个错误。
被禁用的头文件:string.h、stdlib.h。被禁用的库函数:strcpy()、strncpy()、memcpy()等。
Input
输入为多行。每行为一个字符串s。s的字符总数不超过100个。
Output
串s的复制。
输出两遍,一遍是测试返回值,一遍是测试str。
Sample Input
Sample Output
HINT
str_cpy()的返回值参考标准库函数strcpy()、strstr()、strchr()的设计思路:返回指向目标串的指针。
Append Code
#include<stdio.h>
#define MAX_STR_LEN 101
char * str_cpy(char * t, char * s)
{
int i;
for(i=0;*(s+i)!=0;i++)
*(t+i)=*(s+i);
*(t+i)='\0';
return t;
}
int main()
{
char s[MAX_STR_LEN], str[MAX_STR_LEN], *p;
while(gets(s) != NULL)
{
p = str_cpy(str, s);
puts(p);
puts(str);
}
return 0;
}