2.
#include <stdio.h>
#include <string.h>
void reverseString(char *str) {
int len = strlen(str);
char *left = str;
char *right = str + len - 1;
while (left < right) {
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main() {
char str[101];
fgets(str, 101, stdin); // 从键盘输入字符串,存储到数组 str 中
reverseString(str);
printf("%s\n", str); // 输出反转后的字符串
return 0;
}
3.
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 100
struct Book {
char name[101];
char author[11];
char date[11];
};
int main() {
int n;
scanf("%d", &n);
struct Book books[MAX_BOOKS];
for (int i = 0; i < n; i++) {
scanf("%s %s %s", books[i].name, books[i].author, books[i].date);
}
// 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(books[j].date, books[j+1].date) > 0) {
struct Book tmp = books[j];
books[j] = books[j+1];
books[j+1] = tmp;
}
}
}
// 输出排序后的图书信息
for (int i = 0; i < n; i++) {
printf("%s %s %s\n", books[i].name, books[i].author, books[i].date);
}
return 0;
}
4.
#include <stdio.h>
#include <string.h>
#define MAX_LEN 20
#define MAX_NUM 200
int main()
{
char candidates[MAX_NUM][MAX_LEN + 1] = {'\0'};
int votes[MAX_NUM] = {0};
int max_vote = 0, max_idx = 0;
char name[MAX_LEN + 1];
int i, j, n = 0;
while (scanf("%s", name) != EOF && *(name) != '*')
{
// 检查该候选人是否已经存在
for (i = 0; i < n && strcmp(candidates[i], name) != 0; ++i);
if (i == n)
{
strcpy(candidates[n], name);
++n;
}
// 统计票数
scanf("%*c"); // 读取回车符
++votes[i];
}
// 找到得票最高的候选人
for (i = 0; i < n; ++i)
if (votes[i] > max_vote || (votes[i] == max_vote && strcmp(candidates[i], candidates[max_idx]) < 0))
{
max_vote = votes[i];
max_idx = i;
}
printf("%s\n", candidates[max_idx]);
return 0;
}
5.
#include <stdio.h>
#include <string.h>
#define MAX_N 100
#define MAX_L 7
void find(char *name[], int n, int *p);
int main()
{
char names[MAX_N][MAX_L] = {'\0'};
char *pnames[MAX_N];
int i = 0;
while (scanf("%s", names[i]) != EOF && strcmp(names[i], "####") != 0)
{
++i;
}
// 把每个字符串的首地址存入指针数组
int j, n = i;
for (j = 0; j < n; ++j)
pnames[j] = names[j];
int min_idx;
find(pnames, n, &min_idx); // 调用查找函数
printf("%s\n", pnames[min_idx]); // 输出最小字符串
return 0;
}
void find(char *name[], int n, int *p)
{
int i;
*p = 0; // 初始值为第一个元素下标
for (i = 1; i < n; ++i)
{
if (strcmp(name[i], name[*p]) < 0) // 找到更小的字符串
*p = i;
}
}
6.
#include <iostream>
#include <cstring>
using namespace std;
struct Student {
int sno;
char name[10];
char sex;
int age;
void input() {
cin >> sno >> name >> sex >> age;
}
void output() {
cout << sno << ' ' << name << ' ' << sex << ' ' << age << endl;
}
};
struct Table {
Student stu[1000];
int num;
void insert(const Student& new_stu) {
int i = num - 1;
while (i >= 0 && new_stu.sno < stu[i].sno) {
stu[i + 1] = stu[i];
--i;
}
stu[i + 1] = new_stu;
++num;
}
void output() {
for (int i = 0; i < num; ++i) {
stu[i].output();
}
}
};
int main() {
Table table;
cin >> table.num;
for (int i = 0; i < table.num; ++i) {
table.stu[i].input();
}
Student new_stu;
new_stu.input();
table.insert(new_stu);
table.output();
return 0;
}