c语言getsum,c语言getchar的用法可以吃回车?

发布时间:2023-01-08

本文目录一览:

  1. c语言:计算正整数n的所有质因子之和作为函数值返回,并输出该值
  2. C语言递归各位数字之和
  3. [在c语言中int getsum是什么意思](#在c语言中int getsum是什么意思)
  4. 怎样用C语言代码写出数组之和?
  5. 用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;
}