Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

C++程式修改

是要做資料輸入跟蒐尋的

我做完能輸入但蒐尋會跑不出來

#include < stdio.h >

struct cycu

{

int id;

char sex;

char name[20];

};

void main()

{

struct cycu cyee09a[10];

struct cycu hold;

struct cycu bg;

int i=0,pass=0;

int search,high,low,middle;

printf("請輸入10位學生的基本資料。\\n");

for(i=0;i<=9;i++)

{

printf("請輸入第%d位學生的資料。\\n",i+1);

printf("學號:");

scanf("%d",&cyee09a[i].id);

printf("性別:");

scanf("%s",&cyee09a[i].sex);

printf("姓名:");

scanf("%s",&cyee09a[i].name);

}

for(pass=0;pass<=9;pass++)

{

for(i=pass;i<=8;i++)

{

if(cyee09a[i].id>cyee09a[i+1].id)

{

bg=hold=cyee09a[i];

cyee09a[i]=cyee09a[i+1];

cyee09a[i+1]=hold=bg;

}

} }

printf("請輸入要搜尋學生之學號:\\n");

scanf("%d",&search);

high=9;

low=0;

while(1)

{

middle=(high+low)/2;

if(search==cyee09a[middle].id)

break;

else if(search<cyee09a[middle].id)

high=middle-1;

else

low=middle+1;

if(low>high)

{

printf("找不到這位學生\\n");

break;

}

}

if(low<=high)

{

printf("學號:%d\\n",cyee09a[middle].id);

printf("性別:%s\\n",cyee09a[middle].sex);

printf("姓名:%s\\n",cyee09a[middle].name);

}

}

Update:

現在能printf出來了

但是我多兩比資料

Update 2:

這樣我性別那一項沒東西

用%s會跑出(null)

不是我輸入ㄉ值ㄝ@@

為什麼??

Update 3:

{

printf("學號:%d\n",cyee09a[middle].id_number);

printf("性別:%s\n",cyee09a[middle].sex);

printf("血型:%c\n",cyee09a[middle].blood);

printf("班級:%c\n",cyee09a[middle].classes);

printf("姓名:%s\n",cyee09a[middle].name);

}

}

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    剛剛跑這支程式一直有問題,語法語義什麼都沒有錯誤,看了好久才看到問題在哪,我想應該是這個問題造成的吧!

    在結構cycu中,sex是被宣告成char,所以在印出學生資料時,應該須用對應的列印格式

      printf("性別:%s\n",cyee09a[middle].sex);

    這一行應該改成用%c

      printf("性別:%c\n",cyee09a[middle].sex);

    否則就是修改sex的變數型態為

      char sex[10];

    如果不是這個問題造成的話,再麻煩請回報吧。我現在是可以正常跑了,所以我就將我修改的方法放上來囉。

  • Anonymous
    7 years ago

    介紹你一個我最常去的免費視訊網站

    裡面的辣妹真的是超級正的!!

    最大的重點是→加入會員是免費的

    而且加入後馬上可以找你喜歡的妹陪你聊天

    甚至看"特別的秀"……

    而且她們真的都很配合,感覺就像自己的女朋友一樣

    免費破解會員註冊 http://adf.ly/jSx9Z

Still have questions? Get your answers by asking now.