概述
1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
#include<stdio.h>
int main()
{
int maxgy(int x,int y);
int mingb(int x,int y);
int num1,num2;
printf("请输入两个数");
scanf("%d,%d",&num1,&num2);
printf("最大公约数为:%dn",maxgy(num1,num2));
printf("最小公倍数为:%dn",mingb(num1,num2));
return 0;
}
int maxgy(int x, int y){
int z;
while(y!=0){
z=x%y;
x=y;
y=z;
}
return x;
}
int mingb(int x,int y){
int z;
z=x*y/maxgy(x,y);
return z;
}
2.求方程式ax2+bx+c=0的根,用3个函数分别求当:b2-4ac大于0,等于0,和小于0时的根并输出结果。从主函数输入a,b,c的值。
#include<stdio.h>
#include<math.h>
void f1(int a,int b,int c);
void f2(int a,int b,int c);
void f3(int a,int b,int c);
int main()
{
int a,b,c;
double t;
printf("请输入a b cn,中间用空格间隔");
scanf("%d %d %d",&a,&b,&c);
printf("原方程为%dx^2+%dx+%d=0n",a,b,c);
t=b*b-4*a*c;
if(t>0)
{
f1(a,b,c);
}
if(t==0)
{
f2(a,b,c);
}
if(t<0)
{
f3(a,b,c);
}
return 0;
}
void f1(int a,int b,int c)
{
double x1,x2,t;
t=b*b-4*a*c;
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
printf("x1=%f,x2=%.2f",x1,x2);
}
void f2(int a,int b,int c)
{
double x1,x2,t;
t=b*b-4*a*c;
x1=(-b+sqrt(t))/(2*a);
x2=x1;
printf("x1=x2=%.2f",x1);
}
void f3(int a,int b,int c)
{
printf("无实根n");
}
3.写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
#include<stdio.h>
#include<math.h>
int primeNum(int a)
{
for (int i = 2; i < a/2+1; i++) {
if(a%i==0)
return 0;
}
return 1;
}
int main()
{
int a,b;
printf("请输入一个整数:n");
scanf("%d",&a);
b=primeNum(a);
if(b) printf("%d是一个素数n",a);
else printf("%d不是一个素数n",a);
return 0;
}
4.写一函数,使给定一个3*3的二维整型数组转置,即行列互换。
#include<stdio.h>
int exchange(b)
int b[3][3];
{
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j>=i&&j<3-i;j++)
{
t=b[i][j];b[i][j]=b[j][i];b[j][i]=t;
}
}
main()
{
int i,j,a[3][3];
printf("请输入3*3整形数组:n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("原数组:n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("n");
}
printf("n");
exchange(a);
printf("行列互换:n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("n");
}
}
5.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
#include<string.h>
char fanxu(b)
char b[100];
{
int i,j,t;
char c[100];strcpy(c,b);
t=strlen(b);
for(i=0,j=t-1;j>-1;i++,j--)
b[i]=c[j];
}
main()
{
char a[100],i;
gets(a);
fanxu(a);
puts(a);
}
6.写一个函数,将两个字符串连接。
#include <stdio.h>
#include <stdlib.h>
void connect(char a[],char b[]){
char c[20];
int i,j;
for ( i = 0; a[i]!='