m0_62781763 2021-11-09 23:49 采纳率: 75%
浏览 96
已结题

讲c++代码转换为c语言代码 只需要进行部分修改有悬赏

将如下两个c++代码转化为c语言的代码(大部分都已经写好了 就是有的我搞忘记怎么把c++改成c语言的代码了 希望能直接把完整代码解答出来)
第一个如下
#include <stdio.h>
#include <math.h>
#include
#include
using namespace std;
void countNumber (string str)
{
int Caps=0, Lows=0, Num= 0,Spa=0, Char=0;
int len = str.length();
for (int i=0; i < len; i++)
{
if (str[i]>='a'&&str[i]<='z')
{
Lows += 1;
}
else if (str[i]>='A'&&str[i]<='Z')
{
Caps += 1;
}
else if (str[i]>='0'&&str[i]<='9')
{
Num += 1;
}
else if (str[i]==' ')
{
Spa += 1;
}
else
{
Char += 1;
}
}
cout << Caps << ' ' << Lows << ' ' << Num << ' '<< Spa << ' ' << Char << endl;
}

int compare (string str)
{
int l = 0, idx = 0, r, leftStr = 0, rightStr = 0, len = str.length();
int res = 0;
while (str[idx] != ' ')
{
idx += 1;
}
r = idx + 1;
while (l < idx && r < len)
{
res = res + int(str[l]) - int(str[r]);
l += 1;
r += 1;
}
cout << res << endl;
return res;
}

void DEC (int Key, string str)
{
int len = str.length();
string str_;
for (int i = 0; i < len; i++)
{
if (str[i]>='A'&&str[i]<='Z')
{
int ASC = int(str[i]) + Key % 26;
if ( ASC > int('Z') )
{
ASC = ASC - int('Z') + int('A') - 1;
}
else if ( ASC < int('A') )
{
ASC = int('Z') - int('A') + ASC + 1;
}
str_ += char(ASC);
}
else if (str[i] == ' ')
{
str_ += ' ';
}
}
cout << str_ << endl;
}

int main()
{
string str1_2, str3, str4;
int Key;
getline(cin, str1_2);
getline(cin, str3);
getline(cin, str4);
countNumber (str1_2 + str3 + str4);

Key = compare(str1_2);
DEC (Key, str3);
DEC (Key, str4);
return 0;

}

第二个代码如下
#include

#include<string.h>

#include<math.h>

using namespace std;

#define swap(a,b) {a^=b;b^=a;a^=b;}

int hex2decimal(string hexNum) {

int n = 0;

int len = hexNum.length();

for (int i = 0; i < len; i++) {

    n <<= 4;

    if(hexNum[i]>='0'&& hexNum[i]<='9')

        n += int(hexNum[i] - '0');

    else

        n += int(hexNum[i] - 'A')+10;

}

return n;

}

bool primeNum(int num) {
if (num<2)
return false;
for (int i = 2; i <= sqrt(num); i++) {

    if (num % i == 0) return false;

}

return true;

}

int GCD(int a, int b) {

return (a % b == 0 ? b : GCD(b, a % b));

}

int LCM(int a, int b) {

return a * b / GCD(a, b);

}

void sortArray(int* a, int n) {

int state = 0;

for (int i = 0; i < n - 1; i++) {

    state = 0;

    for (int j = n - 1; j > i; j--) {

        if (a[j - 1] > a[j]) {

            swap(a[j - 1], a[j]);

            state = 1;

        }

    }

    if (state == 0) break;

}

}

void inversion(int(*array)[3], int r, int c) {

int i, j;

for (i = 0; i < r; i++) {

    for (j = i; j < c; j++) {

        if(i!=j)

            swap(array[i][j], array[j][i]);

    }

}

}

void displayArray(int(*array)[3], int r, int c) {

for (int i = 0; i < r; i++) {

    for (int j = 0; j < c; j++) {

        cout << array[i][j] << " ";

    }

    cout << endl;

}

}

double variance(int* array, int n) {

double sum = 0;

for (int i = 0; i < n; i++) sum += array[i];

double average = sum / n;

double res = 0;

double sub = 0;

for (int i = 0; i < n; i++) {

    sub = average - array[i];

    res += sub * sub;

}

return res / n;

}

void intToString(int num, string& result) {

int i;

if ((i = num / 10) != 0) intToString(i, result);

result += (num % 10 + '0');

}

void reverseString(string&a) {

int len = a.length();

for (int i = 0; i < len / 2; i++) {

    swap(a[i], a[len - 1 - i]);

}

}

string connectString(string& a, string b) {

return a.append(b.c_str());

}

int main() {

string strs[10];

int nums[10];

string str;



for (int i = 0; i < 10; i++) {

    cin >> strs[i];

}



for (int i = 0; i < 10; i++) {   

    nums[i] = hex2decimal(strs[i]);    

    cout << nums[i] << " ";

}

cout << endl;



for (int i = 0; i < 10; i++) {

    cout << (primeNum(nums[i])?"Y":"N") << " ";

}

cout << endl;



cout << GCD(nums[0], nums[1]) << endl;



cout <<LCM(nums[0], nums[1]) << endl;



sortArray(nums, 10);

for (int i = 0; i < 10; i++) {

    cout << nums[i] << " ";

}

cout << endl;



printf("%.2lf\n", variance(nums,10));



cout << endl;



int index = 0;

int array[3][3];

for (int i = 0; i < 3; i++) {

    for (int j = 0; j < 3; j++) {

        array[i][j] = nums[index++];

    }

}

displayArray(array, 3, 3);



cout << endl;



inversion(array, 3, 3);

displayArray(array, 3, 3);


cout << endl;
string newStrs[10];
for (int i = 0; i < 10; i++) {
     intToString(nums[i], newStrs[i]);
     reverseString(newStrs[i]);
}
for (int i = 0; i < 10; i += 2) {
    cout << connectString(newStrs[i], newStrs[i+1]) << " ";
}

}

img

img

  • 写回答

1条回答 默认 最新

  • 广大菜鸟 2021-11-10 02:06
    关注

    第一个

    
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #define MAXSIZE 1000
    void countNumber(char* str)
    {
        int Caps = 0, Lows = 0, Num = 0, Spa = 0, Char = 0;
        int len = strlen(str);
        for (int i = 0; i < len; i++)
        {
            if (str[i] >= 'a' && str[i] <= 'z')
            {
                Lows += 1;
            }
            else if (str[i] >= 'A' && str[i] <= 'Z')
            {
                Caps += 1;
            }
            else if (str[i] >= '0' && str[i] <= '9')
            {
                Num += 1;
            }
            else if (str[i] == ' ')
            {
                Spa += 1;
            }
            else
            {
                Char += 1;
            }
        }
        //cout << Caps << ' ' << Lows << ' ' << Num << ' ' << Spa << ' ' << Char << endl;
        printf("%d %d %d %d %d \n", Caps, Lows , Num , Spa , Char);
    }
    int compare(char* str)
    {
        int l = 0, idx = 0, r, leftStr = 0, rightStr = 0, len = strlen(str);
        int res = 0;
        while (idx<len&&str[idx] != ' ')
        {
            idx += 1;
        }
        r = idx + 1;
        while (l < idx && r < len)
        {
            res = res + (int)(str[l]) - (int)(str[r]);
            l += 1;
            r += 1;
        }
        //cout << res << endl;
        printf("%d\n", res);
        return res;
    }
    void DEC(int Key, char* str)
    {
        int len = strlen(str);//str.length();
        char str_[MAXSIZE]="\0";
        int index = 0;
        for (int i = 0; i < len; i++)
        {
            if (str[i] >= 'A' && str[i] <= 'Z')
            {
                int ASC = (int)(str[i]) + Key % 26;
                if (ASC > (int)('Z'))
                {
                    ASC = ASC - (int)('Z') + (int)('A') - 1;
                }
                else if (ASC < (int)('A'))
                {
                    ASC = (int)('Z') - (int)('A') + ASC + 1;
                }
                str_[index++]= (char)(ASC);
            }
            else if (str[i] == ' ')
            {
                str_[index++]= ' ';
            }
        }
        //cout << str_ << endl;
        printf("%s\n", str_);
    }
    int main()
    {
        char str1_2[MAXSIZE]="\0", str3[MAXSIZE] = "\0", str4[MAXSIZE] = "\0";
        int Key;
        gets(str1_2);
        gets(str3 );
        gets(str4 );
        char tmp[MAXSIZE]="\0";
        strcat(tmp , str1_2);
        strcat(tmp , str3);
        strcat(tmp , str4);    
        countNumber(tmp);
        Key = compare(str1_2);
        DEC(Key, str3);
        DEC(Key, str4);
        return 0;
    }
     
     
    

    第二个

    
     
    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>
    #include <math.h>
    #define false 0
    #define true 1
    #define bool int
    #define swap(a, b)  { a^= b;b ^= a; a ^= b;}
    int hex2decimal(char* hexNum)
    {
        int n = 0;
        int len = strlen(hexNum);
        for (int i = 0; i < len; i++)
        {
            n <<= 4;
            if (hexNum[i] >= '0' && hexNum[i] <= '9')
                n += (int)(hexNum[i] - '0');
            else
                n += (int)(hexNum[i] - 'A') + 10;
        }
        return n;
    }
    bool primeNum(int num)
    {
        if (num < 2)
            return false;
        for (int i = 2; i <= sqrt(num); i++)
        {
            if (num % i == 0)
                return false;
        }
        return true;
    }
    int GCD(int a, int b)
    {
        return (a % b == 0 ? b : GCD(b, a % b));
    }
    int LCM(int a, int b)
    {
        return a * b / GCD(a, b);
    }
    void sortArray(int* a, int n)
    {
        int state = 0;
        for (int i = 0; i < n - 1; i++)
        {
            state = 0;
            for (int j = n - 1; j > i; j--)
            {
                if (a[j - 1] > a[j])
                {
                    swap(a[j - 1], a[j]);
                    state = 1;
                }
            }
            if (state == 0)
                break;
        }
    }
    void inversion(int(*array)[3], int r, int c)
    {
        int i, j;
        for (i = 0; i < r; i++)
        {
            for (j = i; j < c; j++)
            {
                if (i != j)
                    swap(array[i][j], array[j][i]);
            }
        }
    }
    void displayArray(int(*array)[3], int r, int c)
    {
        for (int i = 0; i < r; i++)
        {
            for (int j = 0; j < c; j++)
            {
                printf("%d ", array[i][j]);
            }
            printf("\n");
        }
    }
    double variance(int* array, int n)
    {
        double sum = 0;
        for (int i = 0; i < n; i++)
            sum += array[i];
        double average = sum / n;
        double res = 0;
        double sub = 0;
        for (int i = 0; i < n; i++)
        {
            sub = average - array[i];
            res += sub * sub;
        }
        return res / n;
    }
    void intToString(int num, char* result)
    {
        int i;
        if ((i = num / 10) != 0)
            intToString(i, result);
        int len = strlen(result);
        result[len] = (char)(num % 10 + '0');
        result[len + 1] = '\0';
    }
    void reverseString(char* a)
    {
        int len = strlen(a);
        for (int i = 0; i < len / 2; i++)
        {
            swap(a[i], a[len - 1 - i]);
        }
    }
    char* connectString(char* a, char* b)
    {
        int end = (strlen(a) + strlen(b) + 1);
        char* tmp = (char*)malloc(sizeof(char) * end);
        if (tmp == NULL) exit(-1);
        strcpy(tmp, a);
        strcat(tmp, b);
        return tmp;
    }
    int main()
    {
        char* strs[10];   
        int nums[10];
        for (int i = 0; i < 10; i++)
        {
            strs[i] = (char*)malloc(sizeof(char) * 10);
            if (strs[i] == NULL) exit(-1);
            scanf("%s", strs[i]);
        }
        for (int i = 0; i < 10; i++)
        {
            nums[i] = hex2decimal(strs[i]);
            printf("%d ", nums[i]);
        }
        printf("\n");
        for (int i = 0; i < 10; i++)
        {
            printf("%c ", (primeNum(nums[i]) ? 'Y' : 'N'));
        }
        printf("\n%d\n", GCD(nums[0], nums[1]));
        printf("%d\n", LCM(nums[0], nums[1]));
        sortArray(nums, 10);
        for (int i = 0; i < 10; i++)
        {
            printf("%d ", nums[i]);
        }
        printf("\n");
        printf("%.2lf\n", variance(nums, 10));
        printf("\n");
        int index = 0;
        int array[3][3];
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                array[i][j] = nums[index++];
            }
        }
        displayArray(array, 3, 3);
        printf("\n");
        inversion(array, 3, 3);
        displayArray(array, 3, 3);
        printf("\n");
        char*newStrs[10];
        for (int i = 0; i < 10; i++)
        {   
            newStrs[i] = (char*)malloc(sizeof(char) * 21);
            if (newStrs[i] == NULL) exit(-1);
            newStrs[i][0] = '\0';
            intToString(nums[i], newStrs[i]);
            reverseString(newStrs[i]);
        }
        for (int i = 0; i < 10; i += 2)
        {
            printf("%s ", connectString(newStrs[i], newStrs[i + 1]));
        }
        for (int i = 0; i < 10; i++) {
            free(newStrs[i]);
            free(strs[i]);
        }
    }
    // 10 14 29 17 C8 31 9 23 25 AB
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月10日
  • 已采纳回答 11月10日
  • 修改了问题 11月9日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决