一道學(xué)校留的題目
請定義一個描述學(xué)生基本信息的結(jié)構(gòu),包括姓名,學(xué)號,籍貫,身份證號,年齡,家庭住址,性別,聯(lián)系方式等。并定義一個結(jié)構(gòu)體數(shù)組。編程:
a) 編寫函數(shù) input(), 輸入基本信息(3~5 條記錄);
b) 編寫函數(shù) print(),輸出全體記錄信息;
c) 編寫函數(shù) search(), 檢索一個指定的學(xué)生信息并返回, 由主函數(shù)打印到屏幕上。
【輸入形式】學(xué)生數(shù)量N
N個學(xué)生的姓名 學(xué)號 籍貫 身份證號 年齡 家庭住址 性別 聯(lián)系方式
要查找的學(xué)生姓名
【輸出形式】N個學(xué)生的姓名,學(xué)號,籍貫,身份證號,年齡,家庭住址,性別,聯(lián)系方式
以及要查找的學(xué)生的姓名,學(xué)號,籍貫,身份證號,年齡,家庭住址,性別,聯(lián)系方式
【樣例輸入】
3
zhang 19920101 beijing 255141199201015656 25 beijing m 12114145654
li 18850202 liaoning 210212188502020303 14 liaoning w 14156865959
wang 121 tianjin 251242655252 20 tianjin m 12542542
zhang
【樣例輸出】
zhang,19920101,beijing,255141199201015656,25,beijing,m,12114145654
li,18850202,liaoning,210212188502020303,14,liaoning,w,14156865959
wang,121,tianjin,251242655252,20,tianjin,m,12542542
zhang,19920101,beijing,255141199201015656,25,beijing,m,12114145654
我的代碼:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char name[20] ;
char num[15];
char id[20];
int age;
char address[100];
char addresss[100];
char sex;
char phone[15];
}stu[5];
void input(struct student stu[], int n);
void print(struct student stu[],int n);
void search(struct student stu[], char name[],int n);
int main()
{
char name[20];
int n;
scanf("%d", &n);
input(stu, n);
scanf("%s", name);
print(stu, n);
search(stu, name, n);
system("pause");
return 0;
}
void input(struct student stu[], int n) {
for (int i = 0; i < n; i++) {
scanf("%s",stu[i].name);
scanf("%s", stu[i].num);
scanf("%s", stu[i].address);
scanf("%s", stu[i].id);
scanf("%d", &stu[i].age);
scanf("%s", stu[i].addresss);
scanf("%c", &stu[i].sex);
scanf("%s", stu[i].phone);
}
}
void print(struct student stu[],int n) {
for (int i = 0; i < n; i++) {
printf("%s,%s,%s,%s,%d,%s,%c,%s\n", stu[i].name, stu[i].num, stu[i].address, stu[i].id, stu[i].age, stu[i].addresss, stu[i].sex,stu[i].phone);
}
}
void search(struct student stu[], char name[],int n) {
for (int i = 0; i < n; i++) {
if (strcmp(stu[i].name, name) == 0)
printf("%s,%s,%s,%s,%d,%s,%c,%s\n", stu[i].name, stu[i].num, stu[i].address, stu[i].id, stu[i].age, stu[i].addresss, stu[i].sex, stu[i].phone);
}
}
請問是哪里出錯了啊 我這個代碼輸出的不對 初學(xué)者謝謝各位!
你應(yīng)該從輸出看出來點端倪吧。有沒有發(fā)現(xiàn)你打印出來的 sex 是一個空格?說明你輸入的也是空格。那問題出在哪里呢?
在 C 中,scanf 的 %s 會忽略前置空白符,遇到空白符終止;而 %c 就是讀一個字符,這個字符可以是空白符,你給的輸入示例中 zhang 19920101 beijing 255141199201015656 25 beijing m 12114145654,%s 讀完第二個 beijing 之后,%c 讀的不是 m 而是 beijing 后面的空格。
解決方法就是:輸入示例既然是一行一行的,那你就一行一行地讀吧
scanf(" %c", &stu[i].sex);
注意%c前面的空格。
至于為什么,說來話長,請看這里
https://stackoverflow.com/a/4...
和這里
http://c-faq.com/stdio/scanfp...
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。