C语言考研真题:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到。例如china,长度为5,可以构成china,hinac,inach,nachi

对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到。例如china,长度为5,可以构成china,hinac,inach,nachi,achin。按照首字符从小到大排序,如果相同,则按照它们在S中的位置从小到大排序。排序后的尾字符组成了一个新的字符串S’,它的长度也是n,并且包含了S中的每一个字符。最后输出S’以及S的首字符在S’中的位置p。输入:输入文件file_in.txt,包含两行,第1行是一个整数n(1 <=n<=10000),代表S的长度,第2行是字符串S。输出:输出文件file_out.txt,第1行字符串S’,第2行整数p。

#define  _CRT_SECURE_NO_WARNINGS 1 // scanf函数不安全
#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>
#define MAX_N 1000  

typedef struct {
	char* s;
	int index;
}String;
int compare_string(const void* a, const void* b) {
	const String* s1 = (const String*)a;
	const String* s2 = (const String*)b;
	if (s1->s[0] == s2->s[0])
		return s1->index - s2->index;
	return s1->s[0] - s2->s[0];
}
void main() {
	int n, i;
	char s[MAX_N + 1];
	String* strings;
	FILE* fin = fopen("file_in.txt", "r");
	fsc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值