个人学习编程(3-11) 刷题
请输入数组,后翻转
先是输入数组元素的个数,然后再通过int max,min;遍历后比较
if (a[i] > max)
{
max = a[i];
x = i;
}
if (a[i] < min)
{
min = a[i];
y = i;
}
#include <stdio.h>
#include <math.h>
int main(void) {
int num;
int a[100];
printf("请输入你数组元素的个数\n");
scanf("%d",&num);
for (int i = 0; i < num; i++)
{
scanf("%d",&a[i]); //未带&符号
}
int x,y,i;
int *p; //p叫做指针变量;指针是地址,是内存地址
for (p = a; p < a+6; p++)
{
printf("%-4d", *p);
}
int max;
int min;
max = a[0];
for (i = 1;i < num;i++){
if (a[i] > max)
{
max = a[i];
x = i;
}
}
printf("max = %d, x = %d\n",max,x);
min = a[0];
for ( i = 1; i < num; i++)
{
if (a[i] < min)
{
min = a[i];
y = i;
}
}
printf("min = %d, y = %d\n",min,y);
return 0;
}
数组左移n次
输入数组,然后通过左移一次,再通过for遍历
#include <stdio.h>
#include <math.h>
int main(void) {
int a[100];
int num,times;
printf("请输入数组个数: ");
scanf("%d", &num);
printf("请输入移动的次数");
scanf("%d",×);
// 检查输入的有效性
if (num <= 0 || num > 100) {
printf("数组个数无效!\n");
return -1;
}
for (int i = 0; i < num; i++) {
scanf("%d", &a[i]);
}
int *p;
// 将n的计算修改为 num,因为num是实际输入的数组大小
int n = num;
// 执行右移操作 num 次(或可以根据实际需求指定次数)
for (int i = 0; i < times; i++) { // 这里假设我们只做一次右移,如果要多次右移可以调整为 num
p = a + n - 1;
int temp = *p; // 先保存最后一个元素
while (p > a) { // 将每个元素向后移动一位
*p = *(p - 1);
p--;
}
*p = temp; // 将保存的最后一个元素放到第一个位置
}
// 遍历并输出右移后的数组
printf("右移后的数组是: ");
for (p = a; p < a + n; p++) {
printf("%-4d", *p);
}
printf("\n");
return 0;
}