1.求两个数的和(10分)
题目内容:
编写函数,求两个实数的和。编写主函数,输入两个数,调用函数求和,在主函数中显示结果。建议函数名mysum。
输入:两个实数,用逗号隔开。
输出:一个实数。
注意,本题的关键不是求和,关键是要用函数实现。
样例1输入:
1.2 2.4
样例1输出:
3.6
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
double Add(double x, double y)
{
return x+y;
}
int main()
{
double x, y;
cin>>x>>y;
cout<<Add(x, y)<<endl;
return 0;
}
2.求绝对值的函数(10分)
题目内容:
编写函数,求实数x的绝对值。在主函数中输入实数x,调用函数求绝对值,在主函数中输出。建议函数名 myfabs。
输入:一个实数
输出:绝度值
【注意】不用系统库函数,自己实现,返回绝对值,在主函数中输出!
样例1输入:
-1.25
样例1输出:
1.25
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
double abs(double x)
{
return (x<0? -x: x);
}
int main()
{
double x;
cin>>x;
cout<<abs(x)<<endl;
return 0;
}
3.x的k次方(10分)
题目内容:
编写函数,求x的k次方,k为整数(可正、可负、可0),0的任何次方为0,任何非0数的0次方为1。编写主函数,输入x和k,调用函数计算x的k次方,在主函数中输出。结果为实数。建议函数名mypow。
输入:x和k,用空格隔开。x为实数,k为整数。
输出:实数,x的k次方。
【注意】用函数实现,使用循环连乘或连除,不使用系统的库函数pow。
样例1输入:
2 -2
样例1输出:
0.25
样例2输入:
2 3
样例2输出:
8
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
double pow(double x, int k)
{
if(x==0) return 0;
if(k==0) return 1;
double ret=1;
if(k>0)
{
for(int i=1; i<=k; i++)
ret *= x;
}
if(k<0)
{
for(int i=1; i<=(-k); i++)
ret *= x;
ret = 1.0/ret;
}
return ret;
}
int main()
{
double x, k;
cin>>x>>k;
cout<<pow(x,k)<<endl;
return 0;
}
4.求n!的函数(10分)
题目内容:
编写函数,求n!,0!=1。编写主函数,输入n,调用函数求阶乘,在主函数中输出结果。
输入:非负整数
输出:阶乘
【注意】必须用函数实现,在主函数中输出结果。函数中不能有cout,printf等屏幕输出。
样例1输入:
6
样例1输出:
720
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int f(int n)
{
if(n==0||n==1)
return 1;
return n*f(n-1);
}
int main()
{
int n;
cin>>n;
cout<<f(n)<<endl;
return 0;
}
5.输入数组元素(10分)
题目内容:
编写函数,输入数组元素,输入-9999表示 结束,返回数组元素的个数。在主函数中定义数组,数组大小足够大(满足问题规模要求,本题100即可),调用函数输入数组元素,在主函数中逆序输出数组元素。数组元素为整型。
输入:数据元素,用空格或换行隔开,-9999表示结束。元素个数不超过100个。
输出:逆序输出数组元素,用空格隔开,末尾无空格。
【提示】形参为数组,实参为数组名,在函数中添加数组元素,元素自然返回。函数应使用return返回实际输入的元素个数。
【注意】要用函数实现!!!
样例1输入:
1 2 3 4 5 -9999
样例1输出:
5 4 3 2 1
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int input(int a[])
{
int num;
int i = 0;
do
{
cin>>num;
if(num!=-9999)
{
a[i++]=num;
}
}while(num!=-9999);
return i-1;
}
int main()
{
int a[110];
int len=input(a);
for(int i=len; i>0; i--)
cout<<a[i]<<" ";
cout<<a[0]<<endl;
return 0;
}
6.输出数组元素值(10分)
题目内容:
编写函数,输出数组元素,用一个空格隔开,末尾无空格。在主函数中定义数组,数组大小足够大(满足问题规模要求,本题100即可),调用上题函数输入数组元素,调用本题函数输出数组元素。数组元素为整型。
输入:数据元素,用空格或换行隔开,-9999表示结束。元素个数不超过100个。
输出:数组元素,用空格隔开,末尾无空格。
注意:要用函数实现!!!
提示:本题不需返回值。
样例1输入:
1 2 3 4 5 -9999
样例1输出:
1 2 3 4 5
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int input(int a[])
{
int i = 0;
int num;
do
{
cin>>num;
if(num!=-9999)
a[i++] = num;
}while(num!=-9999);
return i;
}
void output(int a[])
{
int len = input(a);
cout<<a[0];
for(int i=1; i<len; i++)
cout<<" "<<a[i];
cout<<endl;
}
int main()
{
int a[110];
output(a);
return 0;
}
7.将数组元素逆序(10分)
题目内容:
编写函数,将数组元素逆序。编写主函数,定义数组,使用前面编写的函数输入数组元素,调用本题函数逆序数组元素,调用前面编写的输出数组的函数输出。设数组元素为整数,不超过100个。
输入:若干空格或换行隔开的整数,-9999表示结束。
输出:逆序的数组元素,末尾无空格。
【注意】输入、输出、逆序均通过调用函数实现!!!不使用函数的程序无意义。
样例1输入:
1 2 3 4 5 6 7 -9999
样例1输出:
7 6 5 4 3 2 1
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int input(int a[])
{
int i=0;
int num;
do
{
cin>>num;
if(num!=-9999)
a[i++] = num;
}while(num!=-9999);
return i;
}
void reverse(int a[], int len)
{
int i = 0;
int j = len-1;
while(i<j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
void output(int a[], int len)
{
cout<<a[0];
for(int i=1; i<len; i++)
cout<<" "<<a[i];
cout<<endl;
}
int main()
{
int a[110];
int len = input(a);
reverse(a, len);
output(a, len);
return 0;
}
8.求数组元素的和(10分)
题目内容:
编写函数,求数组元素的和。编写主函数,定义数组,使用前面编写的函数输入数组元素,调用本题函数求和,在主函数中输出和。数组元素为整数,不超过100个。
输入:若干整数,用空格或换行分隔,-9999表示结束。
输出:和
【注意】使用函数,在主函数中输出。
样例1输入:
1 2 3 4 5 -9999
样例1输出:
15
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int input(int a[])
{
int i=0;
int num;
do
{
cin>>num;
if(num!=-9999)
a[i++] = num;
}while(num!=-9999);
return i;
}
int sum(int a[], int len)
{
int sum = 0;
for(int i=0; i<len; i++)
sum += a[i];
return sum;
}
int main()
{
int a[110];
int len = input(a);
int s = sum(a, len);
cout<<s<<endl;
return 0;
}
9.求字符串的长度的函数(10分)
题目内容:
编写函数,计算字符串的长度。编写主函数,定义字符数组,输入字符串,调用函数求长度,在主函数中输出字符串的长度。字符串最大长度不超过100。注意,必须用函数实现,不能使用字符串处理的库函数,不能使用string类型。
输入:一个不带空格的字符串
输出:字符串的长度。
【提示】逐个数出字符个数,直到遇到结束符。
样例1输入:
compile
样例1输出:
7
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int strlen(char *str)
{
char *p = str;
int cnt = 0;
while(*p)
{
p++;
cnt++;
}
return cnt;
}
int main()
{
char str[110];
cin>>str;
cout<<strlen(str)<<endl;
return 0;
}
10.字符串转大写(10分)
题目内容:
编写函数,将字符串中的所有字母转换为大写。在主函数中定义字符数组,输出字符串,调用函数转大写,在主函数中输出。字符串长度不超过200. 注意,必须用字符数组实现,不能使用字符串处理库函数,也不能使用string类。
输入:字符串,不含空格
输出:大写字符串。
【提示】逐个判断字符是否小写字母,是就转换,不是就不转换,直到字符串结束。
样例1输入:
Short123
样例1输出:
SHORT123
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
void trans(char *str)
{
char *p = str;
while(*p)
{
if(*p>='a'&&*p<='z')
*p = *p - 'a' + 'A';
p++;
}
}
int main()
{
char str[110];
cin>>str;
trans(str);
cout<<str<<endl;
return 0;
}
11.字符串复制函数(10分)
题目内容:
编写函数,将字符串s1复制到字符串s2中,函数格式为:
void mystrcpy(char s1[],char s2[]);
编写主函数,定义字符数组s1[100],s2[100], 输入字符串s1,调用函数将s1的内容复制到s2中,在主函数中输出s2的内容。要求必须用字符数组实现,不能使用系统的库函数,不能使用string类型。
输入:一个可能带空格的字符串,长度小于100.
输出:字符串。
【提示】逐个复制字符,直到遇到s1的结束符,在s2的末尾添加结束符。本题不需返回值。
【注意】本例的输入输出相同,没有经过函数复制的输出是无意义的。
样例1输入:
be calm
样例1输出:
be calm
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
void strcpy(char *str, char *dest)
{
char *p = str;
char *q = dest;
while(*q++ = *p++);
}
int main()
{
char str1[110];
char str2[110];
cin.getline(str1,110);
strcpy(str1, str2);
cout<<str2<<endl;
return 0;
}
12.字符串比较函数(10分)
题目内容:
编写函数,按字母表顺序比较字符串s1,s2,区分大小写,若s1>s2返回1,若s1<s2返回-1,若s1等于s2返回0。在主函数中定义字符数组,输入字符串,调用函数进行比较,在主函数中输出结果。
字符串的比较就是比较它们在字母表中的顺序,如a在b前,就是a<b)。实际上就是比较它们的ASCII码。注意,必须用字符数组实现,不能使用字符串处理库函数,也不能使用string类。字符串的长度不超过200.
输入:两个英文字符串,用空格隔开。
输出:1,0,或-1
【提示】逐个比较两个字符串的对应字母,直到不等或有一个结束,根据最后字符的差确定返回值。
样例1输入:
abc ab
样例1输出:
1
时间限制:500ms内存限制:32000kb
#include <iostream>
using namespace std;
int strcmp(char *str1, char *str2)
{
char *p = str1;
char *q = str2;
while(*p==*q&&*p&&*q)
{
p++;
q++;
}
int ret;
if(*p>*q)
ret = 1;
else if(*p<*q)
ret = -1;
else
ret = 0;
return ret;
}
int main()
{
char str1[220];
char str2[220];
cin>>str1>>str2;
cout<<strcmp(str1, str2)<<endl;
return 0;
}