阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
第五章 数 组
第一节 一维数组
2034【例5.1】反序输出
#include <stdio.h>
int main()
{
int a[105], ai = 0, x;
while(scanf("%d", &x) != EOF)
a[ai++] = x;
for(int i = ai - 1; i >= 0; --i)
printf("%d ", a[i]);
return 0;
}
2035【例5.2】平移数据
#include <stdio.h>
int main()
{
int a[105], n, x, temp;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &x);
a[i] = x;
}
temp = a[0];
for(int i = 1; i < n; ++i)
a[i-1] = a[i];
a[n-1] = temp;
for(int i = 0; i < n; ++i)
printf("%d ", a[i]);
return 0;
}
2036【例5.3】开关门
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a[1005] = {0};
int n;
scanf("%d", &n);
for(int i = 2; i <= n; ++i)
for(int j = 1; j <= n; ++j)
if (j % i == 0)
a[j] = a[j] ? false : true;
for(int j = 1; j <= n; ++j)
if(a[j] == false)
printf("%d ", j);
return 0;
}
2037【例5.4】约瑟夫问题
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool isOut[1005] = {0};
int n, m, p = 0;
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; ++i)
{
for(int j = 0; j < m-1; ++j)
{
while(isOut[p] == true)
p = (p+1)%n;
p = (p+1)%n;
}
while(isOut[p] == true)
p = (p+1)%n;
isOut[p] = true;
printf("%d ", p+1);
}
return 0;
}
2038【例5.5】最大数位置
#include <stdio.h>
int main()
{
int n, a[1005], mxi = 1;
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
for(int i = 1; i <= n; ++i)
{
if(a[i] > a[mxi])
mxi = i;
}
printf("%d", mxi);
return 0;
}
2039【例5.6】冒泡排序
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int n, a[25];
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
for(int i = 1; i <= n-1; ++i)
for(int j = 1; j <= n-i; ++j)
{
if(a[j] < a[j+1])
swap(&a[j], &a[j+1]);
}
for(int i = 1; i <= n; ++i)
printf("%d\n", a[i]);
return 0;
}
2040【例5.7】筛选法找质数
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int main()
{
bool isPrime[1005] = {};
int n;
scanf("%d", &n);
for(int i = 2; i <= n; ++i)
isPrime[i] = true;
for(int i = 2; i <= (int)sqrt(n); ++i)
{
if(isPrime[i])
{
for(int j = 2*i; j <= n; j += i)
isPrime[j] = false;
}
}
for(int i = 2; i <= n; ++i)
{
if(isPrime[i])
printf("%d\n", i);
}
return 0;
}
1102与指定数字相同的数的个数
#include <stdio.h>
int main()
{
int a[105], n, m, ct = 0;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
scanf("%d", &m);
for(int i = 0; i < n; ++i)
{
if(a[i] == m)
ct++;
}
printf("%d\n", ct);
return 0;
}
1103陶陶摘苹果
#include <stdio.h>
int main()
{
int a[15], h, ct = 0;
for(int i = 1; i <= 10; ++i)
scanf("%d", &a[i]);
scanf("%d", &h);
for(int i = 1; i <= 10; ++i)
{
if(h + 30 >= a[i])
ct++;
}
printf("%d", ct);
return 0;
}
1104计算书费
#include <stdio.h>
int main()
{
float a[10]={28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65};
float sum = 0, num;
for(int i = 0; i < 10; ++i)
{
scanf("%f", &num);
sum += a[i] * num;
}
printf("%.1f", sum);
return 0;
}
1105数组逆序重存放
#include <stdio.h>
int main()
{
int n, a[105];
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
for(int i = n-1; i >= 0; --i)
printf("%d ", a[i]);
return 0;
}
106年龄与疾病
#include <stdio.h>
int main()
{
int n, age, r[4] = {0};
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &age);
if(age >= 0 && age <= 18)
r[0]++;
else if (age >= 19 && age <= 35)
r[1]++;
else if (age >= 36 && age <= 60)
r[2]++;
else
r[3]++;
}
for(int i = 0; i < 4; ++i)
printf("%.2lf%%\n", (double)r[i] / n * 100);
return 0;
}
1107校门外的树
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a[10005];
int l, m, start, end, s = 0;
scanf("%d %d", &l, &m);
for(int i = 0; i <= l; ++i)
a[i] = true;
for(int i = 0; i < m; ++i)
{
scanf("%d %d", &start, &end);
for(int j = start; j <= end; ++j)
a[j] = false;
}
for(int i = 0; i <= l; ++i)
{
if(a[i])
s++;
}
printf("%d", s);
return 0;
}
1108向量点积计算
#include <stdio.h>
int main()
{
int a[1005], b[1005], n, sum = 0;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
for(int i = 0; i < n; ++i)
scanf("%d", &b[i]);
for(int i = 0; i < n; ++i)
sum += a[i]*b[i];
printf("%d", sum);
return 0;
}
1109开关灯
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a[5005] = {false};
int n, m;
scanf("%d%d", &n, &m);
for(int i = 2; i <= m; ++i)
{
for(int j = 1; j <= n; ++j)
{
if (j % i == 0)
{
if(a[j])
a[j] = false;
else
a[j] = true;
}
}
}
bool isFirst = true;
for(int j = 1; j <= n; ++j)
{
if(a[j] == false)
{
if (isFirst)
isFirst = false;
else
printf(",");
printf("%d", j);
}
}
return 0;
}
1110查找特定的值
#include <stdio.h>
int main()
{
int n, a[10005], x;
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
scanf("%d", &x);
for(int i = 1; i <= n; ++i)
{
if(a[i] == x)
{
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
1111不高兴的津津
#include <stdio.h>
int main()
{
int a[10], in, out, maxDay = 1, maxTime = 0;
for(int i = 1; i <= 7; ++i)
{
scanf("%d%d", &in, &out);
a[i] = in + out;
}
for(int i = 1; i <= 7; ++i)
{
if(a[i] > maxTime)
{
maxTime = a[i];
maxDay = i;
}
}
if(maxTime <= 8)
printf("0");
else
printf("%d", maxDay);
return 0;
}
1112最大值和最小值的差
#include <stdio.h>
int main()
{
int mx = -10005, mn = 10005, n, a;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &a);
if(a > mx)
mx = a;
if(a < mn)
mn = a;
}
printf("%d", mx - mn);
return 0;
}
1113不与最大数相同的数字之和
#include <stdio.h>
int main()
{
int a[105], n, mx = -1000000, s = 0;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &a[i]);
if(a[i] > mx)
mx = a[i];
}
for(int i = 0; i < n; ++i)
{
if(a[i] != mx)
s += a[i];
}
printf("%d", s);
return 0;
}
1114白细胞计数
#include <stdio.h>
#include <math.h>
int main()
{
int n, min_i, max_i;
double a[305], ave = 0, dmax = 0;
scanf("%d", &n);
min_i = max_i = 0;
for(int i = 0; i < n; ++i)
{
scanf("%lf", &a[i]);
if(a[i] > a[max_i])
max_i = i;
if(a[i] < a[min_i])
min_i = i;
}
for(int i = 0; i < n; ++i)
ave += a[i];
ave = (ave - a[max_i] - a[min_i]) / (n - 2);
for(int i = 0; i < n; ++i)
{
if(i != max_i && i != min_i)
{
if(fabs(a[i] - ave) > dmax)
dmax = fabs(a[i] - ave);
}
}
printf("%.2lf %.2lf", ave, dmax);
return 0;
}
1115直方图
#include <stdio.h>
int main()
{
int a[10005] = {0}, n, num, fmax = 0;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &num);
a[num]++;
if(num > fmax)
fmax = num;
}
for(int i = 0; i <= fmax; ++i)
printf("%d\n", a[i]);
return 0;
}
1116最长平台
#include <stdio.h>
int main()
{
int n, len = 0, maxLen = 0, lastNum = -1, num;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &num);
if(num == lastNum)
len++;
else
{
if(len > maxLen)
maxLen = len;
lastNum = num;
len = 1;
}
}
if(len > maxLen)
maxLen = len;
printf("%d\n", maxLen);
return 0;
}
1117整数去重
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool isExist[20005] = {0};
int n, num;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
{
scanf("%d", &num);
if(isExist[num] == false)
{
printf("%d ", num);
isExist[num] = true;
}
}
return 0;
}
1118铺地毯
#include <stdio.h>
typedef struct Carpet
{
int xmin, xmax, ymin, ymax;
} Carpet;
void initCarpet(Carpet *carpet, int a, int b, int g, int k)
{
carpet->xmin = a;
carpet->ymin = b;
carpet->xmax = a + g;
carpet->ymax = b + k;
}
int isPointInCarpet(Carpet *carpet, int x, int y)
{
return x >= carpet->xmin && x <= carpet->xmax && y >= carpet->ymin && y <= carpet->ymax;
}
int main()
{
int n, a, b, g, k, x, y;
Carpet carp[10005];
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
{
scanf("%d %d %d %d", &a, &b, &g, &k);
initCarpet(&carp[i], a, b, g, k);
}
scanf("%d %d", &x, &y);
for(int i = n; i >= 1; --i)
{
if(isPointInCarpet(&carp[i], x, y))
{
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |