写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
//写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入
#include <stdio.h>
int getGCD(int a, int b)
{
int iMax = 0, iMin = 0;//定义最大最小值并初始化
if (a > b)//分别获取最大最小值
{
iMax = a;
iMin = b;
}
else
{
iMax = b;
iMin = a;
}
int iRet = iMax % iMin;//取余
while (iRet)
{
iMax = iMin;//余数不为0时,用最小值去对余数取余
iMin = iRet;
iRet = iMax % iMin;
}
return iMin;//余数为0则输出最小值
}
int getLCM(int a, int b)
{
return a * b / getGCD(a, b);//LCM = num1 * num2 / GCD
}
int main(void)
{
int a = 0, b = 0;//定义并初始化
scanf("%d%d", &a, &b);//输入
printf("GCD:%d\nLCM:%d\n", getGCD(a, b), getLCM(a, b));//调用求取GCD和LCM并输出
return 0;
}
在VS编译器内会报C4996错误,解决见下文:(下同)
运行结果:
求方程 ax^2+bx+c=0 的根,用三个函数分别求当:b^2-4ac大于0,等于0和小于0时的根并输出结果。从主函数输入 a,b,c 的值
//求方程 ax ^ 2 + bx + c = 0 的根,用三个函数分别求当:
//b ^ 2 - 4ac大于0,等于0和小于0时的根并输出结果。从主函数输入 a, b, c 的值
#include <stdio.h>
#include <math.h>
void Dmin(int a, int b, int iDera)//两个不等的复数根
{
double x1 = (0 - b) / (2.0 * a);
double x2 = pow(-iDera, 0.5) / (2.0 * a);
printf("\nx1 = %lf+%lfi\nx2 = %lf-%lfi\n", x1, x2, x1, x2);
}
void Dmax(int a, int b, int iDera)//两个不等的实数根
{
double x1 = ((0 - b) + pow(iDera, 0.5)) / (2.0 * a);
double x2 = ((0 - b) - pow(iDera, 0.5)) / (2.0 * a);
printf("\nx1 = %lf\nx2 = %lf\n", x1, x2);
}
void Dequal(int a, int b)//两个相等的实数根
{
double x = (0 - b) / (2.0 * a);
printf("\nx = %lf\n", x);
}
int main(void)
{
int a = 0, b = 0, c = 0;//定义并初始化
scanf("%d%d%d", &a, &b, &c);//输入
int iDera = b * b - 4 * a * c;//求取△
if (0 == iDera)
Dequal(a, b);
else if (iDera > 0)
Dmax(a, b, iDera);
else
Dmin(a, b, iDera);
return 0;
}
运行结果:
两个不等的实数根:
两个相等根:
两个不等的复数根:
写一个判断素数的函数,在主函数输入一个整数时,输出是否为素数的信息
//写一个判断素数的函数,在主函数输入一个整数时,输出是否为素数的信息
#include <stdio.h>
bool isPrimeNumber(int num)
{
for (int i = 2; i < num; i++)
{
if (0 == num % i)//能整除则不为素数
return false;
}
return true;//都不能整除则为素数
}
int main(void)
{
int num = 0;//定义并初始化
scanf("%d", &num);//输入
if (isPrimeNumber(num))
printf("yes\n");
else
printf("no\n");
return 0;
}
运行结果:
写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
//写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
#include <stdio.h>
void Trans(int arr[3][3])
{
printf("\n\n");
for (int j = 0; j < 3; j++)//倒置输出
{
for (int i = 0; i < 3; i++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
int main(void)
{
int arr[3][3] = { 0 };//定义并初始化
for (int i = 0; i < 3; i++)//输入
for (int j = 0; j < 3; j++)
scanf("%d", &arr[i][j]);
Trans(arr);
return 0;
}
运行结果:
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串
//写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串
#include <stdio.h>
void reverseFunc(char charBuff[1024])
{
char ch[1024];
int i = 0;
for (; i < 1024; i++)//备份
{
ch[i] = charBuff[i];
if ('\0' == charBuff[i])
break;
}
for (int j = 0; j <= i - 1; j++)//反转
charBuff[j] = ch[i - j - 1];
}
int main(void)
{
char chBuff[1024];
scanf("%s", chBuff);//输入
reverseFunc(chBuff);//反转
printf("%s\n", chBuff);//输出
return 0;
}
运行结果:
写一个函数,将两个字符串连接
//写一个函数,将两个字符串连接
#include <stdio.h>
void addFunc(char charBuff1[1024], char charBuff2[1024], char charBuff3[2048])
{
int i = 0;
for ( ; i < 1024; i++)
{
if ('\0' == charBuff1[i])//到达末尾退出,结束符不添加
break;
charBuff3[i] = charBuff1[i];
}
for (int j = 0; j < 1024; j++)
{
charBuff3[i + j] = charBuff2[j];
if ('\0' == charBuff2[j])//到达末尾退出,结束符添加
break;
}
}
int main(void)
{
char chBuff1[1024], chBuff2[1024], chBuff3[2048];//定义
scanf("%s%s", chBuff1, chBuff2);//输入
addFunc(chBuff1, chBuff2, chBuff3);//拼接
printf("%s\n", chBuff3);//输出
return 0;
}
运行结果:
写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
//写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
#include <stdio.h>
void copyFunc(char charBuff1[1024], char charBuff2[1024])
{
int iCount = 0;
for (int i = 0; i < 1024; i++)
{
if ('\0' == charBuff1[i])//遇到结束符则退出循环
break;
if (('a' == charBuff1[i]) ||
('e' == charBuff1[i]) ||
('i' == charBuff1[i]) ||
('o' == charBuff1[i]) ||
('u' == charBuff1[i]))
{
charBuff2[iCount] = charBuff1[i];//元音字母复制
iCount++;
}
}
charBuff2[iCount] = '\0';//添加结束符
}
int main(void)
{
char chBuff1[1024], chBuff2[1024];//定义
scanf("%s", chBuff1);//输入
copyFunc(chBuff1, chBuff2);//寻找元音字母
printf("%s\n", chBuff2);//输出
return 0;
}
运行结果:
写一个函数,输入一个4位数字,要求输出这4个数字字符,但每个数字间空一个空格
//写一个函数,输入一个4位数字,要求输出这4个数字字符,但每个数字间空一个空格
#include <stdio.h>
void Func(int arr[4])
{
for (int i = 0; i < 4; i++)//输出
printf("%d ", arr[i]);
printf("\n");
}
int main(void)
{
int arr[4];//定义
for (int i = 0; i < 4; i++)//输入
scanf("%d", &arr[i]);
Func(arr);
return 0;
}
运行结果:
标签:1024,函数,int,模块化,void,++,printf,程序设计,习题 From: https://www.cnblogs.com/EricsT/p/18548422