Nowcoder-BC146.添加逗号
题目:对于一个较大的整数 N(1<=N<=2,000,000,000)
比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这个数字每三位加一个逗号,它会变得更加易于朗读。
因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序完成这件事情。
我们的思路是,将这个输入进来的数,从低数位开始一个一个放到一个数组中,这个数组是个char类型的,因为要存放’ , ‘,所以每一位数在存放进去之前还要把它转成字符,而数组的长度是14,因为N的取值范围是(1<=N<=2,000,000,000),还要考虑逗号和’ \0 ';因为是每三位就要放一个逗号,所以用一个count来判断是否满足条件,这个判断条件就是count % 3,当这个值为0,证明就够三位了,就要添加逗号;
int main() { int n = 0, i = 0, count = 0; scanf("%d", &n); char arr[14]; //当n还不为0的时候循环继续 while (n) { //判断是否已经够三位数,并且不能为0 if (count != 0 && count % 3 == 0) { arr[i++] = ','; } //将每一位数转成字符再放进数组 arr[i++] = n % 10 + '0'; count++; n /= 10; } //从后往前打印数组 for (--i; i >= 0; i--) { printf("%c", arr[i]); } return 0; }
Nowcoder-OR63.删除公共字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
我们的思路是,先输入两个字符串,这里用gets输入,然后在遍历第一个字符串str1的同时,判断当前str1的字符是否在第二个字符串中出现过,所以每一个str1的字符判断都要遍历一遍str2,如果在str2中找到了这个字符,就不打印这个字符,如果没找到,就打印;
int func(char* str, char ch) { while (*str) { if (*str == ch) { return 0; } str++; } return 1; } int main() { char str1[100]; char str2[100]; gets(str1); gets(str2); int i = 0; while (str1[i]) { //在str2中找当前str[i]的字符 //找到返回0,不进入if语句,不打印 //找不到返回1,进入if语句打印 if (func(str2, str1[i])) { printf("%c", str1[i]); } //无论找没找到,i遍历下一个字符 i++; } return 0; }