请问这道C语言编程题怎么做
对长度为7个字符的字符串,除首,尾字符外,将其余5个字符按ASC||码降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。#include<stdi...
对长度为7个字符的字符串,除首,尾字符外,将其余5个字符按ASC||码降序排列。
例如,原来的字符串为CEAedca,排序后输出为CedcEAa。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *s,int num)
{
}
void NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
char s[10] ;
FILE *rf, *wf ;
int i = 0 ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
while(i < 10) {
fgets(s,10,rf);
s[7] = 0 ;
fun(s,7);
fprintf(wf, "%s\n", s);
i++ ;
}
fclose(rf);
fclose(wf);
}
main()
{
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
囧。。。这也太复杂了吧,这是考试的一道题,不用怎么复杂吧。。。。
2楼的也不行,运行属于死程序,什么内存啊什么的不能读取啊什么啊,出现C++调试窗口啊。。。 展开
例如,原来的字符串为CEAedca,排序后输出为CedcEAa。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *s,int num)
{
}
void NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
char s[10] ;
FILE *rf, *wf ;
int i = 0 ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
while(i < 10) {
fgets(s,10,rf);
s[7] = 0 ;
fun(s,7);
fprintf(wf, "%s\n", s);
i++ ;
}
fclose(rf);
fclose(wf);
}
main()
{
char s[10];
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
囧。。。这也太复杂了吧,这是考试的一道题,不用怎么复杂吧。。。。
2楼的也不行,运行属于死程序,什么内存啊什么的不能读取啊什么啊,出现C++调试窗口啊。。。 展开
2个回答
展开全部
void fun(char *s, int num)
{
char buf[1024];
char buf1[128];
int num1[128];
int i = 0;
int j = 0;
char temp = 0;
memset(buf, 0x00, sizeof(buf));
memset(buf1, 0x00, sizeof(buf1));
memset(num1, 0x00, sizeof(num1));
if(num <= 2){
return;
}
for(i = 0; i < num - 2; i++){
temp = *(s+1+i);
buf[temp] = temp;
num1[temp] += 1;
}
for(i = 128; i > 0; i--){
if(buf[i - 1] > 0){
for(j = 0; j < num1[i - 1]; j++){
sprintf(buf1, "%s%c", buf1, buf[i - 1]);
}
}
}
memcpy(&s[1], buf1, num - 2);
}
{
char buf[1024];
char buf1[128];
int num1[128];
int i = 0;
int j = 0;
char temp = 0;
memset(buf, 0x00, sizeof(buf));
memset(buf1, 0x00, sizeof(buf1));
memset(num1, 0x00, sizeof(num1));
if(num <= 2){
return;
}
for(i = 0; i < num - 2; i++){
temp = *(s+1+i);
buf[temp] = temp;
num1[temp] += 1;
}
for(i = 128; i > 0; i--){
if(buf[i - 1] > 0){
for(j = 0; j < num1[i - 1]; j++){
sprintf(buf1, "%s%c", buf1, buf[i - 1]);
}
}
}
memcpy(&s[1], buf1, num - 2);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询