C语言历次上机作业总汇 下载本文

内容发布更新时间 : 2024/5/4 15:42:31星期一 下面是文章的全部内容请认真阅读。

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 typedef struct { int num; char name[9]; char sex;

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 #include struct student { long sno;

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 #include struct student { long sno;

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 #include #define N 8 typedef struct { char num[10]; int year,month,day ; }STU;

/**********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;ix) return 1; else return 0; }

void main() { int a;

scanf(\

if(fun(a)) printf(\是素数\else

printf(\不是素数\\n\} 2.

#include int fun(int x) { int i,s=1; for(i=1;i<=x;i++) s=s*i; return s; }

void main() { int x,y,z; x=3;y=5;z=7; printf(\} 3.

#include void main() { int a,b,c,d,e,f,g; scanf(\ printf(\ printf(\ printf(\}

int max(int x,int y,int z) { int m; if(x>=y && x>=z) m=x; else if(y>=x && y>=z)