XM
作者:互联网
1 ascii的值 'A' 65
2 for 循环终止条件 用*p 表示 取完所有
3 指针 直接++,直接加了对应类型的地址长度
4 scanf("%s",bfr); 输入 %d整形 %s 字符串 %c 字符。内容给到后面的数组里
scanf 后面一定要跟地址!!!
scanf 不能输入空格
统计字母 直接用一个数组去统计
描述
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
int countBitDiff(int m, int n ) {
int i, cnt = 0;
for(i = 0;i<32;i++)
{
if(((n>>i)&1) != ((m>>i)&1))
{
cnt++;
}
}// write code here
return cnt;
}
描述
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。输入描述:
第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。输出描述:
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。#include "stdio.h"
#include "stdlib.h"
int main() {
char bfr[10001];
int T;
scanf("%d",&T);
int letterCount[26];
while(T--)
{
scanf("%s",bfr);
memset(letterCount,0,26*sizeof(int));
char* p;
for(p=bfr;*p;p++)
{
letterCount[*p-'A']++;
}
int numCount[10];
/*
0 ZERO Z 2->0
1 ONE O 3->1
2 TWO W 4->2
3 THREE R 5->3
4 FOUR U 6->4
5 FIVE F 7->5
6 SIX X 8->6
7 SEVEN S 9->7
8 EIGHT G 0->8
9 NINE I 1->9
ABCDEFG HIJ K L M N O P Q R S T U V W X Y Z
0123456 789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
*/
numCount[0] = letterCount[25];
numCount[2] = letterCount[22];
numCount[4] = letterCount[20];
numCount[6] = letterCount[23];
numCount[8] = letterCount[6];
numCount[1] = letterCount[14]-numCount[0]-numCount[2]-numCount[4];
numCount[3] = letterCount[17]-numCount[0]-numCount[4] ;
numCount[5] = letterCount[5]-numCount[4];
numCount[7] = letterCount[21]-numCount[5];
numCount[9] = (letterCount[13]-numCount[1]-numCount[7])/2;
while(numCount[8]--) printf("%c",'0');
while(numCount[9]--) printf("%c",'1');
while(numCount[0]--) printf("%c",'2');
while(numCount[1]--) printf("%c",'3');
while(numCount[2]--) printf("%c",'4');
while(numCount[3]--) printf("%c",'5');
while(numCount[4]--) printf("%c",'6');
while(numCount[5]--) printf("%c",'7');
while(numCount[6]--) printf("%c",'8');
while(numCount[7]--) printf("%c",'9');
printf("\n");
}
}
描述
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子int main() {
int t,letterlen = 0,wordlen = 1;
char* p;
char input[1000];
int wordnum[50];
int wordcnt = 0;
gets(input);
wordnum[0]=0;
for(p=input;*p;p++)
{
if(*p == ' ')
{
wordnum[++wordcnt] = letterlen+1;
wordlen++;
}
letterlen++;
}
input[letterlen] = ' ';
for(t= wordlen-1;t>=0;t--)
{
while(input[wordnum[t]]!=' ')
{
printf("%c",input[wordnum[t]++]);
}
printf("%c",' ');
}
}
标签:XM,int,--,while,printf,numCount,letterCount 来源: https://www.cnblogs.com/dearrusunflower/p/16210017.html