高手请进!100分求散题!要求只能用C
设计程序按步骤完成下列任务:
1.1 编写函数sort,实现对整数数组排序的功能,具体排序方法可以使用冒泡或选择法,由用户自定。
1.2 主函数中,定义数组并使用初始化方法给出数组初值。测试数据为{16,5,8,12,1,17,3,6,10,2}。
1.3 主函数中调用sort函数实现对测试数据排序的功能。要求分别打印出排序前后数组元素的值。
2. 输入一个字符串,统计此字符串中字母、数字、空格和其它字符的个数。(要求程序中不能使用strlen这个库函数)
3. 编写程序,判断两个单词是否为变位词,即单词长度相同,使用字母相同,只是出现位置不同的一对词。例如:smartest 和 sttesmar。如果是,输出yes,否则输出no。
[最优解释]
楼主不会写冒泡么?
[其他解释]
第2题的解答:
#include <ctype.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char str[81];
char* p = str;
int ac = 0, dc = 0, sc = 0, oc = 0;
fgets(str, 81, stdin);
while(*p)
{
if(isalpha(*p))ac++;
else if(isdigit(*p))dc++;
else if(isspace(*p))sc++;
elseoc++;
p++;
}
printf("%d, %d, %d, %d\n", ac, dc, sc, oc);
return 0;
}
[其他解释]
第3题目代码:
#include <stdio.h>
int main(){
char *str1 = "smartest";
char *str2 = "sttesmar";
char ch = 0;
while(*str1 && *str2){
ch ^= *str1++ ^ *str2++;
}
if(ch == 0)
printf("same\n");
else
printf("not same\n");
return 0;
}
[其他解释]
1.
//快速排序。平均o(nlogn),最坏n*n;
#include<stdio.h>
#define cutoff 3
void insertsort(int array[20],int n)
{
int i,j;
int temp;
for(i=1;i<n;i++)
{
temp=array[i];
for(j=i;j>0&&array[j-1]>temp;j--) //算法的关键部分,将数据移位。找到插入元素的位置。
{
array[j]=array[j-1];
}
array[j]=temp;
}
}
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int median(int array[],int left,int right)
{
int center=(left+right)/2;
if(array[left]>array[center])
{
swap(&array[left],&array[center]);
}
if(array[left]>array[right])
{
swap(&array[left],&array[right]);
}
if(array[center]>array[right])
{
swap(&array[right],&array[center]);
}
swap(&array[center],&array[right-1]);
return array[right-1];
}
void qsort(int array[],int left,int right)
{
int i,j;
int pivot;
if(left+cutoff<=right)
{
pivot=median(array,left,right);
i=left;
j=right-1;
for( ; ; )
{
while(array[++i]<pivot){}
while(array[--j]>pivot){}
if(i<j)
{
swap(&array[i],&array[j]);
}
else
{
break;
}
}
swap(&array[i],&array[right-1]);
qsort(array,left,i-1);
qsort(array,i+1,right);
}
else
{
insertsort(array+left,right-left+1);
}
}
void quicksort(int array[],int n)
{
qsort(array,0,n-1);
}
int main()
{
int array[20];
int n,i;
printf("please input the amount of this array.\n");
scanf("%d",&n);
printf("please input the array.\n");
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
printf("the sort array is :\n");
quicksort(array,n);
for(i=0;i<n;i++)
{
printf("%d ",array[i]);
}
return 0;
}
2.
#include <stdio.h>
void main()
{
int tongji(char str);
int i;
int key;
int word=0;
int number=0;
int space=0;
int others=0;
char a[100];
char ch;
printf("please enter a string:");
gets(a);
char *p=a;
while(*p!='\0')
{
key=tongji(*p);
if(key==1)
word++;
else if(key==2)
number++;
else if(key==3)
space++;
else
others++;
p++;
}
printf("word:%d\n",word);
printf("number:%d\n",number);
printf("space:%d\n",space);
printf("others:%d\n",others);
}
int tongji(char str)
{
int m,i;
if((str<='z'&&str>='a')
[其他解释]
#include <stdlib.h>
#include <stdio.h>
void sort(int a[], size_t sz)
{
int i,j;
for ( i =0; i < sz -1; i ++ )
{
for( j = 0 ; j < sz - i-1; j++)
{
if( a[j] > a[j+1])
{
a[j] = a[j] ^a[j+1];
a[j+1] = a[j] ^a[j+1];
a[j] = a[j] ^a[j+1];
}
}
}
}
int main (void)
{
int arr[] = {16,5,8,12,1,17,3,6,10,2};
size_t i, sz = 10;
for(i = 0 ; i < sz ; i++)
printf(" a[%d]=%d ", i, arr[i]);
printf("\n");
sort(arr, sz);
for(i = 0 ; i < sz ; i++)
printf(" a[%d]=%d ", i, arr[i]);
printf("\n");
return 0;
}
上班太无聊,随便写了一个,没有优化
[其他解释]
(str<='Z'&&str>='A'))
m=1;
else if(str>='0'&&str<='9')
m=2;
else if(str==' ')
m=3;
else
m=4;
return(m);
}
3.
#include<stdio.h>
#include<string.h>
void stringsort(char *array)
{
int i=0;
int j;
int temp;
while(array[i]!='\0')
{
temp=array[i];
for(j=i;j>0&&array[j-1]>temp;j--)
{
array[j]=array[j-1];
}
array[j]=temp;
i++;
}
}
int main()
{
char string1[20];
char string2[20];
int n,i,j;
printf("please input the two string.\n");
scanf("%s",string1);
scanf("%s",string2);
stringsort(string1);
stringsort(string2);
if(strcmp(string1,string2)==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
[其他解释]
这个很简单的
[其他解释]
求解答求代码
[其他解释]
直接百度搜 都能搜到
[其他解释]
忘了个要求,位置不同
/*
* main.c
*
* Created on: 2012-11-9
*/
#include <stdio.h>
int main(){
char *str1 = "smartest";
char *str2 = "sttesmar";
char ch = 0, ch2 = 0;
while(*str1 && *str2){
ch2
[其他解释]
= *str1 ^ *str2;
ch ^= *str1++ ^ *str2++;
}
if(ch == 0 && ch2)
printf("same\n");
else
printf("not same\n");
return 0;
}
[其他解释]
你给100分有什么用啊,给100块钱还差不多,这么简单的程序自己百度不会么
[其他解释]
7楼这么缺钱?。。。度娘的答案不一定满足题目要求的说
[其他解释]
有没有大神解答第一题?
[其他解释]
出来混迟早要还的
[其他解释]
第一题 冒泡排序法
#include <stdio.h>
void sort(int *,int);
main()
{
int i;
int a[10]={16,5,8,12,1,17,3,6,10,2};
int length=sizeof(a)/sizeof(int);
printf("排序前数组的值\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n排序后数组的值\n");
sort(a,length);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
void sort(int *a,int length)
{
int i,j,count;
int num;
for(count=length;count>0;count--)
{
i=0;
for(j=1;j<count;j++)
{
if(a[i]>a[j])
{
num=a[i];
a[i]=a[j];
a[j]=num;
i=j;
}
else
{
i=j;
}
}
}
}
[其他解释]
你出来社会就知道了,请教人,让别人教你,难~~~~
就算你有钱人家也不一定肯教,懂?
[其他解释]
偶还真的很缺钱的说。