c語言 整數編號

這是你原來的方法,我改了兩行,
一個是put[j]=str[i],這一行要改成put[j]=str[i]-'0',這是從char 到 int的轉換,如果不變就成了把put[j]賦值成字元型str[i]的值了,
另一個在後面那個函數,return have使用之後,後面的代碼就不執行了,就好象短路一樣,
要放在後面,或是有條件的返回
可是改了這兩處之後還是不對,排出來結果差的太多,好象是你的冒泡內部的問題,要重新換種方法試試..我對排序很外行,查不出來根本所在
#include <stdio.h>
struct nn
{ int no;
int num;
};
typedef struct nn DATA;
int number( char * , DATA []);
int main( )
{
DATA b[100];
char sa[500]; //
int i, n;
gets( sa );
n = number( sa, b );
for ( i=0; i<n; i++ )
printf("%d %d\n", b[i].num, b[i].no );
return 0;
}

//

void bubbleSort(int arr[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(arr[j+1]<arr[j])
{
t=arr[j+1];
arr[j+1]=arr[j];
arr[j]=t;
}
}
}
}

int number( char * str, DATA b[] )
{
int put[251],anshunxu[251],bianhao[251];
int i,j=0,have;
// 得數的個數
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=' ')
{
put[j]=str[i]-'0';
j++;
}
}
put[j]='\0';

have=j;
j=0;
//return have;

// 把put復制到anshunxu
for(i=0;i<have;i++)
{
anshunxu[i]=put[i];
}

// 冒泡排序
bubbleSort(anshunxu,have);
// 得到編號的數組
for(i=0;i<have;i++)
{
for(j=0;j<have;j++)
{
if(put[i]==anshunxu[j])
{
bianhao[i]=j+1;
}
}
}
bianhao[i]='\0';

for(i=0;i<have;i++)
{
b[i].num=put[i];
b[i].no=bianhao[i];
}
return have;
}
以上回答你滿意么?

⑵ c語言6-5. 兵乓球比賽的對陣方案

#include<stdio.h>
main()
{ int n,i,a[8],j;
char b[8];
scanf("%d",&n);
for(i=1;i<=n;i++)
b[i]='A'+i-1;
for(i=1;i<=n;i++)
a[i]=i;
for(j=1;j<=n;j++)
{ printf ("scheme %d:\n",j);
for (i=j;i<=n;i++)
printf ("%c pk %d\n",b[i-j+1],a[i]);
for (i=1;i<j;i++)
printf ("%c pk %d\n",b[n-j+i+1],a[i]);}
}

⑶ 學習c語言的必備軟體

XCODE(它可以編譯幾乎所有計算機語言,並且擁有在運行之前就自動報錯的功能,只能蘋果電腦使用或下載ios模擬)
Turbo C(最常用的了,很經典,操作很方便,適合windows系統)

⑷ 掃雷 c語言代碼 告訴我~~

你的意思是,自動布置雷區,然後根據雷區分布,給出正確位置和周邊數量?

⑸ 程序調試,北理c語言樂學作業

#include <stdio.h>
void reverse( char *str, int i, int j )
{
char temp;
if( i < j )
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
reverse( str, i+1, j-1 );
}
return;
}
int main()
{
int n=0;
char s[100];
gets(s);
while( s[n] != '\0' )
n++;
reverse( s, 0, n - 1 ); 長度為n,但是下標最大隻到n - 1.若為n,則已經指空
puts(s);
return 0;
}

⑹ c語言,組成最大數

其實我感覺你沒有讀懂題目的考察點,你代碼我運行也成功,但是沒注釋版,有點暈

這題權目真正考察的我感覺是冒泡排序

char h[200];
int i,n=0,j;
char t;
gets(h);
for(i=0;h[i]!=''i++)
n++;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if (h[j]>h[i])
{
t = h[i];
h[i] = h[j];
h[j] = t;
}
}
}
printf("%s ",h);

⑺ c語言 北理惡龍,一個勇士砍過一個頭之後,如何跳過他

背景:最近,北理工出現了一隻惡龍,它長著很多 頭,而且還會吐火,它將會把北理工燒成廢墟, 於是,校長下令召集全校所有勇士殺死這只惡龍。
結果沒有人報名!!!

哈哈~~


然後,兩列排序,按照從小到大的方式,然後用龍頭搜身高,可以解決問題。


如果,某一個龍頭到身高列最後一個為止都沒有找到合適人選,則失敗

如果,所有龍頭都找到了身高,由於之前的排序,此時為最小花費。