要求:输入10个数,统计10个数中,不同的个数。

思路:!!!!很重要

循环遍历需判断的10个数,当往后找不出相同的数时,计数加1.

例:样例1,当循环第一个数时,往后没有1了,计数加1

样例2,当循环第一个数时,往后还有1,直接跳出循环,进行下次判断,循环第二个数,但第二个数还是1,继续跳出循环,直到第5次循环,往后再没有1了,则计数加1.

1
实现1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *a, i, j;
a = (int *)malloc(sizeof(int) * 10); //创建一个int形 10个int大小的存储空间
for (i = 0; i < 10; i++) //输入
scanf("%d", a + i);
int flag = 0; //计数不同个数,初始值为0
for (i = 9; i >= 0; i--) {
for (j = i - 1; j >= 0; j--)
if (*(a + i) == *(a + j))
break;
if (j == -1)
flag++;
}
printf("%d", flag);
return 0;
}

实现2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#define M 10 //数组长度,即需要判断的数据长度
int main()
{
int a[M], sum = 0, flag = 1;
for (int i = 0; i < M; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < M; i++) {
for (int j = i + 1; j < M; j++) {
if (a[i] == a[j]) //循环判断到 最后一个
{
flag = 0;
break;
}
}
if (flag == 1) {
sum++;
}
flag = 1;
}
printf("%d", sum);
return 0;
}

统计字符串相同的个数#

例:aabbbcc

a:2

b:3

c:2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
int main()
{
char str[10];
int sum = 1; //计数,初始为1
gets(str);
for (int i = 0; i < strlen(str); i++) {
for (int j = i + 1; j < strlen(str); j++) {
if (str[i] == str[j]) {
sum++; //循环到相同的,计数加一
}
}
printf("%c:%d\n", str[i], sum);
sum = 1;
}
return 0;
}

思路与上大概一致