C语言程序设计作业与实验报告.docx
《C语言程序设计作业与实验报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计作业与实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
C语言程序设计作业与实验报告
C语言程序设计
作业与实验报告
学号:
姓名:
专业班级:
授课教师:
计算机基础教研室编
2010年3月
前言
本册是《C语言程序设计》的配套作业与上机练习,学生应根据课程进度及时认真完成并上交,期末考试后统一存档。
本册由信息与电气工程学院计算机基础教研室编写。
编者
2010年3月
作业与实验
(一)
一、改错并输出结果
1、#include
voidmain()
{
intx,y=z=5,aver;
x=7;
AVER=(x+y+z)/3;
printf(“AVER=%d\n”,aver)
}
错误语句:
正确语句:
结果:
2、#include
voidmain()
{
charc1=’a’,c2=’b’,c3=’c’;
inta=3,b=’A’
printf(“a=%db=\’%c\’\n\”end\”\n”,a,b);
printf(“a%cb%c\bc%c\tabc\n”,c1,c2,c3);
}
错误语句:
正确语句:
结果:
【实验1】基本输入输出
输入一圆半径r,根据圆面积的公式求圆面积
1.实验目的
(1)熟悉VC上机操作过程;
(2)了解C程序结构;
(3)掌握浮点型变量的定义和使用方法;
(4)学习使用基本算术运算符;
(5)掌握符号常量的定义和使用方法;
(6)熟悉C语言基本输入/输出函数的用法。
2.实验步骤
(1)定义符号常量PI;
(2)定义r为浮点类型变量;
(3)用scanf进行格式化输入;
(4)根据公式计算圆面积;
(5)用printf进行格式化输出;
3.程序
评阅人:
评阅日期:
作业与实验
(二)
一、写出程序运行结果
1、#include
voidmain()
{
inta=177;
intb=32767;
printf(“%o\n”,a);
printf(“%d\n”,b);
printf(“%d\n”,a+b);
}
结果是:
2、#include
voidmain()
{
intm=32767,n=032767,a=0xabc,b=0xabc;
a-=b;
printf(“%d,%o\n”,m,n);
printf(“%x\n”,a);
}
结果是:
3、#include
voidmain()
{
inta;charc=10;
floatf=100.0;doublex=123.45;
printf(“%d%d%3.1f%4.1f\n”,a,c,f,x);
}
结果是_______________
【实验2】从键盘输入一个小写字符,要求输出与其对应的大写字符
1.实验目的
(1)熟悉C程序的编写、编译、运行的过程;
(2)掌握字符型变量的定义和使用方法;
(3)了解字符型数据的存储形式;
(4)学习C语言中字符输入/输出函数的用法。
2.实验步骤
(1)定义变量c1、c2为字符型变量;
(2)用getchar()输入变量c1的值;
(3)将c1转化为大写字符并赋值给c2;
(4)用putchar()输出变量c2的值;
3.程序:
评阅人:
评阅日期:
作业与实验(三)
一、写出程序的执行结果
#include
voidmain()
{
inti=2;
floatx=457.898;
printf(“i=%5d,%-8o,%u,%c\n”,i,i,i,i+’E’);
printf(“x=%10f,%10.2f,%-10.4f,%.2f,%f\n”,x,x,x,x,x);
}
结果是:
二、改错
#include
voidmain()
{
inta,b;
longc,d;
floate,f;
scanf(“%d%d%ld%ld%f%f”,a,b,c,d,e,f);
printf(“a=%d,b=%d,c=%d,e=%d\n”,a,b,c,e);
}
错误语句:
正确语句:
结果:
【实验3】基本控制结构
从键盘输入一个字符,判断它是控制字符,还是数字、大写字母、小写字母或是其它字符。
1.实验目的
(1)进一步熟悉C语言的基本输入/输出语句;
(2)掌握关系运算符与关系表达式的使用;
(3)熟悉分支语句if的使用方法;
2.实验步骤
(1)定义一个字符型变量c;
(2)用getchar()为变量c赋值;
(3)对该字符进行判断,根据ASCII码表,可以看出;
•c是控制字符:
c<31
•c是数字:
c>=’0’&&c<=’9’
•c是大写字母:
c>=’A’&&c<=’Z’
•c是小写字母:
c>=’a’&&c<=’z’
(3)输出判断结果。
3.程序
评阅人:
评阅日期:
作业与实验(四)
一、填空
已知程序
#include
voidmain()
{
inta,b;
scanf(“%d,%d”,&a,&b);
if(a>b)
if(a>0)printf(“A”);
elseif(b>-5)printf(“B”);
elseprintf(“C”);
printf(“*\n”);
}
写出当输入分别为以下四种情况时的输出结果:
(1)10,5结果是____________
(2)-5,-10结果是____________
(3)0,-3结果是____________
(4)6,7结果是____________
二、求下列程序执行的结果
1、#include
voidmain()
{
intx=1,y=2,z=3;
if(x--)y++,z++;
elsey--;z--;
printf(“%d,%d,%d\n”,x,y,z);
}
结果是___________________
2、#include
voidmain()
{
inta;
scanf(“%d”,&a);
if(a>20)printf(“%d,”,a);
if(a>10)printf(“%d\n”,a);
}
从键盘上输入30后,程序运行结果是______________
【实验4】从键盘输入一个分数,如小于60分,则输出“不及格”;如大于60小于85分,输出“良好”;85分以上则为“优秀”。
1.实验目的熟悉多分支选择语句的用法
2.实验要求用switch语句编写程序
3.程序
评阅人:
评阅日期:
作业与实验(五)
一、写出运行结果
1、#include
voidmain()
{
inti=2,j=2;
if(i)
if(j==2){i++;j++;printf(“\ni+j=%d”,i+j);}
else{i--;j--;printf(“\ni-j=%d”,i-j);}
if(i)
for(j=1;jif(j==i)printf(“\nj=%d\n”,j);
elseprintf(“\nOK!
GOOD!
\n”);
}
结果是:
2、#include
voidmain()
{
intdata;
scanf(“%d”,&data);
while(data)
{
printf(“%d”,data%10);
data=data/10;
}
}
程序运行时,输入12345,则输出结果是______________
二、写出下面四个for语句中的printf(“%d”,a);分别被执行了多少次
1、for(a=1;a<11;a++)
{if(a%3==0)break;
printf(“%d”,a);
} 执行___次
2、for(a=1;a<11;a++)
{if(a%3==0)continue;
printf(“%d”,a);
} 执行___次
3、for(a=1;a<11;a++)
{printf(“%d”,a);
if(a%3==0)break;
} 执行___次
【实验5】编写大奖赛评分程序。
在唱歌等比赛评分时,记分规则为:
去掉一个最高分和一个最低分,再算平均分。
(假定有7个评委)
1.实验目的
(1)掌握do-while循环语句或for循环语句;
(2)学会循环与分支语句的嵌套;
(3)进一步熟悉关系运算符和关系表达式。
2.实验步骤
(1)定义4个整型变量score,max,min和sum,用于存储分数、最高、最低和分数和,初值均为0;
(2)用循环语句输入各评委打分;
(3)在循环的内嵌语句中完成分数的累加并用if语句找出最高和最低分数;
(4)循环结束,从分数和中减去最高和最低分数后求平均;
(5)输出平均分数。
3.程序
评阅人:
评阅日期:
作业与实验(六)
将一个数列头尾颠倒,如原数组为1,2,3,4,5,则新数组为5,4,3,2,1。
1.实验目的
(1)掌握数组的定义方法;
(2)掌握数组初始化的方法;
(3)掌握数组元素的输入输出方法;
(4)学习通过循环实现数组的遍历。
2.实验步骤
(1)定义一个数组并初始化;
(2)通过使用for循环实现数组的第一个元素和最后一个元素对调,第二个元素和倒数第二个元素对调,依次类推;
(3)通过for循环输出数组颠倒后的结果。
3.程序
评阅人:
评阅日期:
作业与实验(七)
一、填空
问题:
本程序输出以下结果:
123456
112345
121234
133123
146412
15101051
程序:
#include
voidmain()
{ inta[6][6],i,j;
for(i=0;i<6;i++)
{ for(j=0;j<6;j++)
{ if(________)a[i][j]=1;
elseif(ielsea[i][j]=_________________;
printf(“%4d”,a[i][j]);
}
printf(“\n”);
}
}
二、写出程序的运行结果
1、#include
voidmain()
{ inti;
intx[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf(“%d”,x[i][2-i]);
printf(“\n”);
}
运行结果是_______________________
2、#include
#include
voidmain()
{ charstr[]=”ab\n\012\\”;
printf(“%d”,strlen(str));}
运行结果:
_______________________
【实验7】计算一个整型4*4的数组边框位置元素的和(即第0行、第3行和第0列、第3列元素的和)。
1.实验目的
(1)掌握二维数组的定义方法;
(2)进一步熟悉二重循环的使用;
(3)进一步熟悉if语句在循环体中的使用;
(4)掌握二维数组元素的输入和输出。
2.实验步骤
(1)定义一个二维数组;
(2)利用二重循环为数组元素赋值;
(3)利用if语句对符合条件的元素累加;
(4)输出累加结果。
3.程序
评阅人:
评阅日期:
作业与实验(八)
一、写出程序运行结果
1、#include
intt(intx,inty,intc)
{ c=x*x+y*y;
returnc;
}
voidmain()
{inta=3,b=4,c=5;
printf(“%d,%d\n”,c,t(a,b,c));}
运行结果是:
________________
2、#include
intfunc(inta,intb)
{return(a+b);}
voidmain()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);}
运行结果是:
_____________
3、#include
voidfunc1(inti);
voidfunc2(inti);
charst[]=”hello,friend!
”;
voidfunc1(inti)
{ printf(“%c”,st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{ printf(“%c”,st[i]);
if(i<3){i+=2;func1(i);}
}
voidmain()
{ inti=0;func1(i);
printf(“\n”);
}
结果是______________
【实验8】函数
定义一个函数,判断一个数是否为素数
1.实验目的
(1)掌握函数的定义方法;
(2)掌握函数的声明方式;
(3)掌握函数的调用方式;
(4)理解形参和实参的值传递关系。
2.实验步骤
(1)声明函数judge,以一个整型变量作为形参表示被判断的数;
(2)在main函数定义一个变量,并赋值;
(3)以此变量作为实参,调用judge函数;
(4)根据judge函数的返回值输出是否为素数的信息。
3.程序
评阅人:
评阅日期:
作业与实验(九)
一、写出程序运行结果
1、#include
Intfunc(inta,intb)
{ staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
voidmain()
{ intk=4,m=1,p;
p=func(k,m);printf(“%d,”,p);
p=func(k,m);printf(“%d\n,”,p);
}
运行结果是________________________
2、#include
intd=1;
intfun(intq)
{ intd=5;
d+=q++;
printf(“%d”,d);
}
voidmain()
{ inta=3;
fun(a);
d+=a++;
printf(“%d\n”,d);
}
运行结果是__________________
3、#include
longfib(intn)
{ if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
voidmain()
{printf(“%d\n”,fib(3));}
运行结果是_____________________
【实验9】编写一个函数,实现对一个数组元素从大到小排序。
1.实验目的
(1)理解数组名作为实参时的地址传递关系;
(2)理解形参和实参的匹配关系;
(3)理解函数返回值的概念;
(4)掌握选择法排序的方法。
2.实验步骤
(1)在voidmain()定义一个数组并初始化;
(2)以该数组名作为实参调用排序函数sort();
(3)输出排序后数组元素的值;
(4)定义一个排序函数sort,用一个数组做形参,用选择法排序。
3.程序
评阅人:
评阅日期:
作业与实验(十)
写出程序运行结果
1、#include
voidmain()
{inta[]={5,6,7,8},i;
func(a);
for(i=0;i<4;i++)
printf(“%3d”,a[i]);
}
func(intb[])
{intj;
for(j=0;j<4;j++)b[j]=j;
}
结果是______________________________
2.#include
voidmain()
{inti;
for(i=1;i<=4;i++)
f(i);
}
f(intj)
{staticinta=10;
intb=1;
b++;
printf(“%d+%d+%d=%d\n”,a,b,j,a+b+j);
a+=10;
}
结果是________________
【实验10】编写一个函数,判断某一个数是否为水仙花数。
所谓“水仙花数”是指一个三位数,其各位数字立方之和等于该数本身,例如:
13+53+33=153。
打印出所有的水仙花数。
1.实验目的
(1)进一步熟悉循环语句的使用;
(2)进一步掌握数值传递的函数调用;
2.实验步骤
(1)定义一个以整型变量为形参的函数judge();
(2)分解形参的各位数字;
(3)如各位数字的立方和等于该数本身,则函数返回1,否则返回0;
(4)main()函数用for循环从100到999依次调用judge函数,如返回值为1,则输出该数。
3.程序
评阅人:
评阅日期:
作业与实验(十一)
一、判断下列语句哪些是合法的?
哪些是非法的?
(合法的在前面打勾)
已知inti,a[5],*p;
1、p=*a;2、p=&i;
3、p=&(i+1);4、p=&i++;
5、p=&a;6、p=a+3;
7、p=a[3]; 8、p=&a[5];
二、选择题:
1、设有语句:
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则以下___不是对a数组元素的正确引用,其中0≤i<10。
A)a[p-a]B)*(&a[i])
C)p[i]D)*(*(a+i))
2、设有语句:
charstr1[]=”string”,str2[8],*str3,*str4=”string”,则___不是对库函数strcpy的正确调用,此库函数用于复制字符串。
A)strcpy(str1,”HELLO1”);B)strcpy(str2,”HELLO2”);
C)strcpy(str3,”HELLO3”);D)strcpy(str4,”HELLO4”);
【实验11】指针
求一个数组中元素的最大值
1.实验目的
(1)了解指针的概念;
(2)掌握指针运算符的用法;
(3)掌握指向数组的指针的定义与引用;
(4)明确变量的值和变量地址的不同;
2.实验步骤
(1)定义一个函数finder(),形参是一个整型指针和数组元素的个数;
(2)定义一个整型变量max,存放最大值;
(3)用for循环依次把指针指向的当前元素的值与max比较,如比max大,则把该元素的值保存到max中;
(4)返回max的值;
(5)main()函数定义一个数组,用指针方法给数组元素赋值,用数组名作为实参调用finder()函数,输出函数的返回值。
3.程序
评阅人:
评阅日期: