1.K进制数的转换。输入非负整数a将其转换为K进制数,2 <= K <= 32。进制数使用的符号是0~9, A, …V来表示(字母是大写) 输入:一个十进制非负整数a和一个正整数K, 2<=K<=32。空格分隔。 输出:K进制表示的整数。
#include<stdio.h>
int main() {
int a, k, b;
char arr[100] = {
0 };
int i = 0;
scanf("%d %d", &a, &k);
if (a == 0)
printf("0");
else {
while (a / k != 0 || a % k <= k && a % k > 0) {
b = a % k;
if (b < 10) {
arr[i] = b + '0';
i++;
}
else {
arr[i] = b - 10 + 'A';
i++;
}
a /= k;
}
for (int j = i - 1; j >= 0; j--) {
printf("%c", arr[j]);
}
}
return 0;
}
2.任意输入一个自然数,将该数乘以3,输出乘积和乘积中各位数字组成的最大数。 例如,输入 5370 ,乘3结果为16110,则输出为 16110 61110。 输入格式: 自然数 n 输出格式: 乘3结果和乘积中各位数字组成的最大数,空格隔开。
#include<stdio.h>
#include<math.h>
#include<string.h>
int main() {
int a, A, len = 1;
int arr[100] = {
0 };
scanf("%d", &a);
A = 3 * a;
printf("%d ", A);
//数字位数的计算
int B = A;
while (B / 10 != 0) {
len++;
B /= 10;
}
//得到每一位的数字
int temp;
for (int i = 0; i < len; i++) {
temp = A / pow(10, len - 1 - i);
arr[i] = temp % 10;
}
//排序
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = len-1; i>=0; i--) {
printf("%d", arr[i]);
}
return 0;
}
3.每天一开始,第一个在机房里签字的人会打开门,最后一个签字的人会锁上门。根据签到的记录,你应该找到那天开门和锁门的人。记录保证每个人的签到时间必须早于签退时间,并且没有两个人同时签到或签退。
输入:一天的记录,记录以正整数M开头,M是记录总数,后跟M行,每行的格式为: ID_number Sign_in_time
Sign_out_time,其中时间以HH:MM:SS格式给定,ID number是一个不超过15个字符的字符串。
输出:在一行中输出当天开锁和锁门的人员的ID号。这两个ID号必须用一个空格隔开。
#include<stdio.h>
#include<string.h>
struct daka {
char ID[20];
char Ftime[10];
char Ltime[10];
};
int main() {
struct daka daka[100];
int num;
scanf

本文涵盖了多个编程与算法问题,包括:十进制到K进制的转换、数字乘法及组合最大数、签到记录的处理、约瑟夫斯问题、字符串处理、新兵训练队列模拟、数组元素筛选及排序、有理数求和、数字提取与求和、以及字符出现统计。这些问题涉及到了基础算法、逻辑思维以及字符串处理技巧,对于提升编程能力十分有益。
&spm=1001.2101.3001.5002&articleId=117630255&d=1&t=3&u=ebd11640c7f3439995b8b381d8c38add)
7433

被折叠的 条评论
为什么被折叠?



