说明:下面的模板中黑体字标明的部分是我加的注释,大家要按注释来写报告。实验项目名称:符号函数的实现(此条要求写清楚)
一 实验目的
l 熟练掌握if、if…else、if…else if语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句实现分支选择结构。
l 掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
二 实验环境(仪器设备、软件等)
奔腾系列机器,windows-xp,vc6.0
三 实验原理(或要求)(这里写实验能够达到的功能)
要求:从键盘输入一个整数给x变量,判断x变量的符号,如果x是正数,输出1,如果x是负数,输出-1,如果x是0输出0。
四 实验步骤
1.写程序流程图:
程序代码:
#include<stdio.h>
void main()
{
int x,y;
scanf(“%d”,&x);
{
If(x<0)
Y=-1;
Else If(x==0) y=0;
Else y=1;
}
printf(“x=%d,y=%d\n”,x,y);
}
五 记录与处理(实验数据,误差分析、结果分析)
在键盘上输入456,得到输出x=456,y=1;
在键盘上输入-46,得到输出x=-46,y=-1;
在键盘上输入0,得到输出x=0,y=0;
六 思考题(此思考题可以自己想一个或2个问题,还要写出思考题的答案)
1.if和else的嵌套是以什么规则配对的?
答案:略。
2.如果if和else嵌套比较多的情况下,可以用其他方法实现多分支吗,都有什么方法?
答案:略。
七 实验小结(每个报告必须要写)
第二篇: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);
}