编写程序,输入一串以逗号分隔的字符串,结束输入后,取出其中的所有整数。输出所有个位数是1、4、7的个数和个位数是2、5、8的个数。例如: 输入的如果是:11,a,15,13,5,b,18,20,c,2 则输出: 个位是1、4、7的个数=1 个位是2、5、8的个数=4
时间: 2024-02-18 12:59:55 浏览: 29
好的,根据您的要求,我已经编写了一个程序来解决这个问题,以下是代码和注释:
```python
# 定义两个变量来记录个位数是1、4、7的个数和个位数是2、5、8的个数
count_147 = 0
count_258 = 0
# 询问用户输入一串以逗号分隔的字符串
input_str = input("请输入一串以逗号分隔的字符串:")
# 将字符串以逗号为分隔符分割成一个列表
input_list = input_str.split(",")
# 遍历列表中的每个元素
for elem in input_list:
# 如果元素能够转换为整数
if elem.isdigit():
# 取出这个整数的个位数
units = int(elem) % 10
# 如果个位数是1、4、7,那么计数器加1
if units in [1, 4, 7]:
count_147 += 1
# 如果个位数是2、5、8,那么计数器加1
elif units in [2, 5, 8]:
count_258 += 1
# 输出结果
print("个位是1、4、7的个数={}".format(count_147))
print("个位是2、5、8的个数={}".format(count_258))
```
您可以将以上代码复制到 Python 环境中执行,也可以直接在这里运行,输入一串字符串后按回车即可得到结果。
相关问题
c语言编写函数,对于任意输入一个整数,转换为千分位分隔的字符形式
可以编写以下函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void int_to_thousands(int n, char *result) {
char buf[32];
sprintf(buf, "%d", n); // 将整数转换为字符串
int len = strlen(buf);
int k = len % 3; // 计算第一组数字的位数
for (int i = 0; i < len; i++) {
if (i > 0 && (i - k) % 3 == 0) {
*result++ = ','; // 每隔三位添加一个逗号
}
*result++ = buf[i];
}
*result = '\0'; // 字符串末尾添加结束符
}
int main() {
int n = 123456789;
char result[32];
int_to_thousands(n, result);
printf("%s\n", result); // 输出结果:123,456,789
return 0;
}
```
这个函数接受一个整数和一个字符数组指针,将整数转换为千分位分隔的字符形式后存储到字符数组中。在函数内部,先将整数转换为字符串,然后遍历字符串的每个字符,每隔三个字符就添加一个逗号。最后将结果存储到字符数组中并添加结束符。
编写c语言函数,对于任意输入的一个整数,转换为千分位分隔的字符形式,在主函数中调用并输出。
以下是一个实现千分位分隔的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* thousandSeparator(int n) {
char *num_str = malloc(sizeof(char) * 21); // 最大的整数范围是2^64,长度为20位,再加上字符串结束符'\0'
sprintf(num_str, "%d", n); // 将整数转换为字符串
int len = strlen(num_str);
if (len <= 3) { // 如果整数位数小于等于3,则不需要分隔
return num_str;
}
int dot_count = (len - 1) / 3; // 计算需要插入几个逗号
int new_len = len + dot_count; // 计算新字符串的长度
char *new_str = malloc(sizeof(char) * (new_len + 1)); // 为新字符串分配空间
int j = 0;
for (int i = 0; i < len; i++) {
if (i > 0 && (len - i) % 3 == 0) { // 每隔三位插入一个逗号
new_str[j++] = ',';
}
new_str[j++] = num_str[i]; // 将原字符串的字符复制到新字符串中
}
new_str[new_len] = '\0'; // 在新字符串的末尾添加字符串结束符
free(num_str); // 释放原字符串的内存空间
return new_str; // 返回新字符串
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
char *num_str = thousandSeparator(n); // 调用千分位分隔函数
printf("千分位分隔后的结果为:%s\n", num_str);
free(num_str); // 释放新字符串的内存空间
return 0;
}
```
这个函数使用 sprintf 将整数转换为字符串,然后计算需要插入几个逗号,再创建一个新的字符串,将原字符串的字符复制到新字符串中,并在每隔三位插入一个逗号。最后返回新字符串。在主函数中,我们可以通过调用这个函数来将任意输入的整数转换为千分位分隔的字符形式并输出。