将如下两个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]) << " ";
}
}
#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