《C语言程序设计》实验题
更新时间:2024-05-02 05:51:01 阅读量: 综合文库 文档下载
《C语言程序设计》
实验指导
1
目录
实验一 C程序的运行环境和运行一个C程序的方法 ................ 1 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十 实验十一实验十二 数据类型、运算符和表达式 ............................... 2 最简单的C程序设计..................................... 4 选择结构程序设计 ...................................... 6 循环控制 .............................................. 8 数组 ................................................. 10 函数 ................................................. 12 预处理命令 ........................................... 13 指针 ................................................. 15 结构体和共用体 ....................................... 17 位运算 ............................................... 20 文件 ................................................. 21
2
实验一:C程序的运行环境和运行一个C程序的方法(2学时) 实验性质:验证性实验 一、 实验目的
1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容
1.调用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的?
2.输入并运行教材第一章中例1.2。
3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。
1
实验二 数据类型、运算符和表达式(2学时) 实验性质:验证性实验 一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。
2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
3.进一步熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容
1.输入并运行教材第三章例3.6.即:
#include
printf(?%c %c\\n?,c1,c2); printf(?%d %d\\n?,c1,c2); }
在此基础上 ①将第二行改为: int c1,c2;
再使之运行,分析结果。 ②再将第三行、第四行改为: c1=300;c2=400;
再使之运行,分析其运行结果。
2.输入并运行教材第三章习题3.6,在上机前先用人工分析程序写出应得结果,上机后将二者对照。
3.输入并运行习题3.10。即:
2
main( )
{int i,j,m,n; i=8;j=10; m=++i;n=j++;
printf(?%d,%d,%d,%d?,i,j,m,n); }
分别作以下改动并运行: ①将第4行改为: m=i++;n=++j; ②程序改为: main( ) {int i,j; i=8;j=10;
printf(?%d,%d?,i++,j++); }
③在②的基础上,将printf语句改为: printf(?%d,%d?,++i,++j); ④再将printf语句改为:
printf(?%d,%d,%d,%d?,i,j, i++,j++); ⑤程序改为: main( )
{int i,j,m=0,n=0; i=8;j=10; m+=i++;n- = - -j;
printf(?i=%d,j=%d,m=%d,n=%d?,i,j,m,n); }
3
实验三 最简单的C程序设计(2学时) 实验性质:验证性实验 一、实验目的
1.掌握C语言中使用最多的一种语句——赋值语句的使用。 2.掌握数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容
1.输入并运行以下程序: main( ) {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61;b=62; c1=’a’;c2=’b’; d=3.56;e=-6.87;
f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000;
printf(?a=%d,b=%d\\n c1=%c,c2=%c\\nd=%6.2f,e=%6.2f\\n?,a,b,c1,c2,d,e); printf(?f=.6f,g=.12f\\nm=%ld,n=%ld\\np=%u,q=%u\\n?,f,g,m,m,p,q); }
在此基础上,做以下改动: ① 将程序第8-13行改为: a=61;b=62; c1=a;c2=b;
f=3157.890121;g=0.123456789; d=f;e=g;
4
p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。
② 在①的基础上将printf语句改为:
printf(?a=%d,b=%d\\n c1=%c,c2=%c\\nd=.6f,e=.12f\\n?,a,b,c1,c2,d,e);
printf(?f=%f,g=%f\\n m=%ld,n=%ld\\n p=%d,q=%d\\n?,f,g,m,n,p,q); 运行程序。
2.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
上机运行程序,比较用printf和putchar函数输出字符的特点。
5
实验四 选择结构程序设计(2学时) 实验性质:验证性实验 一、实验目的
1.了解C语言表示逻辑量的方法(以0代表?假?,以1代表?真?); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。 二、实验内容
1、运行程序,并分析程序的功能。
main( )
{ int a,b,c;
scanf(?%d,%d,%d?,&a,&b,&c); if(a
printf(?max=%d\\n?,c); else
printf(?max=%d\\n?,b); else if (a printf(?max=%d\\n?,c); else printf(?max=%d\\n?,a); } 将上述程序改为以下形式,请分析两者有什么不同,实现的功能是否相同? main( ) {int a,b,c,temp,max; scanf(?%d,%d,%d?,&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf(?%d\\n?,max); } 6 2、运行程序,并分析程序完成的功能。 main( ) { int x,y; scanf(?%d?,&x); if(x<1) {y=x; printf(?x==,y=x=%d\\n?x,y); else if(x<10) {y=2*x-1; printf(?x==,y=2*x-1=%d\\n?x,y); } else {y=3*x-11; printf(?x==,y=3*x-11=%d\\n?x,y); } } 7 实验五 循环控制(2学时) 实验性质:验证性实验 一、实验目的 1、熟悉用while语句,do-while语句和for语句实现循环的方法。 2、掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 二、实验内容 1、下面程序完成的功能是:输入两个正整数,求其最大公约数和最小公倍数。请将程序补充完整,并调试运行,分析结果是否正确。 main( ) { int p,r,n,m,temp; scanf(?%d,%d?,&n,&m); if(n { temp=n;n=m ;m=temp;} ; while( ) {r=n%m ; n=m ; m=r;} printf(?%d\\n?,n); printf(?%d\\n?,p/n); } 2、下面程序完成的功能是:用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。请将程序补充完整,并调试运行,分析结果是否正确。 #include {float x,x0,f,f1; ; do { ; f=((2 * x0-4) * x0+3) * x0-6; f1=(6 * x0-8) * x0+3; 8 x=x0-f/f1; } while(fabs(x-x0)>=1e-5); printf(?the root of equation is %5.2f\\n?,x); } 9 实验六 数组(2学时) 实验性质:验证性实验 一、实验目的 1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组和字符串函数的使用。 3.掌握与数组有关的算法(特别是排序算法)。 二、实验内容 1、下面程序完成的功能是:用选择法对10个整数按从小到大进行排序。请将程序补充完整,并调试运行,分析结果是否正确。 main( ) {int i,j ,min, temp ,a[11]; printf(?enter data:\\n?); for(i=1 ;i<=10 ;i++) { printf(?a[%d]=?,i); scanf(?%d?,&a[i]);} printf(?\\n?); for(i=1; i<=10; i++) printf(?]?,a[i]); printf(?\\n?); for(i=1; i<=9; i++) { ; for(j=i+1; j<=10; j++) if( ) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp;} printf(?\\nthe sorted numbers:\\n?); for(i=1; i<=10 ;i++) 10 printf(?]?,a[i]); } 2、运行程序,并分析下面程序所完成的功能。 main( ) {char s1[80] ,s2[40]; int i=0 ,j=0; printf(?\\ninput string1:?); scanf(?%s?,s1); printf(?\\ninput string2:?); scanf(?%s?,s2); while(s2[j]!=’\\0’) s1[i++]=s2[j++]; s1[i]=’\\0’; printf(?the new string is:%s?,s1); } 11 实验七 函数(2学时) 实验性质:设计性实验 一、实验目的 1.掌握定义函数的方法; 2.掌握函数实参与形参的对应关系,以及?值传递?的方式; 3.掌握函数的嵌套调用和递归调用的方法; 4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。 二、实验内容 编程序并上机调试运行。 1、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 2、写一函数,用?起泡法?对输入的10个整数按由小到大进行排序。 12 实验八 预处理命令(1学时) 实验性质:验证性实验 一、实验目的 1.掌握宏定义的方法; 2.掌握文件包含处理方法; 3.掌握条件编译的方法。 二、实验内容 1、运行程序,并分析程序完成的功能。 #define SWAP(a,b) t=b;b=a;a=t main( ) { int a,b,t; print(?input two integers:a,b?); scanf(?%d,%d?,&a,&b); SWAP(a,b); printf(?now ,a=%d,b=%d\\n?,a,b); } 2、下面程序完成的功能是:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下字母(如‘a’变成‘b’,…,‘z’变成‘a’。其它字符不变)。将程序补充完整,并运行,分析结果是否正确。 #include { char str[MAX]; int i; printf(?input text:\\n?); gets(str); #if( ) { for(i=0;i 13 if( ) if(str[i]>=’a’&&str[i] else if(str[i]==’z’||str[i]==’Z’) str[i]-=25; } } #end if printf(?output:\\n%s?,str); } 14 实验九 指针(2学时) 实验性质:验证性实验 一、实验目的 1.掌握指针的概念,会定义和使用指针变量; 2.学会使用数组的指针和指向数组的指针变量; 3.学会使用字符串的指针和指向字符串的指针变量; 4.学会使用指向函数的指针变量; 二、实验内容 1、运行程序,并分析程序完成的功能。 main( ) { char *str1[20],*str2[20],*str3[20]; char swap( ); printf(?input three lines:\\n?); gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf(?now,the order is:\\n?); pritnf(?%s\\n%s\\n%s\\n?,str1,str2,str3) ;} char swap(char *p1,char *p2) { char *p[20]; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); } 2、运行程序,并分析程序完成的功能。 #include 15 main( ) { void sort(char s[ ] [ ]); int i; char str[10][6]; printf(?input 10 strings:\\n?); for(i=0;i<10;i++) scanf(?%s?,str[i ]); sort(str); printf(?now ,the sequence is:\\n?); for(i=0;i<10;i++) printf(?%s\\n?,str[i]);} void sort(char s[10][6]) { int i,j; char *p ,temp[10]; p=temp; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(strcmp(s[j],s[j+1])>0) {strcpy(p,s[j]); strcpy(s[j],s[j+1]); strcpy(s[j+1],p); } } 16 实验十 结构体和共用体(2学时) 实验性质:验证性实验 一、实验目的 1.掌握结构体类型变量的定义和使用; 2.掌握结构体类型数组的概念和应用; 3.掌握共用体的概念与使用。 二、实验内容 编程序,然后上机调试运行。 1、运行程序,并分析程序所完成的功能。 #define N 10 struct student { char num[6]; char name[8]; int score[4]; float avr; } stu[10]; main( ) { int i ,j ,max ,maxi ,sum; float average; for(i=0;i { printf(?\\n input scores of student:%d\\n?, printf(?No:?); scanf(?%s?,str[i].num); printf(?name:?); scanf(?%s?,stu[i].name); for(j=0;j<3;j++) { printf(?score%d:?,j+1); scanf(?%d?,&str[i].score[j]); } 17 i+1); } average=0; max=0; maxi=0; for(i=0;i printf(?No. name score1 score2 score3 average\\n?); for(i=0;i { printf(?%5ss?,stu[i].num ,stu[i].name); for(j=0;j<3;j++) printf(???,stu[i].score[j]); printf(?%8.2f\\n?,stu[i].avr); } printf(?average=%6.2f\\n?,average); printf(?the highest score is:%s,score total:%d?,stu[maxi].name,} 2、输入和运行以下程序: union data {int i[2]; float a; long b; 18 max); char c[4]; }; main( ) {union data u; scanf(“%d,%d”,&u.i[0],&u.i[1]); printf(“i[0]=%d,i[1]=%d\\na=%f\\nb=%ld\\nc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\\n”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]); } 输入两个整数10000、20000给u.i[0]和u.i[1]。 分析运行结果。 然后将scanf语句改为: scanf(“%ld”,&u.b); 输入60000给b。分析运行结果。 19 实验十一 位运算(2学时) 实验性质:验证性实验 一、实验目的 1.掌握位运算的概念和方法,学会使用位运算符; 2.学会通过位运算实现对某些位的操作。 二、实验内容 1、运行程序,并分析程序实现的功能。 main( ) { unsigned int a; unsigned int getbits(unsigned); printf(?\\ninput an octal number:?); scanf(?%o?,&a); printf(?result:%o\\n?getbits(a)); } unsigned int getbits(unsigned value) { unsigned int z; z=value&0100000; if(z==0100000) z=~value+1; else z=value; return(z); } 20 实验十二 文件(2学时) 实验性质:验证性实验 一、实验目的 1.掌握文件以及缓冲文件系统、文件指针的概念; 2.学会使用文件打开、关闭、读、写等文件操作函数。 3.学会用缓冲文件系统对文件进行简单的操作。 二、实验内容 1、下面的程序实现的功能是:从键盘输入一个字符,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件?test?中保存。输入的字符以?!?结束。 请运行程序,并分析结果,验证程序是否正确。 #include if(!fp=fopen(?test?,?w?))==null) { prinf(?can not open the file\\n?); exit(0); } printf(?input a string:\\n?); gets(str); while(str[i]!=‘!‘) { if(str[i]>=‘a‘&&str[i]<=‘z’) str[i]=str[i]-32; fputc(str[i],fp); i++; } fclose(fp); fp=fopen(?test?,?r?); 21 fgets(str,strlen(str)+1,fp); printf(?%s\\n?,str); fclose(fp); } 22
正在阅读:
《C语言程序设计》实验题05-02
英语卷·2012届湖北省黄冈市高三上学期期末考试(2012.01)word版(1)11-17
半年工作总结700字5篇04-02
《汽车使用性能检测》补考试卷09-25
公司年度工作目标及计划最新6篇03-22
电机与丝杆的传动比计算11-17
烟气的物性参数04-15
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 语言
- 实验