C语言基础代码(4)

1. 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。
#include <stdio.h>
void Print(int* num){
    int i = 0;
    int j = 0;
    for(i = 1;i <= *num;i++){
        for(j = 1;j <= i;j++){
            printf("%d*%d=%2d  ",i,j,i*j);
        }
        printf("\n");
    }
}

int main(){
    int num = 0;
    printf("请输入数字:");
    scanf("%d",&num);
    Print(&num);
    return 0;
}
2. 使用函数实现两个数的交换。
#include <stdio.h>
void Exchange(int *a,int *b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

int main(){
    int a,b;
    printf("请输入要交换的两个数:");
    scanf("%d %d",&a,&b);
    printf("交换前a=%d,b=%d\n",a,b);
    Exchange(&a,&b);
    printf("交换后a=%d,b=%d\n",a,b);
    return 0;
}
3. 实现一个函数判断year是不是润年。
#include <stdio.h>
void IsLeap(int year){
    if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        printf("%d年是闰年\n",year);
    else
        printf("%d年不是闰年\n",year);
}

int main(){
    int year = 0;
    printf("请输入年份:");
    scanf("%d",&year);
    IsLeap(year);
    return 0;
}
4. 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
#include <stdio.h>
void Init(int arr[],int sz){
    int i = 0;
    for(;i < sz;i++)
        arr[i] = i+1;
}
void Print(int arr[],int sz){
    int i = 0;
    for(;i < sz;i++)
        printf("%d ",arr[i]);
    printf("\n");
}
void Empty(int arr[],int sz){
    int i = 0;
    for(;i < sz;i++)
        arr[i] = 0;
    //等同于memset(arr,0,sz*sizeof(arr[0]));
}
void Reverse(int arr[],int sz){
    int left = 0;
    int right = sz-1;
    while(left < right){
        int tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left++;
        right--;
    }
}

int main(){
    int arr[]={0,1,2,3,4,5};
    int sz = sizeof(arr)/sizeof(arr[0]);
    printf("原数组为:");
    Print(arr,sz);
    Init(arr,sz);
    printf("初始化后的数组为:");
    Print(arr,sz);
    Reverse(arr,sz);
    printf("逆置后的数组为:");
    Print(arr,sz);
    Empty(arr,sz);
    printf("清空后的数组为:");
    Print(arr,sz);
    return 0;
}
5. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 :
    A选手说:B第二,我第三;
    B选手说:我第二,E第四;
    C选手说:我第一,D第二;
    D选手说:C最后,我第三;
    E选手说:我第四,A第一;
    比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
#include <stdio.h>
int main(){
    int a,b,c,d,e;
    for (a = 1; a <= 5; a++){
        for (b = 1; b <= 5; b++){
            for (c = 1; c <= 5; c++){
                for (d = 1; d <= 5; d++){
                    for (e = 1; e <= 5; e++){
                        if ((2 == b && 3 != a) || (2 != b && 3 == a) == 1){
                            if ((2 == b && 4 != e) || (2 != b && 4 == e) == 1){
                                if ((1 == c && 2 != d) || (1 != c && 2 == d) == 1){ 
                                    if ((5 == c && 3 != d) || (5 != c && 3 == d) == 1){                          
                                        if ((4 == e && 1 != a) || (4 != e && 1 == a) == 1){
                                            printf("a= %d, b= %d,c= %d,d= %d,e= %d\n", a,b,c,d,e);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    return 0;
}
6. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
    A说:不是我。
    B说:是C。
    C说:是D。
    D说:C在胡说
    已知3个人说了真话,1个人说的是假话。
    现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include <stdio.h>
int main(){
    int killer;
    for(killer = 'A';killer <= 'D';killer++){
    if(('A' != killer)+('C' == killer)+('D' == killer)+('D' != killer) == 3){
        printf("killer is %c\n",killer);
        break;
        }   
    }
    return 0;
}
7.在屏幕上打印杨辉三角。 
#include <stdio.h>
#define N 10
int main(){
    int i,j;
    int arr[N][N];
    for(i = 0;i < N;i++){
        arr[i][0] = 1;
        arr[i][i] = 1;
    }
    for(i = 2;i < N;i++){
        for(j = 1;j < i;j++){
            arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
        }
    }
    for(i = 0;i < N;i++){
        for(j = 0;j < (2*N-2*i);j++){
            printf(" ");
        }
        for(j = 0;j <= i;j++){
            printf("%4d",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

8.实现一个函数,判断一个数是不是素数。 

#include <stdio.h>
int IsPrime(int n){
    int i = 0;
    for(i = 2;i < n;i++){
        if(n % i == 0)
            return 0;
    }
    return 1;
}

int main(){
    int n,ret;
    printf("请输入一个数字:");
    scanf("%d",&n);
    ret = IsPrime(n);
    if(ret == 0)
        printf("%d不是素数\n",n);
    else if(ret == 1)
        printf("%d是素数\n",n);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值