内容发布更新时间 : 2024/11/2 22:36:06星期一 下面是文章的全部内容请认真阅读。
C语言历次上机作业总汇
void main()
{ struct student s[4]={{10001,\{10002,\ {10004,\int i, j;
printf(\ for (j=0; j<4; j++)
{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ }
fun(s, 4);
printf(\ for (j=0; j<4; j++)
{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ } }
【作业3】
#include
struct { int year,month,day ;} birthday; float score[3]; }STU;
/**********found**********/ void show(STU ___1___) { int i;
printf(\tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++)
/**********found**********/ printf(\ printf(\}
void main( )
{ STU std={ 1,\printf(\/**********found**********/ show(___3___);
C语言历次上机作业总汇
}
【作业题4】
从例中可以看出:变化的是结构体中的学号和姓名 #include
char name[10]; float score[3]; };
void fun( struct student *b) { int i;
/**********found**********/
b__1__ = 10004; //题目中t的学号变化为了10004,因此填写:b->sno,不能填写b.sno,因为b是一个指针
/**********found**********/
strcpy(b__2__, \ //t的姓名变为了”LiJie”,因此填写:b->name }
void main()
{ struct student t={10002,\int i;
printf(\
printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ printf(\
/**********found**********/
fun(__3__); /* 此处为函数调用,根据形参的类型来判定实参,形参struct student *b为结构体指针,联系main函数定义部分只有struct student t和b的类型相同,因此可知需要填的是:&t */ printf(\
printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ printf(\}
考点解析:如果是结构体指针,则在引用时注意要用b->sno,不能用b.sno
函数调用时,形参的类型来要与实参的类型相匹配,这里形参struct student *b为结构体指针,即为地址,则实参要用&t。
【作业5】函数调用and结构体:
C语言历次上机作业总汇
重点注意:
(1)把a中地址作为函数返回值返回函数
(2)观察可知a中的学号、姓名变为了10002和“zhangSan”,每门课的成绩增加了1分 #include
char name[10]; float score[3]; };
/**********found**********/ __1__ fun(struct student *a) int
//根据函数的类型一般由return语句中的表达式类型一致(课本P178),所以此处struct student * { int i;
a->sno = 10002;
strcpy(a->name, \
/**********found**********/
for (i=0; i<3; i++) __2__ += 1; a->score[i]
//题目要求将每门课成绩增加1分,因此填为:a->score[i],不能为a.score[i]或是a.score /**********found**********/
return __3__ ; a //题目要求返回a的地址,a本身就是一个指针,因此填入a即可 }
void main()
{ struct student s={10001,\ *t; int i;
printf(\
printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ printf(\ t = fun(&s);
printf(\
printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ printf(\}
【作业6】
C语言历次上机作业总汇
#include
/**********found**********/ __1__ fun(STU *std, char *num)
{ int i; STU a={\ for (i=0; i /**********found**********/ if( strcmp(__2__,num)==0 ) /**********found**********/ return (__3__); return a; } void main() { STU std[N]={ {\ {\ {\STU p; char n[10]=\ p=fun(std,n); if(p.num[0]==0) printf(\ else { printf(\ \ printf(\ %d-%d-%d\\n\ } } 【解题思路】 填空1:根据函数fun的返回值类型可知,函数类型标识符应该是结构体类型的,所以填入STU。 填空2:根据题目说明,找出指定编号人员,并将其数据返回。通过strcmp函数比较编号,若相同则函数值为0,所以填入std[i].num。 填空3:由题目可知,假如编号对应,则返回其编号对应数据,所以填入数据std[i]。 答案 第十三次作业 1. #include C语言历次上机作业总汇 int fun(int x) { int i; if(x<2) return 0; for(i=2;i void main() { int a; scanf(\ if(fun(a)) printf(\是素数\else printf(\不是素数\\n\} 2. #include void main() { int x,y,z; x=3;y=5;z=7; printf(\} 3. #include int max(int x,int y,int z) { int m; if(x>=y && x>=z) m=x; else if(y>=x && y>=z)