
C语言编程题,求助高手!!!
题目:对从键盘输入的一行字符(约定:字符数≤127字节)进行排序(按每个字符的ASCII码由小到大)并输出。注意:程序中不能使用库函数gets、fgets或使用同名的变量...
题目:
对从键盘输入的一行字符(约定:字符数≤127字节)进行排序(按每个字符的ASCII码由小到大)并输出。注意:程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,编程可用素材:printf("input the string: \n")...、printf("\nResult:")...。
注意:不要使用其他语言,看不懂!就使用C语言。
谢谢了
请大家用C语言来做,C++以及其他语言做的根本看不懂,等于没写!
另外我们这里给出的一个标准答案:(一点都看不懂!明明可以简写的,他脑袋有包)
#include <stdio.h>
#include <string.h>
void inputs(char str[]); /*函数inputs的原型声明*/
void sort(char str[]); /*函数sort的原型声明*/
int main(void)
{
char str[128];
inputs(str);
sort(str);
printf("\nResult:");
puts(str);
return 0;
}
void inputs(char str[])
{
char ch;
int i = 0;
while (((ch = getchar()) != '\n') && (i < 127))
{
str[i] = ch;
i++;
}
str[i] = '\0';
}
/*函数sort的功能:将字符数组str中的字符串按从小到大排序*/
void sort(char str[])
{
int i, j, k, tmp, lenth;
lenth = strlen(str);
for (i = 0; i <= lenth - 2; i++)
{
k = i;
for (j = i + 1; j <= lenth - 1; j++)
{
if (str[j] < str[k])
{
k = j;
}
}
if (k != i)
{
tmp = str[k];
str[k] = str[i];
str[i] = tmp;
}
}
} 展开
对从键盘输入的一行字符(约定:字符数≤127字节)进行排序(按每个字符的ASCII码由小到大)并输出。注意:程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,编程可用素材:printf("input the string: \n")...、printf("\nResult:")...。
注意:不要使用其他语言,看不懂!就使用C语言。
谢谢了
请大家用C语言来做,C++以及其他语言做的根本看不懂,等于没写!
另外我们这里给出的一个标准答案:(一点都看不懂!明明可以简写的,他脑袋有包)
#include <stdio.h>
#include <string.h>
void inputs(char str[]); /*函数inputs的原型声明*/
void sort(char str[]); /*函数sort的原型声明*/
int main(void)
{
char str[128];
inputs(str);
sort(str);
printf("\nResult:");
puts(str);
return 0;
}
void inputs(char str[])
{
char ch;
int i = 0;
while (((ch = getchar()) != '\n') && (i < 127))
{
str[i] = ch;
i++;
}
str[i] = '\0';
}
/*函数sort的功能:将字符数组str中的字符串按从小到大排序*/
void sort(char str[])
{
int i, j, k, tmp, lenth;
lenth = strlen(str);
for (i = 0; i <= lenth - 2; i++)
{
k = i;
for (j = i + 1; j <= lenth - 1; j++)
{
if (str[j] < str[k])
{
k = j;
}
}
if (k != i)
{
tmp = str[k];
str[k] = str[i];
str[i] = tmp;
}
}
} 展开
5个回答
展开全部
/*用scanf()无法输入空格,就用getchar了*/
#include<stdio.h>
int main(void)
{
char ch;
static char str[128];
int i=0;
int j=0;
printf("input the string: \n");
while(1)
{
ch=getchar();
if(ch=='\n'||i>127)
break;
str[i]=ch;
i++;
}
for(i=0;str[i];i++)
{
for(j=i+1;str[j];j++)
{
if(str[i]>str[j])
{
ch=str[i];str[i]=str[j];str[j]=ch;
}
}
}
printf("\nResult:%s\n",str);
return 0;
}
#include<stdio.h>
int main(void)
{
char ch;
static char str[128];
int i=0;
int j=0;
printf("input the string: \n");
while(1)
{
ch=getchar();
if(ch=='\n'||i>127)
break;
str[i]=ch;
i++;
}
for(i=0;str[i];i++)
{
for(j=i+1;str[j];j++)
{
if(str[i]>str[j])
{
ch=str[i];str[i]=str[j];str[j]=ch;
}
}
}
printf("\nResult:%s\n",str);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#define MAX 127
//冒泡排序
void swap_bubble(char arr[], int n)
{
int i,j,temp;
for (i = 0; i < n-1; ++i)
{
//是否有过交换
bool is_changed = false;
for (j = 0 ; j < n - i -1; ++j)
{
//字符比较本身即是按每个字符的ASCII码进行比较的
if (arr[j+1] < arr[j])
{//如果后面的比前面的小 交换两者位置
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
is_changed = true;
}
}
if (!is_changed)
{//没有过交换 证明已排序完成 退出
break;
}
}
}
void main()
{
int length = 0; //记录字符串长度
char input_array[MAX];
printf("input the string: (Ctrl+Z to end)\n");
scanf("%s",input_array);
//获取字符串长度
while(input_array[length]!='\0')
length++;
//排序
swap_bubble(input_array,length);
printf("\nResult:");
//输出结果
for (int i = 0; i < length; ++i)
{
printf("%c ",input_array[i]);
}
printf("\n");
//此句没用 防止屏幕一闪而过 可以注释
//可以换成 getchar()或者system("pause")
scanf("%d",&length);
}
#define MAX 127
//冒泡排序
void swap_bubble(char arr[], int n)
{
int i,j,temp;
for (i = 0; i < n-1; ++i)
{
//是否有过交换
bool is_changed = false;
for (j = 0 ; j < n - i -1; ++j)
{
//字符比较本身即是按每个字符的ASCII码进行比较的
if (arr[j+1] < arr[j])
{//如果后面的比前面的小 交换两者位置
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
is_changed = true;
}
}
if (!is_changed)
{//没有过交换 证明已排序完成 退出
break;
}
}
}
void main()
{
int length = 0; //记录字符串长度
char input_array[MAX];
printf("input the string: (Ctrl+Z to end)\n");
scanf("%s",input_array);
//获取字符串长度
while(input_array[length]!='\0')
length++;
//排序
swap_bubble(input_array,length);
printf("\nResult:");
//输出结果
for (int i = 0; i < length; ++i)
{
printf("%c ",input_array[i]);
}
printf("\n");
//此句没用 防止屏幕一闪而过 可以注释
//可以换成 getchar()或者system("pause")
scanf("%d",&length);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不好意思啊,这次改好了 这个可以,纯C的 用吧 没有C++头文件了
#include<stdio.h>
#include <stdlib.h>
void main()
{
char temp[127];
for ( int n = 0; n < 127; ++n )
{
temp[n] = '\0';
}
scanf("%s",temp);
printf("\n排序前:%s\n", temp );
for ( int i = 0; temp[i] != '\0'; ++i )
{
for ( int j = 0; temp[j] != '\0'; ++j )
{
if ( temp[i] > temp[j] )
{
char tt = temp[i];
temp[i] = temp[j];
temp[j] = tt;
}
}
}
printf("排序后:%s\n", temp );
}
#include<stdio.h>
#include <stdlib.h>
void main()
{
char temp[127];
for ( int n = 0; n < 127; ++n )
{
temp[n] = '\0';
}
scanf("%s",temp);
printf("\n排序前:%s\n", temp );
for ( int i = 0; temp[i] != '\0'; ++i )
{
for ( int j = 0; temp[j] != '\0'; ++j )
{
if ( temp[i] > temp[j] )
{
char tt = temp[i];
temp[i] = temp[j];
temp[j] = tt;
}
}
}
printf("排序后:%s\n", temp );
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-25
展开全部
这可是纯C程序哦!
/*---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a,const void *b)
{
return *(const char *)a-*(const char *)b;
}
int main(void)
{
char str[128];
int i=0;
printf("please input a string:\n");
for (i = 0; (str[i]=getchar())!='\n'; i++);
str[i]='\0';
printf("input the string: \n");
printf("%s",str);
qsort(str,strlen(str),sizeof(char),cmp);
printf("\nResult:");
printf("\n%s\n",str);
return 0;
}
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a,const void *b)
{
return *(const char *)a-*(const char *)b;
}
int main(void)
{
char str[128];
int i=0;
printf("please input a string:\n");
for (i = 0; (str[i]=getchar())!='\n'; i++);
str[i]='\0';
printf("input the string: \n");
printf("%s",str);
qsort(str,strlen(str),sizeof(char),cmp);
printf("\nResult:");
printf("\n%s\n",str);
return 0;
}
/*---------------------------------------------------------------------------*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能用fgets,为什么?
追问
这是题目要求
追答
好吧,当我没来过……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询