首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

!100分求散题!要求只能用C

2012-12-16 
高手请进!100分求散题!要求只能用C设计程序按步骤完成下列任务:1.1 编写函数sort,实现对整数数组排序的功

高手请进!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;
}
}
}
}
[其他解释]
你出来社会就知道了,请教人,让别人教你,难~~~~
就算你有钱人家也不一定肯教,懂?
[其他解释]
偶还真的很缺钱的说。

热点排行