11C程序设计上机指导Word文件下载.docx
《11C程序设计上机指导Word文件下载.docx》由会员分享,可在线阅读,更多相关《11C程序设计上机指导Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
main()
inta,b,sum;
a=123;
b=456;
sum=a+b;
printf("
sumis%d\n"
,sum);
}
编辑、运行、调试该程序。
5.编辑、运行、调试自己编写的程序(至少一个程序)
如:
输入上底、下底和高,计算梯形面积。
观察屏幕上显示的编译信息。
用File→Save(或F2)保存程序(程序名为a1.c)
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验二数据类型、运算符和表达式
1.掌握C语言的各种类型及其定义方法,赋值方法。
2.掌握不同类型之间赋值的规律。
3.学会使用各种算术运算符,特别是自加自减运算符。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容及实验步骤
1.练习一个有关字符和整型的程序。
{
charc1,c2;
c1=97;
c2=98;
%c%c\n"
,c1,c2);
/*以字符形式输出*/
%d%d\n"
/*转换为整数形式输出*/
}
2.转义字符的练习。
{
---------------*\r*\n"
\tOA\bK\n"
#---------------#\n"
\tABC\tDEF\tGHI\n"
\t123\t456\t789\n"
对照输出,理解转义字符的含义。
3.自加自减程序的练习。
inta=5,b=3,c1,c2;
a++;
--b;
c1=++a+b;
c2=c1---a/b;
b=++a+b+c1--+c2;
a=%d\nb=%d\nc1=%d\nc2=%d\n"
a,b,c1,c2);
4.各种类型混合运算的例子
inta=7,b=3;
charc1=’a’,c2=66;
floatx=12.25;
doubley=1.3333333333;
longd=5432789;
a=x+b*x+y/2-d%(c1-c2);
a=%d,b=%d,c1=%cn"
,a,b,c1);
d=%ld,x=%f,y=%10.2\n"
,d,x,y);
}
5.上机改错题:
请指出以下C程序的错误所在
(1)
main();
floatr,s;
r=5.0;
s=3.14159*r*r;
%f\n"
,s)
(2)
main
floata,b,c,v;
a=2.0;
b=3.0;
c=4.0
v=a*b*c;
,v)
6.调试、运行自己编写的程序。
(1)已知圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
(2)输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9*(f-32).
写明
1.实验目的
2.实验内容及步骤
5.总结讨论本次实验中的问题和收获
i++和++i的区别,i--和--i的区别
各种类型混合运算时的类型转换
实验三顺序和分支结构的程序设计
1.掌握C语言中使用最多的一种语句——赋值语句的使用方法。
2.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
3.熟练掌握if语句和switch语句。
1.掌握各种格式转换符的正确使用方法
(1)输入程序
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;
b=62;
c1=’a’;
c2=’b’;
f=3157.890121;
g=0.123456789;
d=f;
e=g;
p=a=m=50000;
q=b=n=-60000;
a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n"
a,b,c1,c2,d,e);
f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n"
f,g,m,n,p,q);
(2)运行此程序并分析结果。
(3)改用scanf函数输入数据而不用赋值语句,scanf函数如下:
scanf("
%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u"
&
a,&
b,&
c1,&
c2,&
d,&
e,&
f,&
g,&
m,&
n,&
p,&
q);
输入的数据如下:
61,62,a,b,3.56,-6.87,3157,890121,0.123456789,50000,-60000,37678,40000↙
(说明:
lf和ld格式符分别用于输入double型和long型数据)分析运行结果。
(4)在(3)的基础上将printf语句改为:
a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n"
f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n"
运行程序。
2.字符的输入输出
#include<
stdio.h>
chara,b;
a=’g’;
b=getchar();
putchar(a);
putchar(b);
3.以下程序多处有错。
若指定必须按下面的形式输入数据,并且必须按下面指定的形式输出数据,请对该程序做相应的修改。
{doublea,b,c,s,v;
printf(inputa,b,c:
\n);
scanf("
%d%d%d"
,a,b,c);
s=a*b;
v=a*b*c;
s=%f\n"
s,"
v=%d\n"
,v);
当程序执行时,屏幕的显示和要求输入形式如下:
inputa,b,c:
2.02.03.0此处的2.02.03.0是用户输入的数据
a=2.000000,b=2.000000,c=3.000000此处是要求的输出形式
s=4.000000,v=12.000000
4.编辑、运行、调试自己编写的程序
给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
事先编好程序,要求分别用if语句和switch语句实现。
运行程序,并检查结果是否正确。
实验四循环结构的程序设计
1.熟练掌握while循环语句的应用。
2.熟练掌握do—while循环语句的应用。
3.熟练掌握for循环语句的应用。
4.理解三者的区别和联系。
1.求5!
intn,t;
n=1;
t=1;
while(t<
=5)
n=n*t;
t=t+1;
%d"
n);
2.将以上程序用do—while语句改写。
3.求和s=1!
+3!
+5!
ints=0,t,i,j;
for(i=1;
i<
=3;
i++)
for(j=1;
j<
=2*i-1;
j++)
t=t*j;
s=s+t;
s);
4.求和s=3+33+333
ints=0,t=3,i;
t=10*t+3;
5.打印下列图案
*
***
*****
*******
inti,j;
i<
=4;
=4-i;
"
*"
\n"
6.测试、运行自己编写的程序。
(1)编写程序,求1-3+5-7+…-99+101的值。
(2)编写程序,求e的值,e≈1+1/1!
+1/2!
+1/3!
+1/4!
+…。
(3)编写程序,统计输入的一行中小写字母的个数。
(4)打印100-999之间所有的“水仙花数”。
“水仙花数”是一个三位数,其各位数立方和等于该数本身。
(5)一个数如果恰好等于它的因子之和,这个数就称为完数。
求1000之内的所有完数。
实验五数组
(一)
1.掌握一维数组的定义、赋值和输入输出的方法。
2.掌握二维数组的定义、赋值和输入输出的方法。
1.在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。
分析:
C中数组长度必须是确定大小,即指定N的值。
#defineN10
inta[N],i,j,temp;
pleaseinput%dnumbers\n"
N);
for(i=0;
N;
a[i]);
N-1;
for(j=0;
N-1-i;
if(a[j]>
a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
thearrayaftersort:
%5d"
a[i]);
2.有一个3×
4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
main()
intmax,i,j,r,c;
staticinta[3][4]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=a[0][0];
3;
4;
if(a[i][j]>
max)
max=a[i][j];
r=i;
c=j;
max=%d,row=%d,colum=%d\n"
max,r,c);
3.测试、运行自己编写的程序。
(1)编写程序,将数组中所有奇数放在另一个数组中返回。
(2)输入若干有序数放在数组中。
然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。
请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。
(3)求两个矩阵之和。
实验六数组
(二)
掌握字符数组的使用。
1.输入一串字符,计算其中空格的个数。
#include"
stdio.h"
string.h"
charc[30];
inti,sum=0;
gets(c);
strlen(c);
if(c[i]=='
'
)
sum=sum+1;
空格数为:
%d\n"
sum);
2.测试、运行自己编写的程序。
(1)编写程序,将两个字符串连接起来,不要使用strcat函数。
(2)编写程序,将两个字符数组s2中的全部字符复制到字符数组s1中,不使用strcpy函数。
复制时,’\0’也要复制过去。
’\0’后面的字符不复制。
实验七C程序的函数
(一)
1.掌握自定义函数的一般结构及定义函数的方法。
2.掌握形参、实参、函数原型等重要概念。
3.掌握函数声明、函数调用的一般方法。
1.求三角形面积函数。
编写一个求任意三角形面积的函数,并在主函
数中调用它,计算任意三角形的面积。
参考程序
/*定义和使用求三角形面积函数的程序*/
math.h"
floatarea(float,float,float);
floata,b,c;
请输入三角形的三个边长值:
%f,%f,%f"
c);
if(a+b>
c&
&
a+c>
b&
b+c>
a&
a>
0.0&
b>
c>
0.0)
area=%-7.2f\n"
area(a,b,c));
/*以下是计算任意三角形面积的函数*/
floatarea(floata,floatb,floatc)
floats,area_s;
s=(a+b+c)/2.0;
area_s=sqrt(s*(s-a)*(s-b)*(s-c));
return(area_s);
2.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
intx,y;
sum(x+y));
intsum(a,b);
inta,b;
return(a+b);
(1)编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。
(2)写出两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数由键盘输入。
(3)写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
4.思考题的解决方法。
实验八C程序的函数
(二)
1.菜单程序。
编写一个菜单程序,运行后首先在屏幕显示如下菜单,
当输入数值1后,调用显示“&
”图案的函数程序;
输入数值2后,调用显示“$”图案的函数程序;
输入数值3后结束程序。
**********************************
*Menusection*
*1.Design(&
)*
*2.Design($)*
*3.Exit*
/*菜单程序*/
voiddesign1();
voiddesign2();
intop;
/*以下代码生成菜单*/
\n*************************************"
\n*Menusection*"
\n*1.Design(&
)*"
\n*2.Design($)*"
\n*3.Exit*"
\nPleaseenterselection:
op);
if(op==1)
design1();
elseif(op==2)
design2();
/*以下是显示&
图案的函数*/
voiddesign1()
inti;
charstr[31]="
;
for(i=1;
10;
puts(str);
/*以下是显示$图案的函数*/
voiddesign2()
inti,j;
for(j=1;
i;
putchar('
30;
$'
}
(1)编写函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
(2)编写函数,判断一个字符串是否是回文。
若是回文函数返回值为1;
否则函数返回值为0。
回文是顺读和倒读都是一样的字符串。
(3)用递归法将一个整数n转换成字符串。
(4)写一函数,输入一个十六进制数,输出相应的十进制数。
实验九编译预处理
1.掌握宏定义的规则,领会带参数宏定义和函数调用的区别.
2.了解文件包含命令的功能和使用规则。
3.了解条件编译的特点和功能。
1.调试运行例9.1,例9.2,例9.3,例9.4。
2.利用条件编译实现:
如果输入两个实数,则交换后输出;
如果输入的是三个实数,则只输出其中最大的数.
实验十C程序的指针
(一)
1.掌握指针和指针变量的概念。
2.掌握简单指针变量的定义和基本使用方法。
3.熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。
4.了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。
5.了解指针与字符串的关系,能熟练使用指针处理字符串。
1.用指针访问简单变量。
从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。
/*用指针访问简单变量的程序*/
inta,b,c,temp;
int*p1,*p2,*p3;
请输入三个整数值(a,b,c):
%d,%d,%d"
p1=&
a;
/*使指针p1指向简单变量a*/
p2=&
b;
/*使指针p2指向简单变量b*/
p3=&
c;
/*使指针p3指向简单变量c*/
if(*p1<
*p2)
temp=*p1;
*p1=*p2;
*p2=temp;
*p3)
*p1=*p3;
*p3=temp;
}/*至此p1指向了三个数中的最大数*/
if(*p2<
*p3)
temp=*p2;
*p2=*p3;
}/*至此p3指向了最小数,p2指向了中间数*/
%d,%d,%d\n"
*p3,*p2,*p1);
}
①运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
②运行程序,按由小到大的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
③运行程序,按由大到小的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
2.用指针法在一维有序数组中插入数据。
如下是具有10整