定義一個結構體陣列用以保存5個學生的以下資訊:學號、姓名、性別、家庭住址、3門課程成績。
要求:
1.從鍵盤輸入5個學生的資料。
2.顯示5個學生中有一門不及格和所有課程均不及格的人數。
3.檢索學號為NUM的學生的3門課程成績,NUM由鍵盤輸入。
uj5u.com熱心網友回復:
要想學習,這種題目就自己寫,錯了的話貼代碼提問要想交作業糊弄老師,就百度原始碼去吧
uj5u.com熱心網友回復:
這個作業簡單也簡單,說難也難,估計老師就沒講過鍵盤輸入中的例外情況需求,各種確認以后的更改需求,哈哈. 用鍵盤太惡心了,能用文本當輸入原始碼
uj5u.com熱心網友回復:
貼個簡單的代碼供參考。
#include <stdio.h>
#define STUSIZE 5
struct student
{
int num;
char name[20];
char sex[4];
char homeaddr[50];
float yuwen;
float shuxue;
float waiyu;
};
//輸入學生資訊
void input_stu(struct student p[])
{
int i;
for (i=0; i<STUSIZE; i++)
{
printf("請輸入第%d個學生資訊:\n", i+1);
printf("請輸入學號:\n");
scanf("%d", &p[i].num);
printf("請輸入姓名:\n");
scanf("%s", &p[i].name);
printf("請輸入性別:\n");
scanf("%s", &p[i].sex);
printf("請輸入住址:\n");
scanf("%s", &p[i].homeaddr);
printf("請輸入語文成績:\n");
scanf("%f", &p[i].yuwen);
printf("請輸入數學成績:\n");
scanf("%f", &p[i].shuxue);
printf("請輸入外語成績:\n");
scanf("%f", &p[i].waiyu);
}
}
//檢索學生資訊
void findstu(struct student stu[], int num)
{
int i = 0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].num == num)
{
printf("此學生三門課成績為:語文%.2f 數學%.2f 外語%.2f\n",stu[i].yuwen,stu[i].shuxue, stu[i].waiyu);
break;
}
else
{
printf("未找到此學生!\n");
}
}
}
//顯示不及格學生人數
void showstu(struct student stu[])
{
int i, icount=0, acount=0;
for(i=0; i<STUSIZE; i++)
{
if(stu[i].yuwen < 60 || stu[i].shuxue < 60 || stu[i].waiyu < 60)
{
icount ++;
}
if(stu[i].yuwen < 60 && stu[i].shuxue < 60 && stu[i].waiyu < 60)
{
acount ++;
}
}
printf("有一門不及格的人數是:%d 所有課程都不及格的人數是: %d", icount, acount);
}
int main()
{
int n=0;
struct student stu[STUSIZE] = {0};
input_stu(stu);
printf("請輸入要檢索的學生學號:\n");
scanf("%d", &n);
findstu(stu, n);
showstu(stu);
return 0;
}
uj5u.com熱心網友回復:
scanf("%s", &p[i].name);
scanf("%s", &p[i].homeaddr);這兩行代碼去掉&才對吧。因為陣列名就是地址呀
uj5u.com熱心網友回復:
陣列名可以不要,這個是陣列元素,必須得要。p可以不要&, p[i]必須得要&轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/124510.html
標籤:C語言
上一篇:不能載入該控制元件檔案
