Trending News
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);
}
}
現在能printf出來了
但是我多兩比資料
這樣我性別那一項沒東西
用%s會跑出(null)
不是我輸入ㄉ值ㄝ@@
為什麼??
{
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
- 1 decade agoFavorite Answer
剛剛跑這支程式一直有問題,語法語義什麼都沒有錯誤,看了好久才看到問題在哪,我想應該是這個問題造成的吧!
在結構cycu中,sex是被宣告成char,所以在印出學生資料時,應該須用對應的列印格式
printf("性別:%s\n",cyee09a[middle].sex);
這一行應該改成用%c
printf("性別:%c\n",cyee09a[middle].sex);
否則就是修改sex的變數型態為
char sex[10];
如果不是這個問題造成的話,再麻煩請回報吧。我現在是可以正常跑了,所以我就將我修改的方法放上來囉。
- Anonymous7 years ago
介紹你一個我最常去的免費視訊網站
裡面的辣妹真的是超級正的!!
最大的重點是→加入會員是免費的
而且加入後馬上可以找你喜歡的妹陪你聊天
甚至看"特別的秀"……
而且她們真的都很配合,感覺就像自己的女朋友一樣
免費破解會員註冊 http://adf.ly/jSx9Z