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;
}
相关推荐
en.en..2 小时前
Linux 进程退出exit(函数)
java·开发语言·算法
Cx330❀2 小时前
【Qt 进阶指南】详解 Qt 常用标准对话框与主窗口组件架构
开发语言·qt·ui·性能优化·架构·图形渲染
Light Gao2 小时前
Encoder 与 Decoder 详解:从 Embedding 到 Seq2Seq 的完整数据流
java·开发语言·embedding
HZZD_HZZD2 小时前
弱网下CoAP还省吗?合众致达Cat.1电表90天实测:MQTT重连流量占52%、续航差距从38%拉大到73%
开发语言·物联网·php·腾讯云
web打印社区2 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
小师兄吃牛肉2 小时前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
All for pursuit.2 小时前
【回溯-2】22.括号生成
数据结构·c++·算法·leetcode
longlongzihan2 小时前
LeetCode 1004.最大连续1的个数III 滑动窗口及动态规划题解
c++·算法·leetcode·dp·滑动窗口
phltxy2 小时前
C 语言文件操作:让数据从内存走向持久化
c语言·网络·数据库
Evand J2 小时前
【MATLAB例程】三维快速扩展随机树(RRT)路径规划与到达角(AOA)、到达时间差(TDOA)融合定位,附下载链接
开发语言·matlab·代码·定位·例程