实 验 报 告
课程名称_____ C语言程序设计_____
实验项目___顺序结构程序设计___
实验仪器 ______计算机___________
系 别_____信息与通信工程学院_______
专 业______通信_________
班级/学号___通信1204 /2012010934__
学生姓名 ______王浩鑫_________
实验日期 ____2013年4月13日___
成 绩 _______________________
指导教师______周淑一 _________
一、 实验目的
1、 掌握C语言中,基本的输入输出函数的使用方法。
2、 掌握printf中转义字符’\t’,’\n’的用法。
3、 掌握赋值语句的用法。
4、 掌握算术表达式、赋值表达式的计算。
5、 掌握数学函数的使用。
二、 实验内容
1、 输入圆的半径 r ,计算圆的周长和面积 。其中 π =3.1416
输入: 圆的半径 r
输出:圆的周长c 面积 是s (均保留 2 位小数)
程序代码:
#include "stdio.h"
int main()
{
float r,c,s,PI=3.1416;
scanf("%f",&r);
c=2*PI*r;
s=PI*r*r;
printf("%.2f %.2f\n",c,s);
return 0;
}
2、编写程序,实现从键盘输入两个整数,输出它们的加减乘除取余五种算术运算结果的功能(结果均为整数)。假定除数不为0。
程序代码:
#include "stdio.h"
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%.2f\n",a,b,1.0*a/(1.0*b));
printf("%d%%%d=%d\n",a,b,a%b);
return 0;
}
3、编写一个程序,其功能为:从键盘输入一个大写字母,将其转换为对应的小写字母,并输出。
程序代码:#include "stdio.h"
int main()
{
char a;
scanf("%c",&a);
printf("%c\n",a+32);
return 0;
}
4、产品的利润与产品生产成本以及销售收入有关:
利润=销售收入-生产成本,
销售收入=销售数量×售价,
生产成本=固定成本+可变成本,
可变成本=生产数量×单位可变成本。
假定生产的产品全部售出。
编写一个程序,其功能为:根据给定的销售数量、售价、固定成本、单位可变成本,计算利润,并输出(结果保留两位小数,使用double类型定义实型数据)。
输入
销售数量 售价 固定成本 单位可变成本
输出
利润
程序代码:
#include "stdio.h"
int main()
{
double a,b,c,d,w;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
w=a*b-c-a*d;
printf("%.2lf\n",w);
return 0;
}
5、人口增长问题:按照每年0.2%的增长速度,我国现有人口13亿,10年后将有多少人口?
编写一个程序,其功能为:根据公式计算我国10年后的人口数,并输出(结果保留两位小数)。
p=p0(1+rate)n
其中,p0=13亿,rate=0.2%, n=10
输入
p0,rate, n的值
输出
10年后的人口数(单位:亿)
程序代码:
#include "math.h"
#include "stdio.h"
int main()
{
float a,b,c;
int n;
scanf("%f%f%d",&a,&b,&n);
c=a*pow(1+b,n);
printf("%.2f\n",c);
return 0;
}
6、输入时间的总秒数(整数),将其转换为hh:mm:ss的表示形式。
输入
只有一行,为一个整数,表示时间的总秒数。
输出
与输入的秒数对应的时间的时分秒表达形式。
程序代码:
#include "stdio.h"
int main()
{
int a,b,c,d;
scanf("%d",&a);
b=a/3600;
c=(a-b*3600)/60;
d=a-b*3600-c*60;
printf("%d:%d:%d\n",b,c,d);
return 0;
}
三、 实验体会
通过这次试验让我懂得了整型到实型的强制转换,掌握了转义字符的使用方法和“scanf、printf”这种基本的函数,C程序的语句后千万不要忘记加“;”。
在学习到知识的同时,我对C程序的精密和美感有了更深的体会,希望第一章的学习能成为我C语言学习的良好开端。
实验一
二、编程题(参考答案)
1、
#include “stdio.h”
void main()
{ int Math=82,eng=78,comp=91,average;
average=(Math+eng+comp)/3;
printf(“Math=%d,eng=%d,comp=%d,average=%d\n”,Math,eng,comp,average); }
2、
#include “stdio.h”
void main()
{ int n=152,d1,d2,d3;
d1=n%10;
d2=(n/10)%10;
d3=n/100;
printf(“整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n”,n,d1,d2,d3); }
3、
#include “stdio.h”
void main()
{ int n1,n2;
printf(“Enter n1,n2:”);
scanf(“%d,%d”,&n1,&n2);
printf(“%d+%d=%d\n”,n1,n2,n1+n2);
printf(“%d/%d=%d\n”,n1,n2,n1/n2);
printf(“%d%%%d=%d\n”,n1,n2,n1%n2);
}
三、改错题
原错误行(共三行):
/********************************** found ********************************/ #include “stdoi,h”
/********************************** found ********************************/ printf(“%d=%d*%d\n”,x);
/********************************** found ********************************/ printf(“%d*%d=%d\n”,y);
改正后:
#include “stdio.h”
printf(“%d=%d*%d\n”,y,x,x);
printf(“%d*%d=%d\n”,x,x,y);
实验二
一、改错题
1、原错误行(共三行):
/********************************** found ********************************/ #include “stdoi,h”
/********************************** found ********************************/ scanf(“%lf”,x);
/********************************** found ********************************/ y=1/x
改正后:
#include “stdio.h”
scanf(“%lf”,&x);
y=1/x;
2、原错误行(共两行):
/********************************** found ********************************/ { int i,sum;
/********************************** found ********************************/ for(i=1,i<=100,i++)
改正后:
{ int i,sum=0;
for(i=1;i<=100;i++)
二、编程题 (本标题报告上漏印了)
2、 (因为报告上小题号就是从2开始的,没有第1题)
#include “stdio.h”
#include “math.h”
void main()
{ int a,b,c;
float s,area,perimeter;
printf(“请输入三角形的三边:”);
scanf(“%d,%d,%d”,&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{ perimeter=a+b+c;
s=perimeter/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area =%.2f,perimeter=%.2f\n”,area,perimeter);
}
else
printf(“不构成三角形”);
}
3、
#include “stdio.h”
void main()
{ int i,m,n;
float sum=0;
printf(“Enter m:”);
scanf(“%d”,&m);
printf(“Enter n:”);
scanf(“%d”,&n);
for(i=m;i<=n;i++)
sum=sum+1.0/i;
printf(“sum=%.3f\n”,sum); }
4、
#include “stdio.h”
void main()
{ int i,n;
float sum=0;
printf(“Enter n:”);
scanf(“%d”,&n);
for(i=1;i<=n;i++)
sum=sum+1.0/(2*i-1);
printf(“sum=%.2f\n”,sum); }
5、
#include “stdio.h”
void main()
{ int i,m,n;
long a=1,b=1;
printf(“Enter m:”);
scanf(“%d”,&m);
printf(“Enter n:”);
scanf(“%d”,&n);
for(i=1;i<=m;i++)
a=a*i;
for(i=1;i<=n;i++)
b=b*i;
printf(“%d!+%d!=%ld\n”,m,n,a+b); }
实验三
一、改错题
原错误行(共三行):
/********************************** found ********************************/ double sum;
/********************************** found ********************************/ for(i=1;i<10;i++)
sum=sum+fact(i);
printf(“1!+2!+?+10!=%f\n”,sum);
}
/********************************** found ********************************/ double fact(int n);
改正后:
double sum=0;
for(i=1;i<=10;i++)
double fact(int n)
二、编程题
1、
int even(int n)
{ if(n%2==0)
return 1;
else
return 0;
}
2、
int prime(int x)
{ int n;
for(n=2;n<x;n++)
if(x%n==0)
return 0;
if(x>=2)
return 1;
else
return 0;
}
3、
#include “stdio.h”
int fun1(int n)
{ if(n%2==0)
return 1;
else
return 0;
}
int fun2(int x)
{ int n;
for(n=2;n<x;n++)
if(x%n==0)
return 0;
if(x>=2)
return 1;
else
return 0;
}
void main()
{ int i,m,n,a,b;
printf(“Enter m:”);
scanf(“%d”,&m);
printf(“Enter n:”);
scanf(“%d”,&n);
a=fun1(m);
b=fun2(n);
if(a==1) printf(“%d是偶数\n”,m); else printf(“%d是奇数\n”,m); if(b==1) printf(“%d是素数\n”,n); else printf(“%d不是素数\n”,n); }
实验四
一、改错题
1、原错误行(共两行):
/********************************** found ********************************/ { int i,s;
/********************************** found ********************************/ if(str[i]<=’0’||str[i]>=’9’)
改正后:
{ int i,s=0;
if(str[i]>=’0’&&str[i]<=’9’)
2、原错误行(共三行):
/********************************** found ********************************/ { int i,j,n,x,a[n];
/********************************** found ********************************/ a[i] =a[i+1];
/********************************** found ********************************/ a[i]=x; /*插入
改正后:
{ int i,j,n,x,a[10];
a[i+1] =a[i];
a[j]=x;
3、原错误行(共三行):
/********************************** found ********************************/ max=str;
/********************************** found ********************************/
if(max<str)
/********************************** found ********************************/
max=str;
改正后:
strcpy(max,str);
if(strcmp(max,str)<0)
strcpy(max,str);
4、原错误行(共两行):
/********************************** found ********************************/ void fun(int a[],int n) /*该函数求出a数组中n个元素奇数的个数*/
/********************************** found ********************************/ if(a[i]%2==0) m++;
改正后:
int fun(int a[],int n)
if(a[i]%2!=0) m++;
二、编程题
1、
#include “stdio.h”
void main()
{ int i,n,min,max,s1,s2,t,a[10];
printf(“请输入数据个数n值:”);
scanf(“%d”,&n);
printf(“请输入这%d个数:”,n);
for(i=0;i<n;i++)
scanf(“%d”,&a[i]);
min=a[0]; s1=0;
max=a[n-1]; s2=n-1;
for(i=0;i<n;i++)
{ if(a[i]<min) { min=a[i]; s1=i; } if(a[i]>max) { max=a[i]; s2=i; } }
if(s1!=0) { t=a[0];a[0]=a[s1];a[s1]=t; }
if(s2!=n-1) { t=a[n-1];a[n-1]=a[s2];a[s2]=t; } for(i=0;i<n;i++)
printf(“%d ”,a[i]);
}
2、
int sum(int a[],int n)
{ int i,sum=0;
for(i=0;i<n;i++)
sum+=a[i];
return sum;
}
实验五
一、改错题
1、原错误行(共两行):
/********************************** found ********************************/
scanf(“%d”,&p++);
/********************************** found ********************************/
x[0]=x[k];
改正后:
scanf(“%d”,p++);
x[0]=k;
二、编程题
1、
int search(int *a,int n,int x)
{ int i;
for(i=0;i<n;i++)
if(a[i]==x) return i;
return -1;
}
2、
int fun(char *s)
{ int i,j,n;
n=strlen(s);
for(i=0,j=n-1;i<n/2;i++,j--)
if(s[i]!=s[j])
return 0;
return 1;
}
3、
此题为选作题
#include “stdio.h”
void sort(int *a,int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;
if(k!=i)
{ t=a[i];a[i]=a[k];a[k]=t; }
}
}
main()
{ int a[10],i,n;
printf(“请输入n值:”);
} scanf(“%d”,&n); printf(“请输入这%d个元素值:”,n); for(i=0;i<n;i++) scanf(“%d”,&a[i]); sort(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n");
实验六
一、改错题(原错误行共两行):
/********************************** found ********************************/
{ scanf(“%d”,&score[j]);
/********************************** found ********************************/
printf("总分最高的学生是:%s,%d\n", name, sum);
改正后:
{ scanf(“%d”,&a[i].score[j]);
printf("总分最高的学生是:%s,%d\n", a[k].name, a[k].sum);
二、编程题
1、
#include "stdio.h"
typedef struct student /*定义结构体类型*/
{ long num;
char name[9];
int score[3];
float aver;
}STU;
void main()
{ STU a[10];
int i,j,n,s=0;
printf("输入n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf("输入第%d个学生的学号、姓名和3门课成绩:",i+1); scanf("%ld",&a[i].num);
scanf("%s",a[i].name);
s=0;
for(j=0;j<3;j++)
{ scanf("%d",&a[i].score[j]); s+=a[i].score[j]; }
a[i].aver=s/3.0;
}
for(i=0;i<n;i++)
printf("%s,%.2f分\n",a[i].name,a[i].aver);
}
三、填空题
;
}
;
实验七
一、改错题(原错误行共两行):
/********************************** found ********************************/ FILE fp;
/********************************** found ********************************/ if((fp=fopen(“a.txt”,“w”))!=NULL)
改正后:
FILE *fp;
if((fp=fopen(“a.txt”,“w”))==NULL)
二、编程题
1、
#include "stdio.h"
#include "string.h"
void main()
{ FILE *fp;
char a[10];
if((fp=fopen("test.txt","w"))==NULL)
{ printf("error");
exit(0);
}
scanf("%s",a);
strupr(a);
fputs(a,fp);
fclose(fp);
}
2、
#include "stdio.h"
#include "string.h"
void main()
{ FILE *fp;
char a;
if((fp=fopen("test.txt","r"))==NULL)
{ printf("error");
exit(0);
}
while(!feof(fp))
{ a=fgetc(fp);
printf("%c",a);
}
fclose(fp);
}
3、
#include "stdio.h"
#include "stdlib.h"
typedef struct student
{ long num;
char name[9];
int score[3];
float aver;
}STU;
void main()
{ FILE *fp;
int i,j,n,s;
STU a;
scanf("%d",&n);
if ((fp=fopen("stud.dat","wb"))==NULL)
{ printf("File connot be opened\n");
exit(0);
}
for(i=1;i<=n;i++)
{ scanf("%ld",&a.num);
scanf("%s",a.name);
s=0;
for(j=0;j<3;j++)
{ scanf("%d",&a.score[j]); s+=a.score[j]; a.aver=s/3.0;
fwrite(&a,sizeof(STU),1,fp);
}
fclose(fp);
}
4、
#include "stdio.h"
#include "stdlib.h"
typedef struct student
{ long num;
char name[9];
int score[3];
float aver;
}STU;
void main()
{ FILE *fp;
int i,j,n,s;
STU a;
if ((fp=fopen("stud.dat","rb"))==NULL)
{ printf("File connot be opened\n"); }
exit(0);
}
while(fread(&a,sizeof(STU),1,fp)!=NULL)
{ printf("%ld\t%s\t",a.num,a.name);
printf("%d\t%d\t%d\t%.2f\n",a.score[0],a.score[1],a.score[2],a.aver); }
fclose(fp);
}
研究生实验报告范本实验课程实验名称实验地点学生姓名学号指导教师范本实验时间年月日一实验目的熟悉电阻型气体传感器结构及工作原理进行基…
学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力…
滁州市政府组织退耕还林(黑体,小二,1.5倍行距,段前段后0.5行)——5060451007范雪花(学号,TimesNewRoma…
有关实验报告的书写格式江苏省泗阳县李口中学沈正中一、完整实验报告的书写完整的一份实验报告一般包括以下项目:实验名称:实验目的:实验…
学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力…
计算机科学与技术系C语言实验报告实验名称:指针及其应用日期:得分:指导老师:专业:班次:姓名:学号:实验目的(1)掌握变量的指针及…
C语言程序设计(20xx-20xx-2)实验报告1教学班级:***班学号:09姓名:艾米课程教师:***实验辅导教师:***教案1…
高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操…
C语言程序设计实验报告专业计算机科学与技术班级ACM班日期20xx年12月24日成绩实验组别第5次实验指导教师学生姓名张启夏学号U…
实验报告1已知三角形的边为abc试设计程序输入三边的值并计算三角形的面积已知三角形的面积计算公式为Sabc2Areaasbsc截图…