C语言实验报告模板Word格式.docx
《C语言实验报告模板Word格式.docx》由会员分享,可在线阅读,更多相关《C语言实验报告模板Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
intmain()
{
charc1,c2;
c1=97;
c2=98;
printf(“%c,%c\n”,c1,c2);
printf(“%d,%d\n”,c1,c2);
return0;
}
【思考题】若将第四行改为:
intc1,c2;
再使之运行,输出结果一样吗?
为什么?
(二)程序填空:
输入一个十进制整数,输出与之相应的八进制数与十六进制数。
例如:
输入31,输出37(八进制)和1F(十六进制)。
源程序如下:
intmain()
{
longn;
printf("
输入一个十进制整数:
"
);
scanf("
%"
&
n);
对应的八进制整数是%\n"
n);
对应的十六进制整数是%\n"
return0;
运行程序,输入1234567,显示结果如何?
3.实验程序清单及运行结果
实验三选择结构程序设计
1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
2)学会正确使用关系运算符、逻辑运算符和相关表达式。
3)熟练掌握if语句和switch语句。
4)结合程序掌握一些简单的的算法。
5)学习调试程序。
2.程序填空
请将下列源程序填写完整。
程序说明:
输入实数x,计算并输出下列分段函数f(x)的值,结果保留2位小数。
intmain()
{doublex,y;
printf("
Inputx:
scanf(“%lf”,);
if(x<
-1)y=x+1;
elseif()y=exp(x);
else;
f(%.2f)=%.2f\n"
x,y);
运行程序,输入-2,显示结果是:
-1
输入0.5,显示结果是:
1.65
输入3,显示结果是:
3.16
实验四循环结构程序设计
1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。
2)掌握循环次数不确定的解题技巧,掌握多项式求和问题的解题技巧。
3)掌握多重循环的编程技巧。
4)掌握在程序设计中用穷举法、迭代法、递推法求解问题的编程技巧。
5)进一步学习调试程序。
输出菲波那契数列的前20项,要求每行输出10项。
intmain()
{inti,x1,x2,x;
x1=x2=1;
%6d%6d"
x1,x2);
/*输出前2项*/
for(i=;
i<
=20;
i++)
{x=x1+x2;
%6d"
x);
if()printf("
\n"
/*每行输出10项*/
x1=;
x2=;
}
实验五数组
1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2)掌握字符数组和字符串函数的使用。
3)掌握与数组有关的算法(特别是排序算法)。
(一)程序填空:
输入一个整数n(1≤n≤10),再输入n个整数,将它们按升序排列后输出。
选择排序基本思想:
(1)由于n最大是10,需要定义一个长度为10的整型数组a;
(2)整个排序只需要确定前n-1个元素(a[0]~a[n-2]),最后一个元素a[n-1]无需另外处理;
(3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i,并将a[k]与后面的元素a[j](j=i+1,i+2,…,n-1)一一比较,如果a[j]<
a[k],则更新k的值:
k=j。
找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。
inti,j,k,n,temp,a[10];
Inputn(1~10):
while(scanf("
%d"
n),);
//输入正确的n:
1≤n≤10
Input%dnumbers:
n);
for(i=0;
n;
i++)
scanf("
a[i]);
//输入n个整型元素
//选择法排序
;
{
k=;
//设a[i]为剩余部分的最小元素
for(j=;
j<
j++)
if()k=j;
//Line12
temp=a[i];
a[i]=a[k];
a[k]=temp;
//a[i]a[k]
%d"
a[i]);
//输出排序后的数组
【思考题】运行程序,输入n:
5,输入5个整数:
23-9140-3,显示结果是什么?
如果是按从大到小的降序排列,语句行Line12应怎么修改?
(修改上面的程序,从在线评测系统中提交调试好的程序,题号1032。
)
输入5个整数,将这5个数按逆时针顺序转动一次后再输出,如输入12345,逆时针转动一次后,输出23451。
提示:
设存放整数的数组为a。
要实现数组逆时针转动,只要先将首元素a[0]“搬”至一个变量t中;
然后从第1个元素到最后1个元素,依次向前移一位,即a[i-1]=a[i](i=1,…,4);
最后将存放在t中的首元素放入最后的元素。
#include<
inti,t,a[5];
Input5integers:
5;
);
t=;
i++)
a[i-1]=a[i];
=t;
Afterrotation:
i<
i++)
%5d"
);
return0;
实验六函数
1)掌握定义函数的方法。
2)掌握函数实参与形参的对应关系以及“值传递”的方式。
3)掌握函数的嵌套调用和递归调用的方法。
4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。
5)学习对多文件程序的编译和运行。
验证哥德巴赫猜想——任何一个大于6的偶数均可表示为两个素数之和。
6=3+3,8=3+5,10=5+5,…,18=7+11。
要求将6-100之间的偶数均表示为素数之和,一行输出5组。
math.h>
{inta,b,k;
for()//逐个处理6~100之间的偶数k
{for()//针对偶数k,寻找第一个素数加数项a
{b=k-a;
if()break;
//如果a,b同为素数,跳出内层循环
}//内层循环
printf("
%d=%d+%d"
k,a,b);
//输出k=a+b
if(k%5==0)printf("
//每行输出5组,注意第一行只有3组
}//外层循环
//自定义函数prime(n),判断整数n是否是素数,是则返回1,不是则返回0
intprime(intn)
{inti;
for(i=2;
;
if(n%i==0);
if()return1;
//n是素数,返回1
elsereturn0;
//n不是素数,返回0
实验七指针
1)通过实验进一步掌握指针的概念、会定义和使用指针变量。
2)能正确使用数组的指针和指向数组的指针变量。
3)能正确使用字符串的指针和指向字符串的指针变量。
4)能正确使用指向函数的指针变量。
5)了解指向指针的指针的概念及其使用方法。
输入三个整数,要求设计2个指针变量p1、p2,使p1指向这三个数的最大值,p2指向最小者,并输出最大值和最小值。
{inta,b,c,*p1,*p2,*p3;
scanf(“%d%d%d”,&
a,&
b,&
c);
p1=;
//p1指向a,b中较大者
if()p1=&
c;
p2=;
//p2指向a,b中较小者
if()p2=&
printf(“max=%d,min=%d\n”,*p1,*p2);
运行结果:
输入123输出
利用指针,将数组a中的10个整数按相反顺序存放。
intmain()
{inti,t,a[10],*p,*q;
Input10integers:
10;
i++)scanf("
&
a[i]);
p=;
q=;
//p指向首元素,q指向最后一个元素
for(;
;
)//逐对交换对称元素
{t=*p;
*p=*q;
*q=t;
}
i++)printf("
a[i]);
以下程序都要求用指针处理。
实验八结构体与共用体
1)掌握结构体类型变量的定义和使用。
2)掌握结构体类型数组及指针的定义和使用。
3)掌握链表的概念,初步学会对链表进行操作。
定义一个关于平面点的结构体类型,并定义一个含5个元素的结构体数组,用于存放5个平面点;
然后输入这些点的坐标值,并统计位于半径为3、以原点为圆心的圆之内的点的个数。
structpoint//定义结构体类型structpoint
};
intmain()
{
inti,num=0;
_________p[5];
//定义结构体数组p
Input5points:
\n"
for(i=0;
5;
%lf%lf"
______,_______);
//输入5个点的坐标
i++)//统计位于指定圆内的点的个数
if(<
9)
num++;
num=%d\n"
num);
运行程序,输入1.02.1-34.239.0-84.5-1-0.25-1.3
输出num=