题目:对于一个较大的整数 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;
}
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”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;
}