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
版权声明:本文标题:c语言程序设计实验指导答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711014008a584062.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论