c语言实践报告.docx
- 文档编号:7659611
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:58
- 大小:40.02KB
c语言实践报告.docx
《c语言实践报告.docx》由会员分享,可在线阅读,更多相关《c语言实践报告.docx(58页珍藏版)》请在冰豆网上搜索。
c语言实践报告
实验一C程序基础语法、选择结构语句
一、实验目的
1.熟练掌握C语言数据类型、以及数据的相关运算。
2.掌握C语言表达式的运算规则。
3.理解C语言中输出输入使用方法。
4.熟练掌握逻辑运算符和关系运算符用法。
5.熟练掌握if语句嵌套
6.掌握函数的定义与使用方法
7.熟练掌握if语句嵌套、switch语句及条件运算符的使用方法
二、实验要求
1.分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。
2.实验报告中应包含运行结果及结果分析。
最后给出实验总结及体会
3、实验内容与步骤
1、程序填空。
以下程序的功能是下面函数值。
函数如下:
程序代码:
__include
main()
{
floatx,y;
scanf("%f",&x);
if(x<0)
______y=abs(x+1)______;
elseif(_____2*x-1;________)
f=2*x+1;
else
f=sin(x)+5;
printf("x=%f,f=%f\n",____y______);
}
2、程序设计,所有程序要求用函数实现。
(1)试编程实现从键盘中输入一个小写字母,转换为大写字母输出到屏幕上。
main()
{
charc1,c2;
scanf("%c",&c1);
if('a'<=c1&&c1<='z')
c2=c1-32;
printf("%c",c2);
}
(2)试编程解决鸡兔同笼问题。
已知鸡兔总头数为h(设为30),总脚数为f(设为90),求鸡兔各有多少只?
main()
{
inttous,jiaos,js,ts;
scanf("%d%d",&tous,&jiaos);
for(js=1;js<10000000;js++)
for(ts=1;ts<10000000;ts++)
{
if(((js+ts)==tous)&&(js*2+ts*4==jiaos))
printf("%d%d",js,ts);
}
(3)编写一个程序,输入一个六位正整数,然后反向输出对应的数,如输入123456,则输出654321。
main()
{
intx,a=0,t=0;
scanf("%d",&x);
while(x>0)
{
t=x%10;
x=x/10;
a=a*10+t;
}
printf("%d",a);
(4)试编程,已知圆柱的底面半径和高,求圆柱体的体积和表面积。
main()
{
floats,h,r,v,l;
scanf("%f%f",&r,&h);
l=2*3.14*r;
s=3.14*r*r*2+(l*h);
v=3.14*r*r*h;
printf("%f%f",s,v);
}
(5)实现任意3个数的升序排序。
main()
{
inta,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=c;
c=a;
a=t;
}
if(b>c)
{
t=c;
c=b;
b=t;
}
printf("%d%d%d",a,b,c);
}
(6)任意两个数和“+、-、*、/”运算符,输出运算结果。
要求用switch语句实现,是否使用break语句,如果使用分析break语句作用。
main()
{
floatresult,x,y;
charch;
scanf("%f%f",&x,&y);
scanf("%c",&ch);
result=0;
switch(ch)
{
case'+':
result=x+y;break;
case'-':
result=x-y;break;
case'*':
result=x*y;break;
case'/':
result=x/y;break;
}
printf("%f",result);
(7)实现用户输入任意一个百分制成绩,输出成绩对应的等级,其中90分以上为优秀,80分到89分为良好,70分到79分为中等,60到69分为及格,60分以下为不及格。
要求用switch多分支实现,是否使用default,如果使用,分析default的作用。
main()
{
intx;
scanf("%d",&x);
switch((x/10))
{
case9:
printf("优秀");break;
case8:
printf("良好");break;
case7:
printf("中等");break;
case6:
printf("及格");break;
default:
printf("不及格");break;
}
成绩
指导教师
日期
}
实验二循环结构语句
一、实验目的
1.掌握while循环、do-while循环和for循环实现循环嵌套的程序设计方法。
2.较灵活地运用do-while循环和for循环实现循环算法的程序设计。
3.熟练掌握cintinue语句和break语句的用法。
二、实验要求
1.分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。
2.实验报告中应包含运行结果及结果分析。
3.最后给出实验总结及体会
三、实验内容与步骤
1、程序填空
(1)下面程序的功能是:
输出500以内最大的10个能被13或17整除的自然数之和。
#include"stdio.h"
intfun(___intk_______)
{
intm=0,mc=0,j,n;
while(k>=2&&_mc<=10______)
{
if(k%13==0||__k%17==0________)
{
m=m+k;
mc++;
}
k--;
}
___returnm;__________;
}
main()
{
printf("%d\n",fun(500));
}
3.程序设计,所有程序要求用函数实现
(1)试编程分别用while、for和do~while循环实现1+2+3+...+100的和。
intqiuhe(intp)
{
ints=0,n=1;
while(n<=p)
{
s=s+n;
n++;
}
return(s);
}
main()
{
intx;
x=qiuhe(100);
printf("%d",x);
}
intqiuhe(intp)
{
ints=0,n=1;
do
{
s=s+n;
n++;
}
while(n<=p);
return(s);
}
main()
{
intx;
x=qiuhe(100);
printf("%d",x);
}
intqiuhe(intp)
{
ints=0,n;
for(n=1;n<=p;n++)
s=s+n;
return(s);
}
main()
{
intx;
x=qiuhe(100);
printf("%d",x);
}
(2)编程求1!
+2!
+…+n!
,由键盘输入n值。
main()
{
intn,x,s=1,w=0;
scanf("%d",&n);
for(x=1;x<=n;x++)
{
s=s*x;
w=w+s;
}
printf("%d",w);
(3)试编程打印出所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153=13+53+33,则153是水仙花数。
#include
voidsxh(intx)
{
inta,b,c;
a=(x/100)%10;
b=(x/10)%10;
c=x%10;
if(x==pow(a,3)+pow(b,3)+pow(c,3))
printf("%d\n",x);
}
main()
{
intn;
for(n=100;n<=999;n++)
sxh(n);
}
(4)试编一函数实现判别从键盘输入的一个整数是否是素数,然后求出100以内所有素数。
voidSuShu(intx)
{
intn;
for(n=2;n if(x%n==0) break; if(x==n) printf("%d是素数\n",x); } main() { intj; for(j=3;j<=100;j++) SuShu(j); } (5)编程实现打印Fibonacci数列的前20项。 该数的规律如下: 1,1,2,3,5,8...。 #include voidmain() { intf1,f2; inti; f1=1;f2=1; for(i=1;i<=10;i++) { printf("%d%d",f1,f2); f1=f1+f2; f2=f2+f1; } } (6)编程实现在屏幕上输出“*”组成的正 三角形 voidzsj(intp) { intj,k,x; for(j=1;j<=p;j++) { for(k=1;k<=p-j;k++) printf(""); for(x=1;x<=j;x++) printf("*"); printf("\n"); } } main() { zsj(5); } (7)百马百担问题,有100匹马,驼100担货,大马驼3担,中马驼2担,两批小马驼1担,问有大中小马各多少? voidBmbd(intx,inty) { inti,j,k; for(i=x/3;i>0;i--) { for(j=x/2;j>0;j--) { for(k=x;k>0;k=k-2) { if((i+j+k==y)&&(3*i+2*j+k/2==y)) printf("%d,%d,%d\n",i,j,k); } } } } main() { Bmbd(100,100); } 成绩 指导教师 日期 (8)若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数为可逆素数。 编写一个判断某数是否为素数的函数,在主函数中输入一个整数,在调用此函数进行判断。 intSuShu(intx) { intn; for(n=2;n if(x%n==0) break; if(x==n) { printf("%d是素数\n",x); return (1); } } intNxs(intx) { intt=0,a=0; while(x>0) { t=x%10; x=x/10; a=a*10+t; } return(a); } main() { inty; scanf("%d",&y); if(SuShu(y)==SuShu(Nxs(y))) printf("%d所以是可逆素数",y); } 实验三数组 一、实验目的 1.掌握一维数组、的定义,赋值和输入输出的方法 2.掌握排序算法 3.掌握二维数组的定义,赋值和输入输出的方法 4.掌握二维数组相关的基本算法 5.掌握字符数组的定义和使用方法 6.掌握利用字符数组的存储方式和访问方法以及存放字符串方法 7.掌握常用的字符串操作函数 二、实验要求 1.分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。 2.实验报告中应包含运行结果及结果分析。 3.最后给出实验总结及体会 三、实验内容与步骤 1.程序填空 以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串: yes! 否则函数返回字符串: no! 并在主函数中输出.(所谓回文即正向与反向的拼写都一样,例如: adgda) #include"string.h" inthuiwen(charstr[]) { intp,i,j; p=strlen(str); for(i=0,j=p-1;i if(_str[i]! =str[j]_____________) return0; return1; } main() {charstr[50]; printf("Input: "); scanf("%s",str); if(___huiwen(str)==1___________) printf("yes! "); elseprintf("no! "); } 运行结果: ____________________ ________________ 2.程序设计 (1)从键盘输入10个整数存入数组,找出其中最大值和最小值。 main() { inti,a[10],max,min; for(i=0;i<10;i++) { scanf("%d",&a[i]); } max=a[0]; for(i=0;i<10;i++) { if(a[i]>max) max=a[i]; } min=a[0]; for(i=0;i<10;i++) { if(a[i] min=a[i]; } printf("%d%d",max,min); (2)编程实现用数组打印Fibonacci数列的前20项。 main() { inta[20],i; a[0]=1; a[1]=1; printf("%d%d",a[0],a[1]); for(i=2;i<20;i++) { a[i]=a[i-1]+a[i-2]; printf("%d",a[i]); } } (3)试编程分别用冒泡法和选择法对输入的10个数由小到大的排序。 main() { inti,j,a[10],max; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) { for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { max=a[j+1]; a[j+1]=a[j]; a[j]=max; } } for(i=0;i<10;i++) printf("%d",a[i]); } main() { inti,j,a[10],max; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) { for(j=i+1;j<=9;j++) if(a[i]>a[j]) { max=a[i]; a[i]=a[j]; a[j]=max; } } for(i=0;i<10;i++) printf("%d",a[i]); } (4)编程形成如下显示的4行4列二维矩形数组。 a= 要求: 1)求出数组a的两条对角线和。 2)将数组a的行和列互换,形成转置。 main() { intsum=0,i,j,a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},b[4][4]; for(i=0;i<4;i++) { for(j=0;j<4;j++) if(i==j||i==3-j) sum=sum+a[i][j]; } printf("对角线之和为: %d\n",sum); for(i=0;i<4;i++) { for(j=0;j<4;j++) b[i][j]=a[j][i]; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%4d",b[i][j]); printf("\n"); } } (5)编程实现用二维数组打印杨辉三角形(要求打印出6行) 1 11 121 1331 14641 15101051 思考: 1)能否实现用一维数组打印杨辉三角,如果可以,试编程实现。 2)若杨辉三角变成等腰三角形格式输出,程序又该如何变动? 1 11 121 1331 14641 15101051 main() { inti,j,a[6][6]; for(i=0;i<6;i++) { for(j=0;j<6;j++) { a[i][0]=1; a[i][i]=1; } } for(i=1;i<6;i++) { for(j=1;j a[i][j]=a[i-1][j]+a[i-1][j-1]; } for(i=0;i<6;i++) { for(j=0;j<=i;j++) printf("%d",a[i][j]); printf("\n"); } } main() { inti,j,k,a[6][6]; for(i=0;i<6;i++) { for(j=0;j<6;j++) { a[i][0]=1; a[i][i]=1; } } for(i=1;i<6;i++) { for(j=1;j a[i][j]=a[i-1][j]+a[i-1][j-1]; } for(i=0;i<6;i++) { for(k=1;k<6-i;k++) printf(""); for(j=0;j<=i;j++) printf("%d",a[i][j]); printf("\n"); } } #include voidmain() { intn=13; inta[80]={0}; intb[80]={0}; inti,j; b[1]=1; for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { a[j]=b[j]+b[j-1]; } for(j=1;j<=i;j++) { b[j]=a[j]; printf("%-6d",b[j]); } printf("\n"); } } (6)编写一个程序,将两个字符串连接起来(不用strcat函数) #include main() { chars1[80],s2[40]; inti=0,j=0; scanf("%s",s1); scanf("%s",s2); while(s1[i]! ='\0') i++; while(s2[j]! ='\0') s1[i++]=s2[j++]; s1[i]='\0'; printf("%s",s1); (7)“圈圈留一”问题: 若干个人围成一圈,从某个人开始顺时针数到第3个人,该人从圈中退出,然后继续顺时针到第3个人,该 人从圈中退出,以此类推,程序输出圈中最后退出的人。 main() { int*a,i,t=0,k=0,s=0,j=0,z; scanf("%d",&z); a=(int*)malloc(sizeof(int)*z); for(i=0;i a[i]=1; do { for(i=0;i { if(a[i]! =0) s=s+1; if(s%3==0) { a[i]=0; s=0; } } k=k+1; for(i=0;i t=t+a[i]; if(t==1) break; t=0; /* for(i=0;i<10;i++) printf("%d",a[i]);判断依据0为数3的人; printf("\n"); */ } while(k<100); for(i=0;i { j=j+1; if(a[i]! =0) break; } printf("%d",j); printf("%\n"); } 实验四库函数的典型应用 一、实验目的 1.理解函数的定义和使用方法。 2.熟悉常用的库函数,能够解决具体应用问题。 二、实验要求 4.分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。 5.实验报告中应包含运行结果及结果分析。 6.最后给出实验总结及体会 三、实验内容与步骤 1.程序改错 上机调试下面的程序,记录系统给出的出错信息,改正后写在对应错误代码行后面。 (1)以下scpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。 请填空。 ①voidscpy(chars[],chart[]) ②{inti; ③while(t[i]) ④s[i++]=t[i++]; ⑤t[i]=’\0’; ⑥} ⑦main() ⑧{charstr1[],str2[]="abcdefgh"; ⑨scpy(st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实践 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)