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

C语言历次上机作业总汇

注意:不要改动main函数。不得增行或删行,也不得更改程序的结构! #include int fun ( int m ) { int k = 2;

while ( k<= m && (m%k))

/************found************/ k++

/************found************/ if (m = k ) return 1;

else return 0; }

void main( ) { int n;

printf( \ scanf( \ if ( fun ( n ) ) printf( \ else printf( \}

【作业3改错题】

#include

/************found************/ void fun (char a) { if (*a) { fun(a+1);

/************found************/ printf(\ } }

void main()

{ char s[10]=\

printf(\处理前字符串=%s\\n处理后字符串=\ fun(s); printf(\}

【作业4编程题】求两数中的较大数。要求定义一个函数指针,让函数指针指向一个函数,然后用函数指针调用此函数。

定义一个函数指针的方法前面已经有说明,本题需要让一个函数指针指向一个函数,并且调用此函数。 #include #include \int fun(int a,int b)

C语言历次上机作业总汇

{ int d;

d=a>b?a:b; return d; }

void main( ) {

int(*pmax)( ); /* 定义了一个函数指针pmax */ int x,y,z;

pmax=fun; /* 函数指针指向函数fun */ printf(\ scanf(\

z=(*pmax)(x,y); /* 调用函数指针 */ printf(\}

【作业5填空题】函数fun的主要功能是交换两个数据的值。请填空。

#include

/**********found**********/

void swap(______(1)_________) int *x,int *y { int t;

t=*x ;*x=*y ;*y=t ; }

void main() {

void *px(int *,int *); int a,b;

scanf(“%d,%d”,&a,&b);

/**********found**********/

_______(2)________//调用前赋值 px=&swap;

/**********found**********/

_______(3)__________//利用函数指针调用swap函数答案为:(*px)(&a,&b); printf(“%d,%d”,a,b); }

【作业6填空题】结构体成员引用:上机题库P30第19题(与24、27、35、55相似)

读清楚题目要求:

(1) 要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b

C语言历次上机作业总汇

(2) 从例可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化 #include #include struct student { long sno;

char name[10]; float score[3]; };

void fun(struct student a) { struct student b; int i;

/**********found**********/ b = __1__; a b.sno = 10002;

/**********found**********/ strcpy(__2__, \ b.name

printf(\

printf(\ Name: %s\\nScores: \ /**********found**********/

for (i=0; i<3; i++) printf(\ b.__3__);score[i]

/*因为已经输出了学号和姓名,因此可以得知要输出score成员,因为score是一个数组,因此填:b.score[i],当i变化就可以取出第一门、第二门、第三门课的成绩*/ printf(\}

void main()

{ struct student s={10001,\int i;

printf(\

printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ s.score[i]); printf(\ fun(s); }

解析:基础知识补课:

(1) 申明一个结构体类型,格式为 struct 结构体名 {成员表列}; struct student { long sno;

char name[10]; float score[3]; };

(2)定义结构体类型变量的一种方法:先声明结构体类型,再定义该类型的变量 struct student b;

void fun(struct student a) (3) 结构体变量的初始化

struct student s={10001,\(4) 结构体变量的赋值和引用,输出

C语言历次上机作业总汇

同类的结构体变量可以互相赋值,如b=a;则把a所指结构体变量的数据(全部数据一一对应的)赋值给函数中的结构体变量b

引用结构体变量中成员的值,引用方式为:结构体变量名.成员名 如s.sno, s.name,b.sno,b.name

如果结构体成员中有数组则需要注明数组的下标。如:for (i=0; i<3; i++) printf(\ s.score[i]);

第18次上机作业

【作业题1】结构体成员引用:上机题库P30第19题(与24、27、35、55相似)

读清楚题目要求:

(1) 要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b (2) 从例可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化 #include #include struct student { long sno;

char name[10]; float score[3]; };

void fun(struct student a) { struct student b; int i;

/**********found**********/ b = __1__; a b.sno = 10002;

/**********found**********/ strcpy(__2__, \

printf(\

printf(\ Name: %s\\nScores: \ /**********found**********/

for (i=0; i<3; i++) printf(\ b.__3__);

/*因为已经输出了学号和姓名,因此可以得知要输出score成员,因为score是一个数组,因此填:b.score[i],当i变化就可以取出第一门、第二门、第三门课的成绩*/ printf(\}

void main()

{ struct student s={10001,\int i;

printf(\

printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ s.score[i]); printf(\ fun(s);

C语言历次上机作业总汇

解析:基础知识补课:

(1) 申明一个结构体类型,格式为 struct 结构体名 {成员表列}; struct student { long sno;

char name[10]; float score[3]; };

(2)定义结构体类型变量的一种方法:先声明结构体类型,再定义该类型的变量 struct student b;

void fun(struct student a) (3) 结构体变量的初始化

struct student s={10001,\

(4) 结构休变量的赋值和引用,输出同类的结构体变量可以互相赋值,如b=a;则把a所指结构体变量的数据(全部数据一一对应的)赋值给函数中的结构体变量b。

引用结构体变量中成员的值,引用方式为:结构体变量名.成员名 如s.sno, s.name,b.sno,b.name

如果结构体成员中有数组则需要注明数组的下标。如:for (i=0; i<3; i++) printf(\ s.score[i]);

【作业2】结构体和排序:上机题库55套p76

#include #include struct student { long sno;

char name[10]; float score[3]; };

void fun(struct student a[], int n) {

/**********found**********/

__1__ t;//此处要求填入t的类型,可以从t = a[i];中得知t和a数组的类型必须一致,void fun(struct student a[], int n)中得知a为结构体类型,因此填写:struct student int i, j;

/**********found**********/

for (i=0; i<__2__; i++)//根据选择排序(设有4名学生,将第一个学生与后三名学生进行比较,若都比他们大,则不进行交换。若有一名学生比他小,则进行交换,此时第一个放的就是他们中最小者,以此类推,4个学生外层需要比较3轮,因此填n-1,特别提醒,不能填3) for (j=i+1; j

/**********found**********/

if (strcmp(__3__) > 0)//按照姓名字典顺序从小到大排序,因此:strcmp(a[i].name,a[j].name), { t = a[i]; a[i] = a[j]; a[j] = t; } }