C语言中一个正整数偶数位求和
时间: 2023-05-30 16:07:05 浏览: 67
以下是一个求解正整数偶数位数字之和的C语言程序:
```c
#include <stdio.h>
int main()
{
int num, digit, sum = 0, count = 1;
printf("请输入一个正整数:");
scanf("%d", &num);
while (num > 0)
{
digit = num % 10;
if (count % 2 == 0)
{
sum += digit;
}
num /= 10;
count++;
}
printf("该正整数偶数位数字之和为:%d\n", sum);
return 0;
}
```
程序的思路是利用循环获取每一个数字,如果该数字位于偶数位上,就将其加入到一个变量sum中,最终输出sum的值即为正整数偶数位数字之和。
相关问题
输入一个3位的正整数,求其各位数字之和的c语言代码
以下是一个求三位正整数各位数字之和的C语言代码:
```c
#include<stdio.h>
int main()
{
int num, sum = 0;
printf("请输入一个3位正整数:");
scanf("%d", &num);
while(num > 0)
{
sum += num % 10;
num /= 10;
}
printf("各位数字之和为:%d", sum);
return 0;
}
```
首先,通过`scanf`函数获取用户输入的三位正整数。然后,使用`while`循环将该数每一位的数字取出并求和。具体做法是:每次将该数模10(即取出该数的个位数),并将结果加到`sum`变量中,然后将该数整除10(即去掉个位数),直到该数变成0为止。最后,输出各位数字之和的结果。
超长正整数的加法,设计一个程序实现两个任意长的整数求和运算,使用c语言运算
思路:
1. 读入两个超长正整数,可以使用字符串读入,将字符串转换为整数数组。
2. 对两个整数数组进行加法运算,从低位到高位依次相加,每一位的和取模10得到该位的结果,进位则在下一位加上1。
3. 将相加后的结果转换为字符串输出。
代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 定义最大长度
int main() {
char str1[MAX_LEN + 1], str2[MAX_LEN + 1]; // 定义字符数组
int num1[MAX_LEN + 1], num2[MAX_LEN + 1], result[MAX_LEN + 1]; // 定义整数数组
int len1, len2, len, carry = 0; // len1和len2分别为两个整数的长度,len为相加后的长度,carry为进位数
int i, j; // 循环计数器
// 读入两个超长正整数
printf("请输入第一个整数:");
scanf("%s", str1);
printf("请输入第二个整数:");
scanf("%s", str2);
len1 = strlen(str1);
len2 = strlen(str2);
// 将字符数组转换为整数数组
for (i = 0; i < len1; i++) {
num1[i] = str1[len1 - i - 1] - '0';
}
for (i = 0; i < len2; i++) {
num2[i] = str2[len2 - i - 1] - '0';
}
// 对两个整数数组进行加法运算
len = len1 > len2 ? len1 : len2; // 取两个数中较大的长度
for (i = 0; i < len; i++) {
result[i] = num1[i] + num2[i] + carry; // 相加并加上进位
carry = result[i] / 10; // 计算进位
result[i] %= 10; // 取模得到该位的结果
}
if (carry > 0) { // 如果最高位有进位
result[len++] = carry; // 将进位加到最高位
}
// 将整数数组转换为字符串
printf("两数之和为:");
for (i = len - 1; i >= 0; i--) {
printf("%d", result[i]);
}
printf("\n");
return 0;
}
```