C语言编程经典题(日常更新)

1. 判定一个输入的自然数是否为素数

/* 判定一个输入的自然数是否为素数 */
#include <stdio.h>
#include <stdbool.h>

bool is_prime(int n){

	int divisor;
	if(n <= 1)
		return false;
	for(divisor = 2; divisor * divisor <= n; divisor++)
		if(n % divisor == 0)
			return false;
		return true;
}

int main(){	 
	int n;
	printf("Enter a number: \n");
	sacnf("%d", &n);
	
	if(is_prime(n))
		printf("Prime\n");
	else
		("Not prime\n");
	return 0;
}

代码抄录自《C语言程序设计现代方法(第2版)》P130

2. 输出九九乘法口诀表

/* 输出九九乘法口诀表 */
#include <stdio.h>
int main(){
        int i;
        int j;
        int result;
        for(i=0; i<9; i++){
                for(j=0; j<9; j++){
                        result = i*j;
                        printf("%d*%d = %-3d", i,j,result); //-3d表示左对齐占三位
                }
                printf("\n");
        }
        return 0;
}

3. 使用指针找出数组中的最大值和最小值

/* 使用指针找出数组中的最大值和最小值 */
#include <stdio.h>
#define N 10

void max_min(int a[], int n, int *max, int *min)
{
	int i;
	*max = *min = a[0];
	for(i = 1; i < n; i++){
		if(a[i] > *max)  
			*max = a[i];
		else if(a[i] < *min)
			*min = a[i]
	}
}

int main()
{	
	int b[N], i, big, small;
	
	printf("Enter %d numbers:", N);
	for(i = 0; i < N; i++)
		scanf("%d", &b[i]);
	max_min(b, N, &big, &small);

	printf("Largest: %d\n", big);
	printf("Smallest: %d\n", small);	
	return 0;
}

代码抄录自《C语言程序设计现代方法(第二版)》P178

4. 选择排序

/* 选择排序 */
#include <stdio.h>
#include <stdlib.h>

void sort(int arr[], int len)
{
	int i;
	int j;
	int tmp;
	
	for(i = 0; i < len-1; i++){
		for(j = i+1; j < len; j++){
			if(arr[i] < arr[j]){
				tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
			}
		}
	}
}

int main()
{
	int i;
	int len;
	int arr[] = {10, 1, 20, 5};
	len = sizeof(arr)/sizeof(arr[0]);

	sort(arr, len);
	for(i = 0; i < len; i++){
		printf("%d ", arr[i]);
	}
	putchar('\n');
	return 0;
}

5. 冒泡排序

/* 冒泡排序 */
#include <stdio.h>
#include <stdlib.h>

void sort(int arr[], int len)
{
        int i;
        int j;
        int tmp;

        for(i = 0; i < len-1; i++){//轮数
                for(j = 0; j < len-1-i; j++){//次数
                        if(arr[j] > arr[j+1]){
                                tmp = arr[j];
                                arr[j] = arr[j+1];
                                arr[j+1] = tmp;
                        }
                }
        }
}

int main()
{
        int i;
        int len;
        int arr[] = {10, 1, 20, 5};
        len = sizeof(arr)/sizeof(arr[0]);

        sort(arr, len);
        for(i = 0; i < len; i++){
                printf("%d ", arr[i]);
        }
        putchar('\n');
        return 0;
}
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值