admin 管理员组

文章数量: 1087135


2024年3月21日发(作者:网站全用ajax)

太原理工大学现代科技学院

C语言程序设计课程 实验报告

专业班级

学 号

姓 名

指导教师 焦雄

实验名称

实验一 C语言程序的运行环境和运行过程

实验二 C语言运算符和表达式

实验目的和要求

1.

2.

3.

4.

5.

学会安装C语言编译系统,如:Turbo C、Win-TC、Visual C++等;

学会在上述某种编译系统中程序的编辑、编译、连接和运行;

通过运行简单的C程序,初步了解C源程序的特点;

理解C语言的数据类型,掌握各种常量的表示,变量的定义、初始化和赋值;

理解C语言的算术运算符以及表达式的求值过程。

实验内容

1.

2.

3.

4.

下载并安装C语言编译系统,设置编辑环境。

输入并运行第1章例1-1和例1-2中程序,并记录遇到的问题和解决方法。

输入并运行第2章例2-2和例2-3中程序,并记录遇到的问题和解决方法。

求下面算术表达式的值(先自己分析,再试着用程序求解,比较得到的结果是否一致)。

⑴ 设x=2,a=7,y=4,求x+a%3*(x+y)%2/4;

⑵ 设a=2,b=3,x=3.5,y=2.5,求(float)(a+b)/2+(int)x%(int)y;

5. 写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量(先自己分析,再

试着用程序求解,比较得到的结果是否一致)。

⑴ a+=a ⑵ a-=2

⑶ a*=2+3 ⑷ a/=a+a

⑸ a%=(n%=2),n的值等于5;⑹ a+=a-=a*=a;

主要仪器设备 台式或笔记本电脑

实验记录(写出实验内容中4,5的程序代码和运行结果)(可分栏或加页)

4.(1)

#include

void main()

{

int x,a,y,i;

x=2,a=7,y=4;

i=x+a%3*(x+y)%2/4;

printf("%dn",i);

}

i=2

(2).

#include

void main()

{

float a=2,b=3,x=3.5,y=2.5,i;

i=(float)(a+b)/2+(int)x%(int)y;

printf("%fn",i);

}

i=3.500000

1

5.

#include

void main()

{

int a=10,n=5;

a+=a;

printf("%dn",a);

a=10,a-=2;

printf("%dn",a);

a=10,a*=2+3;

printf("%dn",a);

a=10,a/=a+a;

printf("%dn",a);

a=10,a%=(n%=2);

printf("%dn",a);

a=10,a+=a-=a*=a;

printf("%dn",a);

}

遇到的问题和解决方法

心得体会

2

实验名称

实验三简单程序、分支程序和循环程序设计

实验目的和要求

1.

2.

3.

4.

理解C语言程序的基本结构和实现基本结构的语句;

熟练应用赋值、输入和输出语句;

理解并掌握关系运算符、逻辑运算符及其表达式的使用;

熟练掌握if语句、switch语句、while语句、do—while语句和for语句的用法;

实验内容

1.

2.

3.

4.

输入并运行第3章例3-3、例3-6中的程序,通过输出结果理解对应的格式说明。

输入并运行第3章例3-8、例3-10中的程序,注意输入数据的格式。

已知圆柱半径r=1.5,圆柱高h=3,编程求圆周长,圆面积和圆柱体积。

输入一百分制成绩,输出成绩等级A、B、C、D、E。90分以上为A,80~89为B,70~79

分为C,60~69分为D,60分以下为E。要求程序能处理错误的输入数据。

-6

5. 利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值,直到最后一项的绝对值小于10

-6

为止。(fabs(t)表示t的绝对值,1e-6=1*10)。

6. 求100-200间所有素数。

7. 输出三角形的九九乘法口诀表。

8.

打印水仙花数。水仙花数是指一个3位数,其各位数字立方和等于该数本身。

主要仪器设备 台式或笔记本电脑

实验记录(写出实验内容中3,5,7的程序代码和运行结果)(可分栏或加页)

3.

#include

#define PI 3.14159

void main()

{

float r=1.5,h=3,c,s,v;

c=2*PI*r;

s=PI*r*r;

v=s*h;

printf("%f %f %fn",c,s,v);

}

3

5.

#include

void main()

{

}

float i = 1, k = 1, PI = 0;

do {

PI += i / k;

k = k + 2;

i = -i;

} while (1 / k >= 0.000001);

PI = PI / 4;

printf("PI=%fn", PI);

7.

#include "stdio.h"

void main()

{

}

int i, j, s;

for (i = 1; i<10; i++)

{

}

for (j = 1; j<=i; j++)

{

}

printf("n");

s = i*j;

printf("%d*%d=%-3d", i, j, s);

4

遇到的问题和解决方法

心得体会

5

实验名称

实验目的和要求

实验四数组应用程序设计

1. 掌握数组的定义、初始化和数组元素的引用方法;

2. 掌握与数组有关的算法,如:求最大(小)值,排序等;

3. 理解字符数组与字符串的关系,掌握字符串的处理过程和常用字符串处理函数。

实验内容

1.求一个3*3的整型矩阵对角线元素之和。

2.输出杨辉三角(输出10行)

3.用数组求Fibonacci数列的前20项。

4.例4-14

5.例4-15

主要仪器设备 台式或笔记本电脑

实验记录(写出实验内容中2,3的程序代码和运行结果)(可分栏或加页)

2.

#include

void main()

{

}

int i, j, n = 10, a[10][10] = { 0 };

for (i = 0; i

{

}

for (i = 0; i

{

}

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

printf("%5d", a[i][j]);

printf("n");

for (j = 1; j <= i; j++)

a[i][j] = a[i - 1][j - 1] + a[i - 1][j];

a[i][0] = 1;

for (i = 1; i

6

3.

#include

int main()

{

}

int i, a[20];

a[0] = 1; a[1] = 1;

for (i = 2; i<20; i++)

{

}

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

printf("%5d", a[i]);

printf("n");

a[i] = a[i - 1] + a[i - 2];

遇到的问题和解决方法

心得体会

7

实验名称

实验五指针应用程序设计

实验目的和要求

1. 理解指针的概念,掌握指针变量的定义和赋值,掌握使用指针变量访问数据的方法;

2. 学会使用指针处理数组中的数据,学会用指针处理字符串;

3. 了解指针数组和指向指针的指针;

实验内容

1. 输入并运行第5章例5-1、例5-3中的程序,观察输出结果,理解指针变量的用法。

2. 输入并运行第5章例5-5中的程序,掌握使用指针变量访问数组元素的方法。

3. 编程序,输入有一个英文句子,将每个单词的第一个字母改为大写。(使用指针)

主要仪器设备 台式或笔记本电脑

实验记录(写出实验内容中3的程序代码和运行结果)(可分栏或加页)

3.

#include "stdio.h"

#include "ctype.h"

void main()

{

}

char s[100];

char *p = s;

printf("请输入句子:");

gets_s(s);

if (islower(*p))*p -= 32;

p++;

while (*p)

{

}

puts(s);

if (islower(*p) && !isalpha(*(p - 1)))

(*p) -= 32;

p++;

8

遇到的问题和解决方法

心得体会

9

实验名称 实验六函数应用程序设计

实验目的和要求

1. 掌握C语言函数的定义、调用和声明方法,掌握函数的参数传递方式;

2.

了解变量的作用域和存储类别。

实验内容

1. 设计一函数,判断一个字符串是否是回文。“回文”是一种顺序读和反序读都一样的字

符串,例如:“121”“abcba” “ABCCBA”。在主函数中输入字符串并输出判断结果。

2. 编写一个程序,由主函数和如下函数构成。

⑴设计函数:input(),输入n个无序的整数存储在一个数组中;

⑵设计函数:sort(),用起泡法对数组中的n各数据从大到小排序;

⑶设计函数:search(),求m到n之间的所有素数。

在主函数中调用上述函数,验证函数的功能。

3.输入并运行第6章例6-27中的程序,根据输出结果总结局部静态变量的特点。

主要仪器设备 台式或笔记本电脑

实验记录(写出实验内容中1,2,3的程序代码和运行结果)(可分栏或加页)

1

#include

#include

int h, i = 0, j;

int huiwen(char a[100])

{

if (h % 2 == 0)

{

}

else

{

for (i = 0; i<(h - 1) / 2; i++)

{

if (a[i] != a[h - i - 1])

{

j = 0;

10

for (i = 0; i

{

}

if (a[i] != a[h - i - 1])

{

}

else

j = 1;

j = 0;

break;

}

}

}

}

break;

else

j = 1;

return j;

int main()

{

}

return 0;

char s[100];

printf("请输入一断字符串:n");

gets_s(s);

h = strlen(s);

if (huiwen(s) == 0)

{

}

else

printf("是回文");

printf("不是回文");

2.

#include

#include

int i, j, h[100], n;

void input();

void sort(int s[100]);

void search();

void input()

{

char ch;

i = 0;

11

}

printf("请输入数字:n");

while (1)

{

}

n = i + 1;

scanf("%d", &h[i]);

ch = getchar();

if (ch == 'n')

break;

i++;

void sort(int s[100])

{

}

void search()

{

int m, lemp = 1;

printf("请输入从第几个开始要查询的素数:n");

scanf("%d", &m);

for (i = m - 1; i

{

for (j = 2; j <= sqrt(h[i] + 1); j++)

{

if (h[i] % j == 0)

{

lemp = 0;

12

int temp;

for (i = 0; i

{

}

printf("排序后的结果n");

for (i = 0; i

printf("%6d", s[i]);

printf("n");

for (j = 0; j

{

}

if (s[j]

{

}

temp = s[j];

s[j] = s[j + 1];

s[j + 1] = temp;

}

}

}

}

break;

if (lemp == 1)

{

}

lemp = 1;

printf("%6dn", h[i]);

int main()

{

}

input();

sort(h);

search();

return 0;

3.

#include

int fac1();

int fac2();

int main()

{

}

13

int i;

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

printf("%5d", fac1());

printf("n");

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

printf("%5d", fac2());

printf("n");

return 0;

int fac1()

{

}

int fac2()

{

}

int y = 1;

y *= 5;

return(y);

static int x = 1;

x *= 5;

return(x);

遇到的问题和解决方法

心得体会

14

实验名称

实验七结构体应用程序设计

实验目的和要求

1. 理解结构体的概念,掌握结构体类型的定义和结构体变量、数组和指针的定义;

2. 掌握结构体变量和结构体数组的初始化方法;

3. 掌握结构体变量和结构体成员的引用方法;

实验内容

1. 输入并运行第7章例7-1中的程序。理解结构体类型、变量和结构体成员。

2. 编写一个程序实现如下功能:定义一个点的结构数据类型,实现下列功能:

⑴输入点的坐标值。

⑵求两个点中点坐标。

⑶求两点间距离。

主要仪器设备 台式或笔记本计算机

实验记录(写出实验内容中1,2的程序代码和运行结果)(可分栏或加页)

1.

#include

struct complex

{

};

int main()

{

}

struct complex x, y, s, p;

scanf("%f,%f", &, &);

scanf("%f,%f", &, &);

= + ;

= + ;

= * - *;

= * - *;

printf("两复数的和为:%f+%fin", , );

printf("两复数的积为:%f+%fin", , );

return 0;

float real;

float imag;

15

2.

#include

#include

struct point

{

};

int main()

{

}

struct point x, y;

float a, b, c;

scanf("%f%f", &sa, &te);

scanf("%f%f", &sa, &te);

a = (sa + sa) / 2;

b = (te + te) / 2;

c = sqrt((sa - sa)*(sa - sa)

+ (te - te)*(te - te));

printf("两个点的中点坐标为:(%.2f,%.2f)n", a, b);

printf("两点间的距离为:%.4fn", c);

return 0;

float abscissa;

float ordinate;

遇到的问题和解决方法

心得体会

16

实验名称 实验八文件操作程序设计

实验目的和要求

1.

理解文件、文件类型、文件类型指针,熟悉文件的操作过程。

2.

掌握文件打开、关闭和文件读写等文件操作函数的手机用。

实验内容

3. 有5个学生,每个学生有3门课的成绩,从键盘输入学生数据(包括学生号,姓名,三门课

成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。

4. 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺

序排列),输出到一个新文件C中。

主要仪器设备 台式或笔记本计算机

实验记录(写出实验内容中3,4的程序代码和运行结果)(可分栏或加页)

3.

#include

#include

struct student

{

};

int main(void)

{

int no;

char name[11];

float mat;

float eng;

float cha;

float ave;

struct student a[5];

int i; FILE *fp;

for (i = 1; i<6; i++)

{

}

17

printf("n请输入第%d为学生学号:", i);

scanf("%d", &a[i].no);

printf("n请输入第%d位学生姓名:", i);

scanf("%s", &a[i].name);

printf("n请输入第%d位学生数学成绩:", i);

scanf("%f", &a[i].mat);

printf("n请输入第%d位学生语文成绩:", i);

scanf("%f", &a[i].cha);

printf("n请输入第%d位学生英语成绩:", i);

scanf("%f", &a[i].eng);

a[i].ave = ((a[i].mat + a[i].cha + a[i].eng) / 3);

printf("第%d位学生的平均成绩为:%fn", i, a[i].ave);

}

fp = fopen("stud", "r");

for (i = 1; i<5; i++)

if (fwrite(&a[i], sizeof(struct student), 1, fp) != 1)

printf("file write errorn");

fclose(fp);

4.

#include

#include

#include

int main()

{

FILE *fp1, *fp2, *fp3;

char ch[255], temp;

int i = 0, j, n;

if ((fp1 = fopen("", "r")) == NULL)

{

18

}

}

printf("不能打开源文件!n");

return 0;

if ((fp2 = fopen("", "r")) == NULL)

{

}

if ((fp3 = fopen("", "w")) == NULL)

{

}

while (!feof(fp1))

{

}

i--;

while (!feof(fp2))

{

}

i--;

ch[i] = 0;

n = strlen(ch);

for (i = 0; i

{

}

for (i = 0; i

{

}

fclose(fp1);

fclose(fp2);

fclose(fp3);

fputc(ch[i], fp3);

putchar(ch[i]);

for (j = i + 1; j

if (ch[i]>ch[j])

{

}

temp = ch[i];

ch[i] = ch[j];

ch[j] = temp;

ch[i++] = fgetc(fp2);

ch[i++] = fgetc(fp1);

printf("不能打开源文件!n");

return 0;

printf("不能打开源文件!n");

return 0;

19

遇到的问题和解决方法

心得体会

20


本文标签: 实验 指针 变量 结果 程序