#include <stdio.h>
void removeElement(int *arr, int n, int num) {
for (int i = num; i < n - 1; i++) {
arr[i] = arr[i + 1];
}
}
void printArray(int *arr, int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int m, n;
printf("Enter the number of tourists (m) and the counting number (n): ");
scanf("%d %d", &m, &n);
int *tourists = (int *)malloc(m * sizeof(int));
for (int i = 0; i < m; i++) {
tourists[i] = i + 1;
}
printf("The remaining tourists are: ");
printArray(tourists, m);
int count = 1;
while (m > 1) {
if (count % n == 0) {
removeElement(tourists, m, tourists[count - 1] - 1);
m--;
}
count++;
}
printf("The winner is: %d\n", tourists[0]);
free(tourists);
return 0;
}
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
void removeElement(int *arr, int n, int num);
void palindromeFormation(int num);
void findOddNumber();
bool isPalindrome(int num) {
int reversed = 0, original = num, remainder;
while (original != 0) {
remainder = original % 10;
reversed = reversed * 10 + remainder;
original /= 10;
}
return num == reversed;
}
int main() {
int choice;
do {
printf("\n请选择功能:\n");
printf("1. 免费旅行\n");
printf("2. 回文数的形成\n");
printf("3. 奇异的三位数\n");
printf("4. 退出程序\n");
scanf("%d", &choice);
int m, n;
int input;
switch (choice) {
case 1:
printf("请输入游客数量m和报数值n:");
scanf("%d %d", &m, &n);
freeTravel(m, n);
break;
case 2:
printf("请输入一个十进制整数:");
scanf("%d", &input);
palindromeFormation(input);
break;
case 3:
findOddNumber();
break;
case 4:
printf("感谢使用程序,再见!\n");
break;
default:
printf("无效的输入,请重新选择。\n");
break;
}
} while (choice != 4);
return 0;
}
void removeElement(int *arr, int n, int num)
{
}
void palindromeFormation(int num)
{
int reverseNum, addNum;
char strNum[11], strReverseNum[11], strAddNum[11];
int isPalindromic = 0;
while (!isPalindromic) {
sprintf(strNum, "%d", num);
strcpy(strReverseNum, strNum);
int len = strlen(strNum);
for (int i = 0; i < len/2; i++) {
char c = strReverseNum[i];
strReverseNum[i] = strReverseNum[len-i-1];
strReverseNum[len-i-1] = c;
}
sscanf(strReverseNum, "%d", &reverseNum);
addNum = num + reverseNum;
printf("%d + %d = %d\n", num, reverseNum, addNum);
sprintf(strAddNum, "%d", addNum);
isPalindromic = 1;
len = strlen(strAddNum);
for (int i = 0; i < len/2; i++) {
if (strAddNum[i] != strAddNum[len-i-1]) {
isPalindromic = 0;
break;
}
}
num = addNum;
}
printf("回文数为:%d\n", addNum);
}
void findOddNumber() {
int n, s, t;
int x2t(int a,int b);
int re(int a);
int i;
for (i = 100; i < 999; i++) {
n = x2t(i, 7);
t = re(i);
s = x2t(t, 9);
if (n != 0 && s != 0 && n == s) {
printf("这个奇异的三位数为:七进制:%d,九进制:%d,十进制:%d\n", i, t, n);
break;
}
}
}
int x2t(int n, int x) {
int t = 0, d = 1, a;
while (n) {
a = n % 10;
if (a >= x)
return 0;
t += a * d;
d *= x;
n /= 10;
}
return t;
}
int re(int n) {
int s = 0, t;
while (n) {
t = n % 10;
s = t + s * 10;
n /= 10;
}
return s;
}
将第一个程序写入第二个程序中的void removeElement中,使之成为第二个程序的一个运算功能。