第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题:

完整代码:
#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题:
分析:记录下来最大值和最小值再的位置,然后交换就行。
完整代码:
#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题:

完整代码:
#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题:

完整代码:
#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题:
完整代码:
#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;
}