文档库

最新最全的文档下载
当前位置:文档库 > C基础练习题

C基础练习题

实验十指针练习

【实验目的】

掌握指针的定义和使用。

【实验平台】

带有Linux操作系统的PC机。

【实验步骤】

1.编写一个程序实现功能:将字符串”Computer Science”赋给一个字符数组,然后从

第一个字母开始间隔的输出该字符串,用指针完成。

2.用指针将整型组s[8]={1,2,3,4,5,6,7,8}中的值逆序存放。

3. 编写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。

char str1[20]={“Hello ”}, str2[20]={“World ”};

4. 编写一个程序实现以下功能:用指针数组处理一个二维数组,求出二维数组所有元素的和。

int array[3][4]={ {7, 10, -2, 3},

{14, 30, 6, -15},

{0, 5, 27, -7} };

5.已知数组a[10]和b[10]中元素的值递增有序,用指针实现将两个数组中的元素按递增

的顺序输出。

6.定义字符指针数组char *str[5]分别指向5个字符串常量,从小到大输出字符串的内容。

7.已知数组内容如下s[]={1,2,3,4,5,6,7,8,9}, 输入一个数n(1 <= n <= 9),使得该数

组内容顺序后移n个位置。如n=3时,数组后移3个位置后的内容为{7,8,9,1,2,3,4,5,6}

8.输入一个字符串,内有数字和非数字字符,如a123x456 17960? 302tab5876 将其中连

续的数字作为一个整数,依次存放到整型数组a中。例如,123放在a[0],456放在a[1],统计共有多少个整数,并输出这些数。

实验十一 函数练习

【实验目的】

掌握函数的声明、定义和调用。

【实验平台】

带有Linux 操作系统的PC 机。

【实验步骤】

1. 编写函数分别实现以下功能:(1)求两个数之和;(2)求两个数之差;(3)求两个数之积。

2. 编写一个函数,包括一个字符参数和两个整型参数。字符参数是需要输出的字符,第一个整型参数说明了在每行中该字符输出的个数,而第二个整型参数指的是需要输出的行数,编写一个调用该函数的程序。

3. 编写一个函数taxis ()实现数组的排序,在函数中调用swap ()实现两个数的交换。打印出排序结果。

4. 编写一个函数,实现两个字符串的比较。

5. 编写一个函数is-within().它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中。就返回1(真);如果字符不在字符串中,就返回0(假)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。

6. 输出程序运行时的命令行参数。例如:

./myprog a b c

a b c

7. 以下函数拍的功能是用递归的方法计算x 的n 阶勒让德多项式的值。已有调用语句p (n ,x );编写函数实现功能。递归公式如下:

??

???>---===--)1(/))()1()()12(()1()0(1)(21n n x P n x xP n n x

n x P n n x

实验十二结构体、共用体实验

12.1 基本结构体实验

【实验内容】

试利用结构体类型编程,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩

(1)基本实现方法,在main函数中结构体,并实现功能

(2)定义结构体指针进行操作

(3)在main外建立结构体,构建函数foo,向foo函数传递结构题成员作为参数

(4)在main外建立结构体,并构建没有参数和返回值的函数foo

(5)在main外建立结构体,构建传递结构体指针并返回void的函数foo

(6)在main外建立结构体,构建传递结构体指针并返回结构体指针的函数foo 【实验目的】

本实验通过一系列的步骤,从最基本的结构体建立开始,一步一步地完善整个结构体的操作,从而完整的掌握结构体的内容

【实验平台】

PC机、ubuntu操作系统,gcc等工具

【实验步骤】

1、基本实现方法,在main函数中结构题,并实现功能

struct-1.c

#include

int main(int argc, char **argv)

{

struct results

{

float interim_results;

float end_results;

float average_scores;

}student;

printf("Input interim_results:");

scanf("%f",&student.interim_results);

printf("Input end_results:");

scanf("%f",&student.end_results);

student.average_scores = (student.interim_results + student.end_results) / 2;

printf("%.2f\n", student.average_scores);

return 0;

}

编译:

gcc –o struct-1 stuct-1.c

执行:

./struct-1

Input interim_results:12

Input end_results:16

14.00

2、定义结构体指针进行操作

struct-1.c

#include

#include

int main(int argc, char **argv)

{

struct results

{

float interim_results;

float end_results;

float average_scores;

};

struct results *student = malloc(sizeof(struct results));

printf("Input interim_results:");

scanf("%f",&student->interim_results);

printf("Input end_results:");

scanf("%f",&student->end_results);

student->average_scores = (student->interim_results + student->end_results) / 2;

printf("%.2f\n", student->average_scores);

return 0;

}

编译:

gcc –o struct-2 stuct-2.c

执行:

./struct-2

Input interim_results:12

Input end_results:16

14.00

3、在main外建立结构体,构建函数foo,向foo函数传递结构题成员作为参数struct-3.c

#include

#include

struct results

{

float interim_results;

float end_results;

float average_scores;

};

int foo(float *interim_results, float *end_results, float *average_scores)

{

*average_scores = (*interim_results + *end_results) / 2;

return 0;

}

int main(int argc, char **argv)

{

struct results *student = malloc(sizeof(struct results));

printf("Input interim_results:");

scanf("%f", &student->interim_results);

printf("Input end_results:");

scanf("%f", &student->end_results);

foo(&student->interim_results, &student->end_results, &student->average_scores);

printf("The average socres is:%.2f\n", student->average_scores);

return 0;

}

编译:

gcc –o struct-3 stuct-3.c

执行:

./struct-3

Input interim_results:21

Input end_results:32

The average socres is:26.50

4、在main外建立结构体,并构建没有参数和返回值的函数foo

struct-4.c

#include

#include

struct results

{

float interim_results;

float end_results;

float average_scores;

void foo()

{

struct results *student = malloc(sizeof(struct results));

printf("Input interim_results:");

scanf("%f", &student->interim_results);

printf("Input end_results:");

scanf("%f", &student->end_results);

student->average_scores = (student->interim_results + student->end_results) / 2;

printf("The average socres is:%.2f\n", student->average_scores);

}

int main(int argc, char **argv)

{

foo();

return 0;

}

编译:

gcc –o struct-4 stuct-4.c

执行:

./struct-4

Input interim_results:21

Input end_results:32

The average socres is:26.50

5、在main外建立结构体,构建传递结构体指针并返回void的函数foo

struct-5.c

#include

#include

struct results

{

float interim_results;

float end_results;

float average_scores;

};

void foo(struct results *student)

{

printf("Input interim_results:");

scanf("%f", &student->interim_results);

printf("Input end_results:");

scanf("%f", &student->end_results);

student->average_scores = (student->interim_results + student->end_results) / 2;

}

int main(int argc, char **argv)

{

struct results *student = malloc(sizeof(struct results));

foo(student);

printf("The average socres is:%.2f\n", student->average_scores);

return 0;

}

编译:

gcc –o struct-5 stuct-5.c

执行:

./struct-5

Input interim_results:21

Input end_results:32

The average socres is:26.50

6、在main外建立结构体,构建传递结构体指针并返回结构题指针的函数foo

struct-6.c

#include

#include

struct results

{

float interim_results;

float end_results;

float average_scores;

};

struct results *foo()

{

struct results *student = malloc(sizeof(struct results));

printf("Input interim_results:");

scanf("%f", &student->interim_results);

printf("Input end_results:");

scanf("%f", &student->end_results);

student->average_scores = (student->interim_results + student->end_results) / 2;

return student;

}

int main(int argc, char **argv)

{

struct results *student;

student = foo();

printf("The average socres is:%.2f\n", student->average_scores);

return 0;

}

编译:

gcc –o struct-6 stuct-6.c

执行:

./struct-6

Input interim_results:21

Input end_results:32

The average socres is:26.50

12.2 结构体指针实验

【实验内容】

试利用指向结构体的指针编制一个程序,实现输入3个学生的学号、数学期中和期末成绩,然后计算其平均成绩并输出成绩表

【实验目的】

本实验主要是要熟悉结构体指针的使用方法,以及在函数之间传递结构体指针的功能。

【实验平台】

PC机、ubuntu操作系统,gcc等工具

【实验步骤】

1、定义结构体数组,进行操作

struct-1.c

#include

#include

struct results

{

int id;

float interim_results;

float end_results;

float average_scores;

};

int main()

{

int i;

struct results student[3];

for(i=0; i<3; i++)

{

printf("Input ID:");

scanf("%d",&student[i].id);

printf("Input interim results:");

scanf("%f",&student[i].interim_results);

printf("Input end results:");

scanf("%f",&student[i].end_results);

student[i].average_scores = (student[i].interim_results + student[i].end_results) / 2;

}

printf("###########################################\n");

printf("ID\tinterim\tend\taverage\n");

for(i=0; i<3; i++)

{

printf("%d\t%.2f\t%.2f\t%.2f\n",student[i].id, student[i].interim_results,

student[i].end_results, student[i].average_scores);

}

printf("###########################################\n");

return 0;

}

编译:

gcc –o struct-1 stuct-1.c

执行:

./struct-1

Input ID:1

Input interim results:67

Input end results:87

Input ID:2

Input interim results:98

Input end results:67

Input ID:3

Input interim results:98

Input end results:78

###########################################

ID interim end average

1 67.00 87.00 77.00

2 98.00 67.00 82.50

3 98.00 78.00 88.00

###########################################

2、定义结构题指针,进行操作

struct-2.c

#include

#include

struct results

{

int id;

float interim_results;

float end_results;

float average_scores;

};

int main()

{

int i;

struct results student[3], *p = student;

for(i=0; i<3; i++)

{

printf("Input ID:");

scanf("%d",&p->id);

printf("Input interim results:");

scanf("%f",&p->interim_results);

printf("Input end results:");

scanf("%f",&p->end_results);

p->average_scores = (p->interim_results + p->end_results) / 2;

p++;

}

p = student;

printf("###########################################\n");

printf("ID\tinterim\tend\taverage\n");

for(i=0; i<3; i++)

{

printf("%d\t%.2f\t%.2f\t%.2f\n",p->id, p->interim_results,

p->end_results, p->average_scores);

p++;

}

printf("###########################################\n");

return 0;

}

编译:

gcc –o struct-2 stuct-2.c

执行:

./struct-2

Input ID:1

Input interim results:67

Input end results:87

Input ID:2

Input interim results:98

Input end results:67

Input ID:3

Input interim results:98

Input end results:78

###########################################

ID interim end average

1 67.00 87.00 77.00

2 98.00 67.00 82.50

3 98.00 78.00 88.00

###########################################

3、编写printp函数,实现成绩打印功能,传递结构体数组为其参数

struct-3.c

#include

#include

struct results

{

int id;

float interim_results;

float end_results;

float average_scores;

};

void printp(struct results student[])

{

int i;

printf("###########################################\n");

printf("ID\tinterim\tend\taverage\n");

for(i=0; i<3; i++)

{

printf("%d\t%.2f\t%.2f\t%.2f\n",student[i].id, student[i].interim_results,

student[i].end_results, student[i].average_scores);

}

printf("###########################################\n");

}

int main()

{

int i;

struct results student[3];

for(i=0; i<3; i++)

{

printf("Input ID:");

scanf("%d",&student[i].id);

printf("Input interim results:");

scanf("%f",&student[i].interim_results);

printf("Input end results:");

scanf("%f",&student[i].end_results);

student[i].average_scores = (student[i].interim_results + student[i].end_results) / 2;

}

printp(student);

return 0;

}

编译:

gcc –o struct-3 stuct-3.c

执行:

./struct-3

Input ID:1

Input interim results:67

Input end results:87

Input ID:2

Input interim results:98

Input end results:67

Input ID:3

Input interim results:98

Input end results:78

###########################################

ID interim end average

1 67.00 87.00 77.00

2 98.00 67.00 82.50

3 98.00 78.00 88.00

###########################################

4、同上,传递结构体指针为其函数参数

struct-4.c

#include

#include

struct results

{

int id;

float interim_results;

float end_results;

float average_scores;

};

void printp(struct results *student)

{

int i;

printf("###########################################\n");

printf("ID\tinterim\tend\taverage\n");

for(i=0; i<3; i++)

{

printf("%d\t%.2f\t%.2f\t%.2f\n",student->id, student->interim_results,

student->end_results, student->average_scores);

student++;

}

printf("###########################################\n");

}

int main()

{

int i;

struct results *swap, *student = malloc(sizeof(struct results) * 3);

swap = student;

for(i=0; i<3; i++)

{

printf("Input ID:");

scanf("%d",&student->id);

printf("Input interim results:");

scanf("%f",&student->interim_results);

printf("Input end results:");

scanf("%f",&student->end_results);

student->average_scores = (student->interim_results + student->end_results) / 2;

student++;

}

student = swap;

printp(student);

return 0;

}

编译:

gcc –o struct-4 stuct-4.c

执行:

./struct-4

Input ID:1

Input interim results:67

Input end results:87

Input ID:2

Input interim results:98

Input end results:67

Input ID:3

Input interim results:98

Input end results:78

###########################################

ID interim end average

1 67.00 87.00 77.00

2 98.00 67.00 82.50

3 98.00 78.00 88.00

###########################################