c语言经典100题 61-70题

第61题:

链接:C 练习实例61 -- 杨辉三角形 | 菜鸟教程

分析:杨辉三角形的首尾元素是1,其他元素是上一列两个元素的和

完整代码:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

void Pascal_triangle (int x)
{
	int triangle[10][10];
	for (int i = 0; i < x; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			if (j == 0 || j == i)
				triangle[i][j] = 1;
			else
			{
				triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
			}
			printf("%d ", triangle[i][j]);
		}
		printf("\n");
	}
}

int main()
{

	Pascal_triangle(10);
	return 0;
}

62-65题都是画图就不讲解了。

第66题:

链接:C 练习实例66 | 菜鸟教程

完整代码:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

void swap(int* x, int* y)
{
	int t;
	t = *x;
	*x = *y;
	*y = t;
}


int main()
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	int* p = &a, * p1 = &b, * p2 = &c;
	if (a > b)
		swap(p, p1);
	if (a > c)
		swap(p, p2);
	if (b > c)
		swap(p1, p2);
	printf("%d %d %d", a, b, c);
}

第67题:

链接:C 练习实例67 | 菜鸟教程

分析:记录下来最大值和最小值再的位置,然后交换就行。

完整代码:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

int main()
{
	int n;
	printf("输入数组的长度:\n");
	scanf("%d", &n);
	int* arr = (int*)malloc(n * sizeof(int));
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	int max = arr[0], min = arr[0],max_i=0,min_i=0;

	for (int i = 0; i < n; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
			max_i = i;
		}
		if (arr[i] < min)
		{
			min = arr[i];
			min_i = i;
		}
	}
	int m, t;
	m = arr[max_i];
	arr[max_i] = arr[0];
	arr[0] = m;
	t = arr[min_i];
	arr[min_i] = arr[n - 1];
	arr[n - 1] = t;

	for(int i=0;i<n;i++)
		printf("%d ", arr[i]);


}

第68题:

链接:C 练习实例68 | 菜鸟教程

完整代码:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void reverse(int* a, int start, int end) {
    while (start < end) {
        int temp = a[start];
        a[start] = a[end];
        a[end] = temp;
        start++;
        end--;
    }
}

int main() {
    int n, m;
    printf("请输入整数个数:\n");
    scanf("%d", &n);

    int* arr = (int*)malloc(n * sizeof(int));
    printf("请输入 %d 个整数:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    printf("请输入向后移动的位置:\n");
    scanf("%d", &m);

    if (m != 0) {
        reverse(arr, 0, n - 1);
        reverse(arr, 0, m - 1);
        reverse(arr, m, n - 1);
    }

    printf("旋转后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);
    return 0;
}

第69题:

链接:C 练习实例69 | 菜鸟教程

完整代码:

复制代码
#include <stdio.h>
void main()
{
    int num[50],n,*p,j,loop,i,m,k;
    printf("请输入这一圈人的数量:\n");
    scanf("%d",&n);
    p=num;
    //开始给这些人编号
    for (j=0;j<n;j++)
    {
        *(p+j)=j+1;
    }
    i=0;//i用于计数,即让指针后移
    m=0;//m记录退出圈子的人数
    k=0;//k报数1,2,3
    while(m<n-1)//当退出的人数不大于总人数时,即留下的人数至少是一个人
        //这句不能写成m<n,因为假设有8人,当退出了6人时,此时还是进行人数退出,即m++,
        //这时是7<8,剩下的一个人自己喊1,2,3那么他也就退出了,将不会有输出
    {
        if (*(p+i)!=0)//如果这个人的头上编号不是0就开始报数加1,这里采用的方法是报数为3的人头上编号重置为0
        {
            k++;
        }
        if (k==3)
        {    k=0;    //报数清零,即下一个人从1开始报数
            *(p+i)=0;//将报数为3的人编号重置为0
            m++;    //退出人数加1
        }
        i++;      //指针后移
        if (i==n)//这句很关键,如果到了队尾,就要使指针重新指向对头
            //并且它只能放在i++后面,因为只有i++了才有可能i==n
        {
            i=0;
        }
        
        
    }
    printf("现在剩下的人是:");
    for (loop=0;loop<n;loop++)
    {
        if (num[loop]!=0)
        {
            printf("%2d号\n",num[loop]);
        }
    }
    
}

第70题:

链接:C 练习实例70 | 菜鸟教程

完整代码:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

int length(char *s)
{
	int i = 0;
	while (*s != '\0')
	{
		i++;
		s++;
	}
	return i;
}

int main()
{
	char str[100];
	scanf("%s",str);

	int len = length(str);
	printf("%d", len);

	return 0;
}
相关推荐
我是小疯子661 小时前
深入解析C++右值引用与移动语义
java·开发语言·算法
Ethan Wilson1 小时前
VS2019 C++20 模块相关 C1001: 内部编译器错误
开发语言·c++·c++20
郝学胜-神的一滴1 小时前
Python数据封装与私有属性:保护你的数据安全
linux·服务器·开发语言·python·程序人生
悟能不能悟1 小时前
Elastic Stack 中两种主要查询语言 KQL (Kibana Query Language) 和 Lucene 的详细对比和解释。
java·开发语言
源代码•宸2 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
Narrastory2 小时前
手把手实现蚁群算法:从数学原理到代码实践
算法
mit6.8242 小时前
八皇后变题hash|网格dp
算法
bybitq2 小时前
LeetCode-437-路径总和3
算法
赛恩斯2 小时前
kotlin 为什么可以在没有kotlin 环境的安卓系统上运行的
android·开发语言·kotlin