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;
}

猜你喜欢

转载自blog.csdn.net/weixin_46959681/article/details/111593899