本文目录一览:
- c语言:计算正整数n的所有质因子之和作为函数值返回,并输出该值
- C语言递归各位数字之和
- [在c语言中int getsum是什么意思](#在c语言中int getsum是什么意思)
- 怎样用C语言代码写出数组之和?
- 用C语言输入3个字符串,并找出其中的最大值?
c语言:计算正整数n的所有质因子之和作为函数值返回,并输出该值
#include "stdio.h"
main()
{
int add();
int n, sum;
scanf("%d", n);
sum = add(n);
printf("%d", sum);
}
int add(int p)
{
int i, sum1 = 0;
for (i = 2; i < p; i++)
{
if (p % i == 0)
{
sum1 += i;
}
}
return (sum1);
}
运行结果:输入6,输出5(2+3=5)
C语言递归各位数字之和
int my_sum(int t)
{
int a, sum = 0;
a = t % 10;
if (t / 10 == 0)
{
return t;
}
else
{
sum = a + my_sum(t / 10);
}
return sum;
}
int main()
{
int a;
int sum;
printf("请输入一个数\n");
scanf("%d", a);
sum = my_sum(a);
printf("求和并输出[%d]\n", sum);
}
在c语言中int getsum是什么意思
定义一个int型(即整型)变量,变量名为getsum,一般会把两者的意思结合起来,getsum或者是从程序或者输入的总数的意思。
怎样用C语言代码写出数组之和?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int getSum(const char* inputs)
{
int length = strlen(inputs);
int sum = 0;
int factor = 0;
int i = 0;
for (i = 0; i < length; ++i)
{
switch (inputs[i])
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
factor = factor * 10 + inputs[i] - '0';
break;
case ' ':
sum = sum + factor;
factor = 0;
break;
default:
break;
}
}
return sum;
}
int main(int argc, char const *argv[])
{
char inputs[4096] = {0};
printf("Please input your numbers, divide by SPACE(s).\n");
scanf("%s", inputs);
printf("\nThe sum is : %d\n", getSum(inputs));
return 0;
}
用C语言输入3个字符串,并找出其中的最大值?
什么最大?字符串长度?ASC码总和?还是说是纯数字的字符串,作为数字来比较大小? 我把几种情况都写了。你参考吧。 多个相等的最大值,只返回其中1个。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int getsum(char *str); // 获取字符串ASC总和
char *getmax(int num[3]); // 3个整数型的数字比较,返回最大的那个数组下标 如果多个最大值返回多个下标(用字符串保存)
int getmax2(char str[][10]); // 3个字符型的数字比较,返回最大的那个数组下标
int main()
{
char str[3][10];
int indext;
int len[3]; // 3个字符串长度
int sum[3]; // 3个字符串的ASC码总和
printf("测试:输入3个字符串(最多9个字符):\n");
scanf("%s", str[0][0]);
scanf("%s", str[1][0]);
scanf("%s", str[2][0]);
len[0] = strlen(str[0][0]); len[1] = strlen(str[1][0]); len[2] = strlen(str[2][0]); // 获取3个字符串长度
sum[0] = getsum(str[0][0]); sum[1] = getsum(str[1][0]); sum[2] = getsum(str[2][0]); // 获取3个字符串的ASC码总和
indext = getmax(len)[0] - '0';
printf("字符串长度最大的是:%s\n", str[indext][0]);
indext = getmax(sum)[0] - '0';
printf("ASC码值和最大的是:%s\n", str[indext][0]);
printf("作为数字比最大的是:%s\n", str[getmax2(str)][0]);
return 1;
}
int getsum(char *str) // 获取字符串ASC总和
{
int len = strlen(str), i, sum = 0;
for (i = 0; i < len; i++)
{
sum = sum + (int)str[i];
}
return sum;
}
char *getmax(int num[3]) // 3个整数型的数字比较,返回最大的那个数组下标 如果多个最大值返回多个下标
{
char *renum = (char *)malloc(sizeof(char) * 4);
memset(renum, 0, 4);
if (num[0] >= num[1] && num[0] >= num[2])
{
if (renum[0] == 0)
renum[0] = '0';
else if (renum[1] == 0)
renum[1] = '0';
else if (renum[2] == 0)
renum[2] = '0';
}
if (num[1] >= num[2] && num[1] >= num[0])
{
if (renum[0] == 0)
renum[0] = '1';
else if (renum[1] == 0)
renum[1] = '1';
else if (renum[2] == 0)
renum[2] = '1';
}
if (num[2] >= num[1] && num[2] >= num[0])
{
if (renum[0] == 0)
renum[0] = '2';
else if (renum[1] == 0)
renum[1] = '2';
else if (renum[2] == 0)
renum[2] = '2';
}
return renum;
}
int getmax2(char str[][10]) // 3个字符型的数字比较,返回最大的那个数组下标
{
int len[3], i, maxlen, num[3];
char *renum = NULL;
len[0] = strlen(str[0][0]);
len[1] = strlen(str[1][0]);
len[2] = strlen(str[2][0]);
if (len[0] > len[1] && len[0] > len[2])
return 0;
if (len[1] > len[2] && len[1] > len[0])
return 1;
if (len[2] > len[1] && len[2] > len[0])
return 2;
maxlen = len[0];
if (maxlen < len[1])
maxlen = len[1];
if (maxlen < len[2])
maxlen = len[2];
for (i = 0; i < maxlen; i++)
{
if (maxlen - len[0] == 0)
num[0] = str[0][i] - '0';
else
num[0] = -1;
if (maxlen - len[1] == 0)
num[1] = str[1][i] - '0';
else
num[1] = -1;
if (maxlen - len[2] == 0)
num[2] = str[2][i] - '0';
else
num[2] = -1;
renum = getmax(num);
if (strlen(renum) == 1) // 如果当前位比较,得到唯一最大值,则返回下标
return renum[0] - '0';
if (strlen(renum) > 1 && i == maxlen - 1) // 如果已比较到最后1位,且数值相等,则返回第一个最大值下标
return renum[0] - '0';
}
return -1;
}