计算机程序设计C++ MOOC
测试与作业C++基础练习100题
##第五周基本练习
本周为函数的使用
- 求两个数的和
#include "iostream"
using namespace std;
double mysum(double a,double b)
{
return a + b;
}
int main()
{
double a, b;
cin >> a >> b;
cout << mysum(a, b) << endl;
return 0;
}
- 求绝对值的函数
#include "iostream"
using namespace std;
double myfabs(double a)
{
if (a >= 0)
return a;
else
return -a;
}
int main()
{
double a;
cin >> a;
cout << myfabs(a) << endl;
return 0;
}
- x的k次方
#include "iostream"
using namespace std;
double mypow(double a,int n)
{
double pow = 1;
if (a == 0) return 0;
if (n > 0)
{
while (n != 0)
{
pow = pow*a;
n--;
}
return pow;
}
else if (n == 0)
{
return 1;
}
else
{
return 1/mypow(a, -n);
}
}
int main()
{
double a;
int n;
cin >> a >> n;
cout << mypow(a, n) << endl;
return 0;
}
- 求n!的函数
#include "iostream"
using namespace std;
int Factorial(int n)
{
if (n == 0) return 1;
int fac = 1,i=1;
while (n != 0)
{
fac = fac*i;
i++;
n--;
}
return fac;
}
int main()
{
int n;
cin >> n;
cout << Factorial(n) << endl;
return 0;
}
- 输入数组元素
#include "iostream"
using namespace std;
int input(int a[])
{
int i = 0,n;
while (1)
{
cin >> n;
if (n != -9999)
{
a[i] = n;
i++;
}
else
{
break;
}
}
return i;
}
int main()
{
int a[100],n,i;
n = input(a);
for (i = n - 1; i > 0; i--)
{
cout << a[i] << " ";
}
cout << a[i];
return 0;
}
- 输出数组元素值
#include "iostream"
using namespace std;
int input(int a[])
{
int i = 0,n;
while (1)
{
cin >> n;
if (n != -9999)
{
a[i] = n;
i++;
}
else
{
break;
}
}
return i;
}
void output(int a[],int n)
{
int i = 0;
for (i = 0; i < n-1; i++)
{
cout << a[i] << " ";
}
cout << a[i];
}
int main()
{
int a[100],n;
n=input(a);
output(a, n);
return 0;
}
- 将数组元素逆序
#include "iostream"
using namespace std;
int input(int a[])
{
int i = 0,n;
while (1)
{
cin >> n;
if (n != -9999)
{
a[i] = n;
i++;
}
else
{
break;
}
}
return i;
}
void output(int a[],int n)
{
int i = 0;
for (i = 0; i < n-1; i++)
{
cout << a[i] << " ";
}
cout << a[i];
}
void reverse(int a[], int n)
{
int i = 0;
int mid,temp;
mid = int(n / 2.0 + 0.5);
for (i = 0; i < mid; i++)
{
temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
}
int main()
{
int a[100],n;
n=input(a);
reverse(a,n);
output(a, n);
return 0;
}
- 求数组元素的和
#include "iostream"
using namespace std;
int input(int a[])
{
int i = 0,n;
while (1)
{
cin >> n;
if (n != -9999)
{
a[i] = n;
i++;
}
else
{
break;
}
}
return i;
}
int sum(int a[], int n)
{
int i = 0, s = 0;
for (i = 0; i < n; i++)
s = s + a[i];
return s;
}
int main()
{
int a[100],n;
n=input(a);
cout << sum(a, n);
return 0;
}
- 求字符串的长度的函数
#include "iostream"
using namespace std;
int len(char a[])
{
int i=0;
while (a[i]!='\0')
{
i = i++;
}
return i;
}
int main()
{
char a[100];
cin >> a;
cout << len(a) << endl;
return 0;
}
- 字符串转大写
#include "iostream"
using namespace std;
void upp(char a[])
{
int i=0;
while (a[i]!='\0')
{
if (a[i] > 'a'&&a[i] < 'z')
{
a[i] = char(a[i] + 'A' - 'a');
}
i++;
}
}
int main()
{
char a[100];
cin >> a;
upp(a);
cout << a;
return 0;
}
- 字符串复制函数
#include "iostream"
using namespace std;
void mystrcpy(char a[], char b[])
{
int i = 0;
while (a[i]!='\0')
{
b[i] = a[i];
i++;
}
b[i] = '\0';
}
int main()
{
char a[100],b[100];
cin.getline(a, 100);
mystrcpy(a, b);
cout << b;
return 0;
}
- 字符串比较函数
#include "iostream"
using namespace std;
int compare(char a[], char b[])
{
int i = 0;
while (a[i]!='\0'||b[i]!='\0')
{
if (a[i] == b[i]) i++;
else if (a[i] > b[i]) return 1;
else return -1;
}
if (a[i] == '\0'&& b[i] != '\0') return -1;
else if (a[i] == '\0'&& b[i] == '\0') return 0;
else return 1;
}
int main()
{
char a[100],b[100];
cin >> a >> b;
cout << compare(a,b);
return 0;
}
以上为第五周的基本练习。