C语言练习题——函数

1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并且输出结果,两个整数由键盘输入

#include<stdio.h>
int main(){
    int f1(int x,int y);
    int f2(int x,int y,int z);
    int x,y,z,m;
    scanf("%d %d",&x,&y);
    z=f1(x,y);
    printf("最大公约数是:%d\n",z);
    m=f2(x,y,z);
    printf("最大公倍数是:%d\n",m);
}
int f1(int x,int y){
    int z;
    z=x%y;
    while(z!=0){
        x=y;
        y=z;
        z=x%y;
    }
    return y;
}
int f2(int x,int y,int z){
    int m;
    m=x*y/z;
    return m;
}

2.写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息

//使用函数哦判断是不是素数
#include<stdio.h>
int main(){
    int prime_number(int n);
    int number;
    scanf("%d",&number);
    int ret= prime_number(number);
    if(ret==1)printf("yes");
    else printf("no");
    
    
}
int prime_number(int n){
    int ret=0,i;
    for(i=2;i<n;i++){
        if(n%i==0)break;
    }
    if(i>=n) ret=1;
    return ret;

3.写一个函数,打印3X3的二维数组转置 

 /数组转置
#include<stdio.h>
int main(){
    void zhuanzhi(int a[3][3]);
    int a[3][3];
    for(int i=0;i<3;i++)
    for(int j=0;j<3;j++)
    scanf("%d",&a[i][j]);
    zhuanzhi(a);
}
void zhuanzhi(int a[3][3]){
    for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
    printf("%d ",a[j][i]);}
    printf("\n");}
    
}

4.写一个函数,使两个 字符串连接

#include<stdio.h>
#include<string.h>
int main(){
char f(char a[100],char b[100]);
    char a[100];
    char b[100];
    gets(a);
    gets(b);
    f(a,b);
    puts(a);
}
char f(char a[100],char b[100]){
    strcat(a,b);
    return a[100];

}

5.写一个函数,使得输入的字符串按照反序方式存放,在主函数输入和输出。 

#include<stdio.h>
#include<string.h>
int main(){
    char f(char a[100]);
    char a[100];
    gets(a);
    f(a);
    puts(a);
    
}
char f(char a[100]){
    for(int i=0;i<strlen(a)/2;i++){
        char m;
        m=a[strlen(a)-1-i];
        a[strlen(a)-1-i]=a[i];
        a[i]=m;
        
        
    }
    return a[100];
}

6汉诺塔问题 

#include<stdio.h>
void move(char a,char b){
    printf("%c -> %c\n", a, b);
}
void Hanoi(int n,char A,char B,char C){
    if(n==1)
    move(A,C);
    else{
        Hanoi(n-1,A,C,B);
        move(A,C);
        Hanoi(n-1,B,A,C);
    }
}
int main(){
    int n;
    scanf("%d",&n);
    char A='A';
    char B='B';
    char C='C';
    Hanoi(n,A,B,C);
    return 0; 
    
}

7.将一个字符串的元音字母复制给另一个字符串,然后输出

#include<stdio.h>
void copy(char a[],char b[]);
int main(){
    char a[100],b[100];
    gets(a);
    copy(a,b);
    printf("%s",b);
}
void copy(char a[],char b[]){
    int j=0;
    for(int i=0;a[i]!='\0';i++){
        if(a[i]=='A'||a[i]=='a'||a[i]=='E'||a[i]=='e'||a[i]=='I'||a[i]=='i'||a[i]=='O'||a[i]=='o'||a[i]=='U'||a[i]=='u'){
            b[j]=a[i];
            j++;
        }
    }
}

 8.写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1 9 9 0"。

#include<stdio.h>
int main(){
    void f(char a[],char b[]);
    char number[10],b[10];
    gets(number); 
    f(number,b);
    puts(b);
}
void f(char a[],char b[]){
    int m=0;
    for(int i=0;a[i]!='\0';i++){
        b[m]=a[i];
        m++;
        if(a[i+1]=='\0')break;
        b[m]=' ';
        m++;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是小阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值