题目 1028: [编程入门]自定义函数求一元二次方程
题目描述
求方程的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
输入格式
a b c
输出格式
x1=? x2=?
样例输入
4 1 1
样例输出
x1=-0.125+0.484i x2=-0.125-0.484i
MYCPP;//这道题的核心内容x1x2=(-b±√(b^2-4ac))/2a
void D(double a, double b, double c)
{
double x1,x2;
x1 = (-b + sqrt(pow(b, 2) - 4 * a * c)) / 2.0 * a;
x2 = (-b - sqrt(pow(b, 2) - 4 * a * c)) / 2.0 * a;
printf("%.3lf%.3lf", &x1, &x2);
}
void deng(double a, double b, double c)
{
double x1, x2;
x1=x2 = (-b + sqrt(pow(b, 2) - 4 * a * c)) / 2.0 * a;
printf("%.3lf", &x1);
}
void x(double a, double b, double c)
{
cout << 0;
}
int main()
{
double a, b, c;
cin >> a >> b >> c;
if (pow(b, 2) - 4 * a * c>0)
{
D(a, b, c);
}
else if (pow(b, 2) - 4 * a * c < 0)
{
return 0;
}
else deng(a, b, c);
return EXIT_SUCCESS;
}
//正确答案
float x1, x2, a, b, c, z;//预定义
void func1() { //大于零
x1 = (-b + sqrt(z)) / (2 * a);
x2 = (-b - sqrt(z)) / (2 * a);
}
void func2() { //等于零
x1 = x2 = (-b) / (2 * a);
}
void func3() { //小于零
z = sqrt(-z);
printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n", -b / (2 * a), z / (2 * a), -b / (2 * a), z / (2 * a));
}
int main() {
cin >> a >> b >> c;
z = b * b - 4 * a * c;
if (z > 0) {
func1();
}
else if (z < 0) {
func3();
return 0;
}
else {
func2();
}
printf("x1=%.3f x2=%.3f\n", x1, x2);
return 0;
}
题目 1029: [编程入门]自定义函数处理素数
题目描述
写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
输入格式
一个数
输出格式
如果是素数输出prime 如果不是输出not prime
样例输入
97
样例输出
prime
MYCPP;//仅通过一半样例
bool isprime(int x)
{
if ( x % x == 0&&x!=1)
{
return true;
}
else return false;
}
int main()
{
int x;
cin >> x;
if (isprime(x))
{
cout << "prime";
}
else cout << "not prime";
return 0;
}
//正确答案 通过测试
void sushu(int a)
{
int count = 0;//这里运用的思想是***遍历2到a-1 并用a对 i取模 如果为零则证明i是a的因数***;
for (int i = 2; i < a; i++)
{
if ((a % i) == 0)
count++;//***a对于i到a-1***的因数个数(除1外的)
}
if (count == 0)
{
printf("prime");
}
else
printf("not prime");
}
int main()
{
int a;
scanf_s("%d", &a);
sushu(a);
}
题目 1030: [编程入门]二维数组的转置
题目描述
写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
输入格式
一个3x3的矩阵
输出格式
无
样例输入
1 2 3
4 5 6
7 8 9
样例输出
1 4 7
2 5 8
3 6 9
MYCPP;//正确答案//核心思想就是i,j位置互换即可 画图就能想通了
int main()
{
int arr[3][3] = { 0 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> arr[i][j];
}
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[j][i]<<" ";
}
cout << endl;
}
return EXIT_SUCCESS;
}
题目 1031: [编程入门]自定义函数之字符串反转
题目描述
写一函数,使输入的一个字符串按反序存放,在主函数中输入并输出反序后的字符串(不包含空格)。
输入格式
一行字符
输出格式
逆序后的字符串
样例输入
123456abcdef
样例输出
fedcba654321
//正确答案//从中间断开然后两头赋值
int main()
{
void array(string str);
string str;
cin >> str;
array(str);
return 0;
}
void array(string str)
{
int length;
length = str.length();
for (int i = 0; i < length / 2; i++)
{
char k = str[i];
str[i] = str[length-i-1];
str[length-i-1] = k;
}
cout<<str;
}
题目 1032: [编程入门]自定义函数之字符串连接
题目描述
写一函数,将两个字符串连接
输入格式
两行字符串
输出格式
链接后的字符串
样例输入
123
abc
样例输出
123abc
MYCPP;//正确答案//直接把要链接的字符串顺序打印就行了不用想得太复杂!
void func(string s1,string s2)
{
cout<<s1<<s2;
}
int main()
{
string s1,s2;
cin>>s1>>s2;
tap(s1,s2);
return 0;
}
ps:该复习复习字符串的知识了
新认识一个C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。