输入一个整数n(1<=n<=10),然后输入对应n位数的整数,求其各位数字的和。
时间: 2024-06-13 21:09:13 浏览: 16
以下是Python代码实现,可以求出输入的n位数各位数字的和:
```python
n = int(input()) # 输入n
num = input() # 输入n位数
sum = 0 # 初始化数字和为0
for i in range(n):
sum += int(num[i]) # 将每一位数字加起来
print(sum) # 输出数字和
```
相关问题
用C语言编程:读入一个正整数 n,计算其各位数字之和, n 小于 10^100
好的,以下是用C语言编写的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char n[101];
scanf("%s", n);
int len = strlen(n), sum = 0;
for (int i = 0; i < len; i++) {
sum += n[i] - '0';
}
printf("%d", sum);
return 0;
}
```
代码的思路是先读入一个正整数 n,由于 n 的位数可能非常大,所以我们将其存储在一个 char 类型的数组中。然后使用循环计算其各位数字之和,由于每一位数字在 char 类型数组中的存储值是对应的字符的 ASCII 码值,所以我们需要将其转换成对应的数字值,这里使用了 `n[i] - '0'` 的方法,最后将和输出。
你可以将上面的代码复制到你的 C 语言编译器中运行,并输入一个符合要求的正整数 n 查看结果。
输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
暴力解法:
直接使用系统自带的函数将十六进制转换为十进制,再将十进制转换为二进制。代码如下:
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
int main() {
int n;
cin >> n;
for(int i=0; i<n; i++) {
string s;
cin >> s;
int num = stoi(s, 0, 16);
bitset<32> bin(num);
cout << bin.to_string().substr(bin.to_string().find('1')) << endl;
}
return 0;
}
其中,stoi函数可以将字符串转换为整数,第二个参数表示字符串的起始位置,第三个参数表示转换的进制。bitset可以将整数转换为二进制,并且可以指定位数,这里我们指定为32位。最后将二进制字符串截取掉前面的0输出即可。
优化解法:
由于题目要求将十六进制转换为二进制,我们可以直接将十六进制的每一位转换为对应的四位二进制,组成一个二进制字符串。代码如下:
#include <iostream>
#include <string>
using namespace std;
string hex2bin(char c) {
switch(c) {
case '0': return "0000";
case '1': return "0001";
case '2': return "0010";
case '3': return "0011";
case '4': return "0100";
case '5': return "0101";
case '6': return "0110";
case '7': return "0111";
case '8': return "1000";
case '9': return "1001";
case 'A': return "1010";
case 'B': return "1011";
case 'C': return "1100";
case 'D': return "1101";
case 'E': return "1110";
case 'F': return "1111";
}
return "";
}
int main() {
int n;
cin >> n;
for(int i=0; i<n; i++) {
string s;
cin >> s;
string bin;
for(int j=0; j<s.length(); j++) {
bin += hex2bin(s[j]);
}
cout << bin.substr(bin.find('1')) << endl;
}
return 0;
}
这里我们定义了一个函数hex2bin,将十六进制的每个字符转换为对应的四位二进制字符串。然后遍历输入的每个十六进制数的每一位,将其转换为对应的二进制字符串,最后将所有二进制字符串拼接起来即可。注意要将二进制字符串截取掉前面的0输出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)