编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围:
输入一行没有空格的字符串。
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
abc
3
aaa
1
#include <stdio.h> #include <stdbool.h> int main(int argc, char const *argv[]) { bool flag[128] = {false}; char ch; unsigned char count; while (scanf("%c", &ch) && ch != '\n') { if (flag[ch] == false) { flag[ch] = true; count++; } } printf("%d", count); return 0; }
#include <stdio.h> int main() { int hash[127] = {0}; int i = 0; char input; int count; while (scanf("%c", &input) != EOF) { if (input == '\n') break; if (hash[input] == 1) { NULL; } else { hash[input] = 1; } } for (int i = 0; i < 127; i++) { if (hash[i] == 1) count++; } printf("%d", count); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char value[501] = {0}; char array[128] = {0}; int ValueLen = 0; int index = 0; int num = 0; scanf("%s", &value[0]); ValueLen = strlen(value); for(index = 0 ; index < ValueLen; index++) { if(array[value[index]] == 0) { num++; array[value[index]] = 1; } } printf("%d\n",num); return 0; }
#include "stdio.h" #include "string.h"、 //思路:首先判断str数组的元素是否在范围内,如果在,则将其值对应的existed的位置的元素设为1,最后统计existed里有多少个1. int main() { char str[500] = {0}, existed[500] = {2}; scanf("%s", str); int i,length = strlen(str),a,count = 0,b; for (i = 0; i < length; i++) { if (str[i] >= 0 && str[i] <= 127) { existed[(int) str[i]] = 1; } } for(i = 0; i < 128;i++) { if (existed[i] == 1) { count++; } } printf("%d",count); }
#include <stdio.h> #include <string.h> int main() { char n[500]; char q[128]={0}; int count=0; while (scanf("%s", n) != EOF) { for(int i=0;i<strlen(n);i++) { if(q[(int)n[i]] != n[i]) { q[(int)n[i]]=n[i]; count++; } } printf("%d",count); } return 0; }
#include <stdio.h> #include <string.h> char InputString[500]; int CharNum[128] = {0}; int main() { scanf("%s",InputString); int VariNum = 0; for(int i = 0;i < strlen(InputString);i++) { int m = (int)InputString[i]; char n = InputString[i]; if((int)InputString[i] >= 0 &&((int)InputString[i] <= 127)) { CharNum[(int)InputString[i]] = 1; } } for(int i = 0;i<128;i++) { if(CharNum[i] == 1) VariNum++; } printf("%d",VariNum); }
#include <stdio.h> #include <stdlib.h> #include<string.h> int main() { char arr[501]={0}; int c=0; fgets(arr, sizeof(arr), stdin);//输入字符串 int len=strlen(arr);//计算长度,循环的次数 for(int i=0;i<len;i++) { if((arr[i]>=0&&arr[i]<=127)&&(arr[i]!='\n'))//换行符号要排除 { c++;//出现第一次 for(int j=i+1;j<len;j++) { if(arr[j]==arr[i]) { c--;//第二次出现 break;//跳出小循环 } } } } printf("%d",c); return 0; }
#include <stdio.h> #include <string.h> int main() { char str[500], hash[127] = { NULL }; int i, b, cnt = 0, k; scanf("%s", str); for (i = 0; i < strlen(str); i++) { k = str[i]/17+str[i] % 17; while (hash[k] != NULL && hash[k] != str[i]) { k++; }//线性探测再散列 if (hash[k] != str[i]&&(str[i]>=0&&str[i]<=127)) { hash[k] = str[i]; cnt++; } } printf("%d", cnt); return 0; }
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int main() { char arr[501] = { 0 }; scanf("%s", arr); int sz = strlen(arr); int count = 0; int i = 0; int j = 0; for ( i = 0; i < sz; i++) { if ((arr[i] >= 0 && arr[i] <= 127) && (arr[i] != '\n')) count++; for ( j = i + 1; j < sz; j++) { if (arr[i] == arr[j]) { count--; break; } } } printf("%d", count); return 0; }本人CSDN:Chris·Bosh_-CSDN博客