8.字符统计:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符
的个数。
include <stdio.h>
void main() {
int letters = 0, spaces = 0, digits = 0, others = 0;
char c;
while ((c = getchar()) != '\n') {
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
letters++;
else if (c == ' ')
spaces++;
else if (c >= '0' && c <= '9')
digits++;
else
others++;
}
printf("l=%d,d=%d,s=%d,o=%d", letters, digits, spaces, others);
}
9.报数问题:有 n 个人围成一圈,顺序排号,从第一个开始报数(从 1 到 3 报数),
凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。
include <stdio.h>
void main() {
int a[1000], n, t, c, i;
scanf("%d", &n);
t = n;
for (i = 0; i < t; i++) {
a[i] = i + 1;
}
for (i = c = 0; n > 1; i++) {
/ 从头开始吗 /
if (i == t) {
i = 0;
}
/ 退圈的不管 /
if (a[i] != 0) {
c++;
}
/ 数到三退圈 /
if (c == 3) {
a[i] = 0;
c = 0;
n--;
}
}
for (i = 0; i < t; i++) {
if (a[i] != 0) {
printf("%d", a[i]);
}
}
}
10.数据加密:某个公司采用公用电话传递数据,数据是四位的整数,在传递过
程中是加密的,加密规则如下:每位数字都加上 5,然后用和除以 10 的余数代
替该数字,再将第一位和第四位交换,第二位和第三位交换。然后按照相反的顺
序依次输出。
include <stdio.h>
define N 4
void main() {
int a, i, t, data[N];
scanf("%d", &a);
data[0] = a % 10;
data[1] = a / 10 % 10;
data[2] = a / 100 % 10;
data[3] = a / 1000;
for (i = 0; i < N; i++) {
data[i] += 5;
data[i] %= 10;
}
for (i = 0; i < N / 2; i++) {
t = data[i];
data[i] = data[N - 1 - i];
data[N - 1 - i] = t;
}
for (i = 0; i < N; i++) {
printf("%d", data[N - 1 - i]);
}
}
11.一维数组:输入 n 个(1<n<=10)正整数并保存到数组中,求出最大值、最小
值、平均值以及最大值、最小值在数组中的下标分别是多少。
include <stdio.h>
void main() {
int i, n, max = 0, min = 0, sum = 0, a[10];
float avg;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
sum += a[i];
}
avg = (float) sum / n;
for (i = 0; i < n; i++) {
if (a[i] > a[max])
max = i;
if (a[i] < a[min])
min = i;
}
printf("max=%d,index=%d\n", a[max], max);
printf("min=%d,index=%d\n", a[min], min);
printf("avg=%.2f\n", avg);
}