讲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

第一个


#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