当前位置:文档之家› 电力系统故障分析课设程序(C语言)

电力系统故障分析课设程序(C语言)

电力系统故障分析课设程序(C语言)
电力系统故障分析课设程序(C语言)

故障分析上级计算

1、该环节的任务、要求与教学安排

?课程名称:故障分析上机计算

?课程类型: 教学实践环节

?学分:2

?适用对象: 电气工程及其自动化专业(继电保护及自动远动技术专业方向)

?

?先修课程:《电力系统分析基础》、《电力系统故障分析》(及计算机C 语言课程)

1.1 课程设计的目的

A.巩固“电力系统故障分析”课程的理论知识,进一步掌握故障计算的基本知

识和计算方法;

B.熟悉使用计算机计算电力系统故障过程,掌握数学模型,提高编程能力;

C.提高独立分析问题和解决问题的工作能力。

1.2 该环节的主要内容

(1)手算简单故障

对给定的电力系统接线图,选择母线C或母线D为短路点,计算三相短路、两相短路、单相接地和两相接地短路等短路故障,过程与要求参见指导书(任务一)。

(2)上机计算

软件平台:Tuber C或VC、VC++

?采用节点阻抗方程计算简单故障;

?画出程序流程,编写程序代码,要求程序代码易懂、通用;

?上机计算故障,得出正确结果;

?原始数据与结果采用数据文件格式;

?进行结果分析。

? 1.7推荐参考书

A.《电力系统故障分析上机计算指导书》,徐玉琴,校印讲义。

B. 《电力系统故障分析》,刘万顺,中国电力出版社,1998年。

C. 《C程序设计》,谭浩强,清华大学出版社,1991年。

? 2.2 故障计算的程序流程

?采用节点阻抗方程计算简单故障;?程序代码要易懂、通用;

?原始数据与结果采用数据文件格式;?得出的结果正确.

编写的程序如下:

#include

#include

#define M 100 /*最大值路数*/

#define N 100 /*最大节点数*/

int F,T,R;

int C;

int w,

h,

r,

n, /*节点数*/

m, /*支路数*/

v,

LX; /*故障类型*/

float b1[M][M],b0[M][M]; /*电阻导纳的数组*/

float rr,tt,C1[M][M],C0[M][M];

static float Z1[M][M],Z0[M][M]; /*阻抗矩阵的数组*/ static float Ip1,Ip2,Ip0; /*口电流*/

static float Up1,Up2,Up0; /*口电压*/

static float Zp1,Zp2,Zp0; /*口阻抗*/

static float U1[M],U2[M],U0[M],il[N],I1[M][M],I2[M][M],I0[M][M],

UAR[M],UBR[M],UCR[M],UAI[M],UBI[M],UCI[M], IAR[M][M],IBR[M][M],ICR[M][M],IAI[M][M],IBI[M][M],ICI[M][M], UA[M],UB[M],UC[M],IA[M][M],IB[M][M],IC[M][M]; struct zlz /* 正序结构体*/

{ int h; /* h=1为正序*/

int p1,p2; /* 支路前后的两个节点*/

float x; /* 支路的电抗*/

} zlz[M];

struct zlf /* 零序结构体*/

{ int h; /* h=0为零序*/

int p1,p2; /* 支路前后的两个节点*/

float x; /* 支路的电抗*/

} zlf[M];

struct sdl /*节点输入电流结构体*/

{int h, /* h=3为节点注入电流*/

p1; /* 注入的节点*/

float i; /* 注入的电流值*/

}sdl[M];

FILE *fp1,*fp2; /* 文件指针定义*/

void Read_data() /* 读取原始数据*/

{ int i,j;

fp1=fopen("input.txt","r"); /* 打开input.txt文件*/

if(fp1==NULL)

{printf(" 文件为空,重新检查输入!\n");}

fscanf(fp1,"%d,%d,%d,%d\n",&n,&m,&v,&r); /*输入节点数,正支路数, 负支路数,注入电流数*/

j=1;

do

{

for(i=1;i<=m+v+r;i++)

{ fscanf(fp1,"%d",&h);

if(h==1)

{fscanf(fp1,",%d,%d,%f\n",&zlz[i].p1,&zlz[i].p2,&zlz[i].x);

j++;}

if(h==0)

{fscanf(fp1,",%d,%d,%f\n",&zlf[i].p1,&zlf[i].p2,&zlf[i].x);

j++; }

if(h==3)

{fscanf(fp1,",%d,%f\n",&sdl[i].p1,&sdl[i].i);

j++;} } } while(j<=m+v+r);

fclose(fp1);

if((fp2=fopen("output.txt","w"))==NULL)

{ printf(" 文件为空,重新检查输入!\n");}

/*程序原始数据输出*/

fprintf(fp2,"\n 原始数据\n");

fprintf(fp2," \n");

fprintf(fp2," 节点数:%2d 正支路数:%2d 负支路数:%2d 注入电流数:%2d \n", n,m,v,r);

fprintf(fp2," \n");

for(i=1;i<=m;i++)

fprintf(fp2," 相关节点:%2d,%2d X1=%f \n",zlz[i].p1,zlz[i].p2,zlz[i].x);

for(i=m+1;i<=m+v;i++)

fprintf(fp2," 相关节点:%2d,%2d X0=%f \n",zlf[i].p1,zlf[i].p2,zlf[i].x);

for(i=m+v+1;i<=m+v+r;i++)

fprintf(fp2," 注入电流节点:%2d il=%f \n",sdl[i].p1,sdl[i].i);}

void Form_Z() /* 形成节点阻抗矩阵并输出*/

{ int a,b,i,j,k;

float Z;

float ZZ[50][50];

for(i=0;i<=m;i++)

for(j=0;j<=m;j++)

{b1[i][j]=0;b0[i][j]=0;

Z1[i][j]=0;Z0[i][j]=0;}

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

b1[a][b]=1/zlz[i].x;

b1[b][a]=1/zlz[i].x;}

for(i=m+1;i<=m+v;i++)

{a=zlf[i].p1;b=zlf[i].p2;

b0[a][b]=1/zlf[i].x;

b0[b][a]=1/zlf[i].x;}

/*后根据节点电压法算出导纳矩阵*/

/*正序*/

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z1[i][j]=0;}

for(i=1;i<=n;i++)

for(j=0;j<=n;j++)

{Z1[i][i]=Z1[i][i]+b1[i][j];}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(i!=j)

{Z1[i][j]=-1*b1[i][j];}

/*零序*/

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z0[i][j]=0;}

for(i=1;i<=n;i++)

for(j=0;j<=n;j++)

{Z0[i][i]=Z0[i][i]+b0[i][j];}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(i!=j)

{Z0[i][j]=-1*b0[i][j];}

/*以文件的形式输出导纳矩阵*/

fprintf(fp2," 输出正序导纳矩阵:\n\n");

for(i=1;i<=n;i++)

{fprintf(fp1,"\n ");

for(j=1;j<=n;j++)

{ if(Z1[i][j]>=0)

fprintf(fp2,"j%f ",Z1[i][j]);

else

fprintf(fp2,"-j%f ",-Z1[i][j]); }}

fprintf(fp2," \n \n 输出零序导纳矩阵:\n\n"); for(i=1;i<=n;i++)

{fprintf(fp1,"\n ");

for(j=1;j<=n;j++)

{ if(Z0[i][j]>=0)

fprintf(fp2,"j%f ",Z0[i][j]);

else

fprintf(fp2,"-j%f ",-Z0[i][j]); }}

fprintf(fp1,"\n\n\n");

for(i=1;i<=n;i++) /*求正序阻抗矩阵*/

for(j=1;j<=n;j++)

ZZ[i][j]=0;

for(k=1;k<=n;k++)

{ZZ[k][k]=-1/Z1[k][k];

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{if(i!=k&&j!=k)

{ZZ[i][k]=-Z1[i][k]/Z1[k][k];

ZZ[k][j]=-Z1[k][j]/Z1[k][k];

Z=Z1[i][k]*Z1[k][j]/Z1[k][k];

ZZ[i][j]=Z1[i][j]-Z;}}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z1[i][j]=ZZ[i][j];}}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z1[i][j]=-Z1[i][j];}

for(i=1;i<=n;i++) /*求零序阻抗矩阵*/

for(j=1;j<=n;j++)

ZZ[i][j]=0;

for(k=1;k<=n;k++)

{ZZ[k][k]=-1/Z0[k][k];

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{if(i!=k&&j!=k)

{ZZ[i][k]=-Z0[i][k]/Z0[k][k];

ZZ[k][j]=-Z0[k][j]/Z0[k][k];

Z=Z0[i][k]*Z0[k][j]/Z0[k][k];

ZZ[i][j]=Z0[i][j]-Z;}}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z0[i][j]=ZZ[i][j];}}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{Z0[i][j]=-Z0[i][j];}

fprintf(fp2," 输出正序阻抗矩阵:\n\n");

for(i=1;i<=n;i++)

{fprintf(fp1,"\n ");

for(j=1;j<=n;j++)

{ if(Z1[i][j]>=0)

fprintf(fp2,"j%f ",Z1[i][j]);

else

fprintf(fp2,"-j%f ",-Z1[i][j]); }}

fprintf(fp2," \n \n 输出零序阻抗矩阵:\n\n"); for(i=1;i<=n;i++)

{fprintf(fp1,"\n ");

for(j=1;j<=n;j++)

{ if(Z0[i][j]>=0)

fprintf(fp2,"j%f ",Z0[i][j]);

else

fprintf(fp2,"-j%f ",-Z0[i][j]); }}

fprintf(fp2,"\n\n\n");

for(i=1;i<=n;i++)

il[i]=0;

for(i=m+v+1;i<=m+v+r;i++)

{a=sdl[i].p1;il[a]=sdl[i].i;}

fprintf(fp2,"\n输出注入电流值: \n ");

for(i=1;i<=n;i++)

fprintf(fp2," il[%d]=%f\n ",i,il[i]);}

void XZ_L() /*断相阻抗矩阵修正*/

{int i,j;

printf(" 请输入发生两相断相故障的两个节点(F、T):");

scanf("%d,%d",&F,&T);

for(i=1;i<=m;i++)

for(j=1;i<=m;i++)

{Z1[i][j]=Z1[i][j]-(Z1[i][F]-Z1[i][T])*(Z1[F][j]-Z1[T][j])/(Z1[F][F]+Z1[T][T]-2*Z1[ F][T]-1/b1[F][T]);}

for(i=1;i<=m;i++)

for(i=1;i<=m;i++)

{Z0[i][j]=Z0[i][j]-(Z0[i][F]-Z0[i][T])*(Z0[F][j]-Z0[T][j])/(Z0[F][F]+Z0[T][T]-2*Z0[ F][T]-1/b0[F][T]);}

}

void SAN_L() /*三相短路故障*/

{int j;

float tt1;

printf(" 请输入发生三相故障的节点:");

scanf("%d",&F);

tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Zp1=Z1[F][F];

Ip1=-tt1/Zp1;

Ip2=0;

Ip0=0;

Up1=0;

Up2=0;

Up0=0;}

void CHUAN_L() /*串联型故障*/

{int j;

float zs,tt1;

if(LX==1)

{printf(" 请输入发生一相接地短路故障的节点:");

scanf("%d",&F);

printf(" 请输入过度电阻zs:");

scanf("%f",&zs);

tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Zp1=Z1[F][F];

Zp2=Z1[F][F];

Zp0=Z0[F][F];

Ip1=-tt1/(Zp1+Zp2+Zp0+3*zs);

Ip2=Ip1;

Ip0=Ip1;

Up1=tt1+Ip1*Zp1;

Up2=Ip2*Zp2;

Up0=Ip0*Zp0;

}

if(LX==2)

{Zp1=Z1[F][F]+Z1[T][T]-2*Z1[F][T];

Zp2=Z1[F][F]+Z1[T][T]-2*Z1[F][T];

Zp0=Z0[F][F]+Z0[T][T]-2*Z0[F][T];

tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Ip1=-tt1/(Zp1+Zp2+Zp0);

Ip2=Ip1;

Ip0=Ip1;

Up1=Ip1*(Zp2+Zp0);

Up2=-Ip2*Zp2; Up0=-Ip0*Zp0; }}

void BING_L() /*并联型故障*/

{int j;

float tt1,zp;

if(LX==3||LX==4)

{printf(" 请输入发生两相短路或两相接地短路故障的节点:"); scanf("%d",&F);

printf(" 请输入过度电阻zp:");

scanf("%f",&zp);

Zp1=Z1[F][F];

Zp2=Z1[F][F];

Zp0=Z0[F][F];

if(LX==3)

{tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Ip1=-tt1/(2*Zp1+zp);

Ip2=-Ip1;

Ip0=0;

Up1=tt1+Z1[F][F]*Ip1;

Up2=Z1[F][F]*Ip2;

Up0=0;}

if(LX==4)

{tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Ip1=-tt1/(Zp1+Zp1*(Zp0+zp)/(Zp1+Zp0+3*zp));

Ip2=-Ip1*(Zp0+3*zp)/(Zp1+Zp0+3*zp);

Ip0=-Ip1*Zp1/(Zp1+Zp0+3*zp);

Up1=tt1+Z1[F][F]*Ip1;

Up2=Z1[F][F]*Ip2;

Up0=Z0[F][F]*Ip0; }

}

if(LX==5)

{ Zp1=Z1[F][F]+Z1[T][T]-2*Z1[F][T];

Zp2=Z1[F][F]+Z1[T][T]-2*Z1[F][T];

Zp0=Z0[F][F]+Z0[T][T]-2*Z0[F][T];

tt1=0;

for(j=1;j<=n;j++)

{tt1+=Z1[F][j]*il[j]; }

Ip1=-tt1/(Zp1+Zp2*Zp0/(Zp2+Zp0));

Ip2=-Ip1*Zp0/(Zp2+Zp0);

Ip0=-Ip1*Zp2/(Zp2+Zp0);

Up1=Ip1*Zp2*Zp0/(Zp2+Zp0);

Up2=Up1; Up0=Up1;

}

}

void DY_() /*求各节点的电压*/

{int i,j;

float tt[M];

for(i=1;i<=n;i++)

tt[i]=0;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{tt[i]=tt[i]+Z1[i][j]*il[j];}

if(LX==0)

{for(i=1;i<=n;i++)

{U1[i]=tt[i]+Z1[i][F]*Ip1; U2[i]=0; U0[i]=0; }}

if(LX==1||LX==2||LX==3||LX==4||LX==5)

{for(i=1;i<=n;i++)

{U1[i]=tt[i]+Z1[i][F]*Ip1; U2[i]=Z1[i][F]*Ip2; U0[i]=Z0[i][F]*Ip0;} } } void DL_L() /*求各支路的电流*/

{int a,b,i,j;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{I1[i][j]=0;I2[i][j]=0;I0[i][j]=0;}

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

I1[a][b]=(U1[a]-U1[b])/zlz[i].x;

I2[a][b]=(U2[a]-U2[b])/zlz[i].x;

a=zlf[m+i].p1;b=zlf[m+i].p2;

I0[a][b]=(U0[a]-U0[b])/zlf[m+i].x;}

}

void FZXS_L() /*分支系数计算*/

{ int i,a,b;

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

if(a!=0&&b!=0)

C1[a][b]=I1[a][b]/Ip1;

C0[a][b]=I0[a][b]/Ip0; }}

void HX_L() /*换相*/

{int i,a,b;

for(i=1;i<=n;i++)

{UAR[i]=0;

UBR[i]=0.866*(U1[i]-U2[i]);

UCR[i]=0.866*(U2[i]-U1[i]);

UAI[i]=U0[i]+U1[i]+U2[i];

UBI[i]=U0[i]-0.5*(U1[i]+U2[i]);

UCI[i]=U0[i]-0.5*(U1[i]+U2[i]);}

for(i=1;i<=m;i++)

{ a=zlz[i].p1;b=zlz[i].p2;

IAR[a][b]=I0[a][b]+I1[a][b]+I2[a][b];

IBR[a][b]=I0[a][b]-0.5*(I1[a][b]+I2[a][b]);

ICR[a][b]=I0[a][b]-0.5*(I1[a][b]+I2[a][b]);

IAI[a][b]=0;

IBI[a][b]=0.866*(I2[a][b]-I1[a][b]);

ICI[a][b]=0.866*(I1[a][b]-I2[a][b]); }

}

void MO_L() /*求相电压、电流的模值*/

{int i,a,b;

for(i=1;i<=n;i++)

{UA[i]=sqrt(UAR[i]*UAR[i]+UAI[i]*UAI[i]);

UB[i]=sqrt(UBR[i]*UBR[i]+UBI[i]*UBI[i]);

UC[i]=sqrt(UCR[i]*UCR[i]+UCI[i]*UCI[i]);}

for(i=1;i<=m;i++)

{ a=zlz[i].p1;b=zlz[i].p2;

IA[a][b]=sqrt(IAR[a][b]*IAR[a][b]+IAI[a][b]*IAI[a][b]);

IB[a][b]=sqrt(IBR[a][b]*IBR[a][b]+IBI[a][b]*IBI[a][b]);

IC[a][b]=sqrt(ICR[a][b]*ICR[a][b]+ICI[a][b]*ICI[a][b]);}

}

void XDLSC_L() /*输出函数*/

{int i,a,b;

fprintf(fp2,"\n\n请输入故障类型:三相短路——0、单相接地——1、两相断相——2、两相短路——3、两相接地短路——4、单相断相——5 \n");

fprintf(fp2,"\n\n故障类型:%d\n\n",LX);

fprintf(fp2,"\n输出口参数值:\n");

fprintf(fp2," Ip1=%f\n Ip2=%f\n Ip0=%f\n ",Ip1,Ip2,Ip0);

fprintf(fp2," Up1=%f\n Up2=%f\n Up0=%f\n ",Up1,Up2,Up0);

fprintf(fp2,"\n输出各节点序电压值:");

for(i=1;i<=n;i++)

{if(U1[i]>=0)

fprintf(fp2,"\n U1[%d]=j%f\n ",i,U1[i]);

else fprintf(fp2,"\n U1[%d]=-j%f\n ",i,-U1[i]);

if(U2[i]>=0)

fprintf(fp2," U2[%d]=j%f\n ",i,U2[i]);

else fprintf(fp2," U2[%d]=-j%f\n ",i,-U2[i]);

if(U0[i]>=0)

fprintf(fp2," U0[%d]=j%f\n ",i,U0[i]);

else fprintf(fp2," U1[%d]=-j%f\n ",i,-U0[i]);} fprintf(fp2,"\n输出各支路序电流值:");

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

fprintf(fp2,"\n I1[%d][%d]=%f\n I2[%d][%d]=%f\n I0[%d][%d]=%f\n",

a,b,I1[a][b],a,b,I2[a][b],a,b,I0[a][b]); }

fprintf(fp2,"\n\n");

fprintf(fp2,"\n输出分布系数:\n");

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

if(a!=0&&b!=0)

{fprintf(fp2," C1[%d][%d]=%f\n C0[%d][%d]=%f\n",a,b,C1[a][b],a,b,C0[a][b]);}}

fprintf(fp2,"\n\n");

fprintf(fp2,"\n输出各节点各相电压值:");

for(i=1;i<=n;i++)

{if(UAI[i]>0)

fprintf(fp2,"\n UA[%d]=%f + j%f",i,UAR[i],UAI[i]);

if(UAI[i]<0) fprintf(fp2,"\n UA[%d]=%f - j%f",i,UAR[i],-UAI[i]);

if(UAI[i]==0) fprintf(fp2,"\n UA[%d]=%f ",i,UAR[i]);

if(UBI[i]>0)

fprintf(fp2," UB[%d]=%f + j%f",i,UBR[i],UBI[i]);

if(UBI[i]<0) fprintf(fp2," UB[%d]=%f - j%f",i,UBR[i],-UBI[i]);

if(UBI[i]==0) fprintf(fp2," UB[%d]=%f ",i,UBR[i]);

if(UCI[i]>0)

fprintf(fp2," UC[%d]=%f + j%f",i,UCR[i],UCI[i]);

if(UCI[i]<0) fprintf(fp2," UC[%d]=%f - j%f",i,UCR[i],-UCI[i]);

if(UCI[i]==0) fprintf(fp2," UC[%d]=%f",i,UCR[i]);

}

fprintf(fp2,"\n输出各支路各相电流值:\n");

for(i=1;i<=m;i++)

{a=zlz[i].p1;b=zlz[i].p2;

if(IAI[a][b]>0)

fprintf(fp2,"\n IA[%d][%d]=%f + j%f

C语言程序设计部分习题及例题参考程序

《C语言程序设计》部分例题及课后习题参考程序1.编程计算如下分段函数: y={2x+3 x≥10 4x 0≤x<10 5x?6 x<0 [参考程序] #include int main() { float x,y; printf("input x:"); scanf("%f",&x); if(x>=10) y=2*x+3; else if(x>=0) y=4*x; else y=5*x-6; printf("y=%.2f\n",y); } 2.编程将从键盘输入的百分制成绩转换为等级分,转换方法如下:90以上(大于或等于90,下同)为A,80分以上为B,70分以上为C,60分以上为D,60分以下,即低于60分为E。[参考程序] #include int main() { float score; char rank; printf("input a score:"); scanf("%f",&score); if(score>100||score<0) { printf("invalid score input\n"); exit(-1); } switch((int)score/10) { case 10: case 9: rank='A';break; case 8: rank='B';break; case 7: rank='C';break;

rank='D';break; default: rank='E'; } printf("%.2f:%c\n",score,rank); return 0; } 3.编程判断以从键盘输入的三个数为边长,是否能构成三角形。 [参考程序] #include int main() { float a,b,c; printf("input a,b,c:"); scanf("%f%f%f",&a,&b,&c); if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a) printf("(%.2f,%.2f,%.2f)能围成三角形\n",a,b,c); else printf("(%.2f,%2.2f,%.2f)不能围成三角形\n",a,b,c); } 4.编程实现将从键盘输入的一个正整数逆序输出,如输入1234,输出3421 [参考程序] #include int main() { int n; printf("input a number:"); scanf("%d",&n); do { printf("%d",n%10); n/=10; } while(n!=0); return 0; } 5.输入一个1~10范围内的整数,计算该数的阶乘。 [参考程序] #include int main() { int n,s=1,i; printf("input a number(1~10):"); scanf("%d",&n); for(i=2;i<=n;i++) s*=i;

C语言调试常见错误及修改方法(附习题)

1.调试 C 程序时常见的错误类型分析 一般情况下,错误主要分为两大类:一、语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一步是先编译,解决这类语法错误。下面总结了二级C 语言上机改错题中常见的语法错误: (1) 丢失分号,或分号误写成逗号。 (2) 关键字拼写错误,如本来小写变成大写。 (3) 语句格式错误,例如for 语句中多写或者少写分号。 (4) 表达式声明错误,例如:少了() (5) 函数类型说明错误。与main ()函数中不一致。 (6) 函数形参类型声明错误。例如:少* 等。 (7) 运算符书写错误,例如:/ 写成了。二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。对于逻辑错误可以按这样的步骤进行查找。 (1) 先读试题,看清题目的功能要求。 (2) 通读程序,看懂程序中算法的实现方法。 (3) 细看程序,发现常见错误点。 2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效 1、若错误行是函数首部,可分为以下几种情况: A、该行最后若有分号则删除,中间若有分号则改成逗号 B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m 个元素的指针变量,则第二维的长度必须与main 中对应数组的第二维长度相同 C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。 2、若错误行是if 或while 语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。 3、若错误行中有if、while 、for 则要特别注意条件表达式的错误问题: A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符 B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号 C、f or 中要用分号分隔表达式,而不是用逗号 4、语法错误 A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。 B、大小写不对,若错误行中有大写字母则一般都改成小写字母。 5、指针变量的运用,若错误行中有指针变量,并且该变量名前没有指针运算符则一般都是加上指针运算符 6、若错误行为return 语句,则首先看是否是缺少分号若是则加上分号即可;否则就是return 后的变量或表达式错误(此时可通过看题意,来分析该返回哪一变量或表达式)

C语言程序设计说课教案

页眉内容 C 语言程序设计》说课教案从以下方面说明: 一、二、课程性质、地位教学对象分析及要求 三、课程体系 四、 五、六、七、课程的重点、难点及突破教学方法与教学手段学生考核 教学计划 一、课程性质、地位 1.课程的性质 《C语言程序设计》课程是高职高专通信类和电子信息类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C 语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络 应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C 语言作为应用系统开发设计语言,C 语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 2.课程的地位 通信技术(计算机网络方向)专业和电子信息技术专业,C 语言室基础,是计算机应用设计的基础。是学习其他程序语言的前导及基础。 二、教学对象分析及要求 1.教学对象 本系学习C 语言课程的生源是高中生源和中专生源。高中生文化基础扎

实,但计算机专业知识薄弱,开始学习时较困难,但入门提高较快。中专生,文化基础薄弱,但计算专业已经学习一些,开始学习不会很困难,但是知识转换能力方面会有困难,学习进度会慢一点。针对不同生源学生在教学方法和重难点方面有所区别。 2.对同一生源不同程度学生采取如下策略 高职智力不差,但自控能力相比较差。所以要从非智力因素入手,培养学生的学习积极性,提高实际动手能力。 3.在教学中教与学 三、课程体系 《C 语言程序设计》教学学时为60,理论内容以“够用为度”的原则,按照程序设计能力,通过一个项目“学生成绩管理系统”为主线,介绍C 语言基本概念、三种基本程序结构设计、指针、函数体等重点内容。然后通过1 周的课程设计,完成项目“学生成绩管理系统” 综合设计题目。课程内容附表1。 1.课程内容选取依据 1)C 语言编程规范 根据C 语言编程规范等资料,选取的内容是C 语言教学中必须掌握的适应中。另外还根据C 语言程序设计和后继课程(数据库、网络编程语言等)之间的关系、C 语言知识与技能要求及高职学生人才培养目标要求来确定本课程的教学内容。 2)职业素质要求 具备基本的阅读程序和程序的编写能力。同时具备实际问题转换为计算机程序解决的能力。 3)实际工作中岗位能力需求 通过对通信和电子专业毕业生的调查、人才招聘信息和一线专业技术人员交流,确定本系通信技术专业和电子专业的学生主要有程序设计员、单片机开发员、网站设计员、计算机维护管理、企业应用软件实施员、通信工程施工等工作岗位,这些岗位中,程序设计思维和源代码编写能力是关键技能,而C 语言作为专业核心课程中的基础课程,必须掌握结构化程序设计思路,我们选取本课程内容是根据这些要求选取的。 2.课程体系模块

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

《C语言程序设计》说课稿

《C语言程序设计》说课稿 《C语言程序设计》说课稿 一、课程教学大纲 课程教学大纲包括课程性质、课程地位、课程目标等几个方面。 (一)课程性质 《C语言程序设计》课程是高职高专计算机类、电子信息类、通信类和电子商务类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 (二)课程地位 1、学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言 2、C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 图1C语言程序设计在课程体系中的地位 (三)课程目标 根据对教材内容、教学大纲及学生自身认知水平的分析,教学目

标从知识目标、能力目标和素质目标三个方面来分析。1、知识目标 ①掌握程序的基本结构;②掌握数组和函数的运用;③掌握指针和位运算的基本操作。2、能力目标 ①掌握初步编程思想,熟悉基本算法,能根据问题正确选择、组合算法并绘制程序流程图; ②能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果;③良好的编程思路和风格。3、素质目标 ①具备基本的阅读程序和程序的编写的素质;②培养严谨踏实的作风,训练自己的逻辑思维;③锻炼自己分析问题、解决问题的能力。 (四)教学总体规划 《C语言程序设计》的教学总学时为80学时,以“理论够用、注重实操”为原则,按照程序设计的能力模块,系统的讲解C语言基本概念、三种基本程序设计结构、数组和函数,并结合所学知识点进行相应实训,最终完成一个综合项目“学生成绩管理系统”。 旨在培养学生能够循序渐进地掌握C语言的语法规则、建立程序设计概念、确立程序设计的思维方式、掌握程序设计的方法、初步积累编程经验、培养学生良好的程序设计风格,能初步用C语言解决与专业相关的应用问题,并为学习其它的计算机课程奠定基础。 (五)教学的课时安排 (六)实践教学内容 实践教学环节充分体现“任务驱动、实践导向”的设计思想。 (六)课程重点和难点

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

《C语言程序设计》说课稿(超好)

《C语言程序设计》说课稿 广州松田职业学院机电与信息工程系--唐涛 一、课程教学大纲 课程教学大纲包括课程性质、课程地位、课程目标等几个方面。 (一)课程性质 《C语言程序设计》课程是高职高专计算机类、电子信息类、通信类和电子商务类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 (二)课程地位 1、学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言 2、C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 图1 C语言程序设计在课程体系中的地位 (三)课程目标 根据对教材内容、教学大纲及学生自身认知水平的分析,教学目标从知识目标、能力目标和素质目标三个方面来分析。 1、知识目标 ①掌握程序的基本结构; ②掌握数组和函数的运用; ③掌握指针和位运算的基本操作。 2、能力目标

①掌握初步编程思想,熟悉基本算法,能根据问题正确选择、组合算法并绘制程序流程图; ②能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果; ③良好的编程思路和风格。 3、素质目标 ①具备基本的阅读程序和程序的编写的素质; ②培养严谨踏实的作风,训练自己的逻辑思维; ③锻炼自己分析问题、解决问题的能力。 (四)教学总体规划 《C语言程序设计》的教学总学时为80学时,以“理论够用、注重实操”为原则,按照程序设计的能力模块,系统的讲解C语言基本概念、三种基本程序设计结构、数组和函数,并结合所学知识点进行相应实训,最终完成一个综合项目“学生成绩管理系统”。 旨在培养学生能够循序渐进地掌握C语言的语法规则、建立程序设计概念、确立程序设计的思维方式、掌握程序设计的方法、初步积累编程经验、培养学生良好的程序设计风格,能初步用C语言解决与专业相关的应用问题,并为学习其它的计算机课程奠定基础。 (五)教学的课时安排

C语言程序设计习题及答案

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是() A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是() A、abc B、12AC C、sun D、 A2 3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是() A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是() A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是() A、% B、/ C、%和/ D、 + 6、以下关于运算符的优先顺序的描述正确的是() A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad);

A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是() A、 INPUT x、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、 scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:() void main ( ) { int m,n; scanf(“%2d%3d”,&m,&n); printf(“m=%d n=%d\n”,m,n); } A、m=23 n=45 B、m=234 n=56 C、m=23 n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是() main( ) { int x,y; scanf(“%d”,&x); y=x>12x+10:x-12; printf(“%d\n”,y); } A、 0 B、 22 C、 12 D、10 11、C语言中while和do-while循环的主要区别() A、do-while的循环体至少执行一次 B、while 的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内

最新C语言程序设计说课稿

《C语言程序设计》说课稿 信息工程系 张林

《C语言程序设计》说课稿 (一)课程设置 1、课程定位(性质和作用) 《C语言程序设计》课程是计算机应用技术专业的专业基础课,旨在培养学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言,C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 2、课程设计(理念与思路) 设计原则: 坚持以岗位能力培养为本位的设计原则,教学内容、教学方法及考核方式均围绕能力培养来进行设计。 设计理念: 以后续课程对编程能力需求为导向,坚持理论够用,将相关知识点分解到实际项目中,让学生通过对项目的分析和实现来掌握相关理论知识和编程技能,选择技术实用性、知识拓展性强的教学用例和实训项目,同时将计算机等级考试和专升本相关内容融入到相关的教学单元中。 (二)教学内容(课程大纲) 一、课程基本情况 课程类型:理论课+实践课 计划学时:理论课40课时实践课56课时 开课学期:第一学年 后续课程:《基于C语言的数据结构算法设计》、《VC++》、《VB》、《软件工程》、《Java程序设计》 课程性质:专业必修课

二、课程目标 1、素质目标 (1)、具有独立思考、独立设计、独立调试的基本能力 (2)、具有良好的分析问题、解决问题和再学习的能力 (3)、具有良好的完成工作任务、团队合作和沟通能力 (4)、培养严谨的工作作风和勤奋努力的工作态度 (5)、培养较强的掌握新技术、新方法和新系统的能力 (6)、具有健全的人格和行为习惯、具有心理承受能力和社会责任感 2、能力目标 (1)、能够根据数据处理的需求,熟练使用数值、字符、数组、指针和文件等各种数据类型编写程序 (2)、能够根据数据处理的需求,熟练运用顺序、选择、循环等结构化语言进行程序设计树的逻辑结构,描述其物理结构并实现相应算法 (3)、能够灵活、有效地运用典型的排序、查找等算法 (4)、能够采用模块化的方法进行程序设计 (5)、能够读懂软件开发项目的部分编程逻辑与技巧、基本的业务流程控制与核心算法 3、知识目标 (1)数据类型与表达式 (2)顺序结构程序设计 (3)选择结构程序设计 (4)循环结构程序设计 (5)数组、指针、结构体和文件等数据类型的定义与应用 (6)应用函数程序设计。 三、教材分析 中国铁道出版社出版的《C语言程序设计》,由恰汗·合孜尔主编,属于普通高等教育“十一五”规划教材。 本教材注重实例的安排,基本上相关概念都有相应的实例进行讲解和阐述,这样学生更容易理解和掌握所学知识,并且配有习题集和上机指导手册作为辅助教学资料,学生通过习题的练习和上机实训,加深了对所学知识的理解和应用。 四、课程内容与学时安排: 理论教育课时安排表

C语言程序设计课程设计报告

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目: C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C 语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述

C语言程序设计课程作业

C语言程序设计课程作业_A 一、单选题 1. (4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是() ? A. x%=(k%=5) ? B. x%=(k-k%5) ? C. x%=k ? D. (x%=k)-(k%=5) 答案D 解析C语言程序设计/数据类型与运算/整型算术表达式 2. (4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); } ? A. 20,20,20 ? B. 32,16,20 ? C. 16,32,20 ? D. 20,32,20 答案C 解析C语言程序设计/数据类型及运算 3. (4分)C语言中while和do while循环的主要区别是( ) ? A. do-while的循环至少无条件执行一次

? B. while循环控制条件比do-while的循环控制条件严格 ? C. do-while允许从外部转入到循环体内 ? D. do-while的循环体不能是复合语句 答案A 解析C语言程序设计/循环程序设计/while语句与do-while语句 4. (4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( ) ? A. 1 ? B. 1 2 ? C. 1,2 ? D. 12,2 答案C 解析C语言程序设计/顺序程序设计/整型数据的格式输入 5. (4分)sizeof(float)是( ) ? A. 一个双精度型表达式 ? B. 一个整型表达式 ? C. 一种函数调用 ? D. 一个不合法的表达式 答案B 解析C语言程序设计/数据类型与运算/实型变量存储 6.

《C语言程序设计》教案设计(清华谭浩强)

第一章C语言及程序设计概述 本章要求: 了解C语言的特点、C语言与其它高级语言相比有什么异同; 了解C程序在PC机上的建立、编译和运行过程; 了解C语言程序设计思想的基本篇; 重点:①C语言的主要特点; ②C语言在PC机上的运行过程及上机操作过程; ③常用算法的应用 难点:无 一、C语言概述 C语言是目前国际上在各种计算机运行较为广泛流行的一种高级语言。 主要表现为: C语言:适合于作为系统描述语言——可用来写系统软件。 具有高级语言的特点,又有低级语言(汇编语言)的特点。 C语言:是AT&T贝尔实验室的Dennis Ritchie在1972年发明的。 C语言:是在B语言的基础上发展起来的。(ALGOL 60) C语言:最早开始是用于UNIX操作系统。(C语言和UNIX是相辅相成的) DBASE 、Microsoft Exel 、 Microsoft Word、PC-DOS等,则是用C语言加上若干汇编子程序编写的。 1983年:——制定的新标准,称为(美国国家标准化协会)ANSI C 1987年:——Turbo C1.0 (Borland) 1988年:TC 1.5(图形和文本窗口) 1989年:——Turbo C2.0 (DOS操作系统、查错、Tiny模式生成com文件) 1991年:——Turbo C++(3.0) 支持windows 3.X 说明:Turbo C语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。 二.C语言的特点 1.语言简洁、紧凑、使用方便、灵活 C语言:——共有32个关键字,9种控制语句; 程序书写自由,主要用小写字母表示; 2.运算符丰富

C语言程序设计试题及答案

C语言程序设计试题及 答案 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是() A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是() A、abc B、12AC C、sun D、 A2 3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是() A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是() A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是() A、% B、/ C、%和/ D、 + 6、以下关于运算符的优先顺序的描述正确的是() A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是() sum=pad=5;pAd=sum++,pAd++,++pAd;

printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是() A、 INPUT x、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、 scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:() void main ( ) { int m,n; scanf(“%2d%3d”,&m,&n); printf(“m=%d n=%d\n”,m,n); } A、m=23 n=45 B、m=234 n=56 C、m=23 n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是() main( ) { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、 0 B、 22 C、 12 D、10 11、C语言中while和do-while循环的主要区别()

《C语言程序设计》课程设计教学大纲

《C语言程序设计》课程设计大纲 课程中文名称:C语言程序设计课程设计 课程英文名称:C language programming curriculum design 课程编号:090010031 适用专业:计算机、网络、信管、软件学时数:2周学分数:2 课程类别:必修应开课学期:第三学期 执笔者:安葳鹏审核人:基础教学部 批准人:高岩定稿日期:2013年5月7日 一、课程的目的和意义 《C语言程序设计》课程设计是在学习《C语言程序设计》课程之后进行的一个实践教学环节,学生运用所学的知识,在教师指导下,独立进行。课程设计的目的和意义是: 1、进一步加深对所学基本理论知识的理解和掌握,完善理论和实践的衔接;进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解; 2、针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 3、掌握C语言的编程技巧和上机调试程序的方法。 4、掌握程序设计的常用算法,培养学生运用所学知识分析问题,解决问题的能力。 二、课程设计基本要求 1.独立、按时、按质、按量完成本课程设计; 2.充分理解并掌握相关理论,熟悉程序设计的控制结构以及设计流程; 3.完成课程设计后,将设计任务书、设计说明书按要求装订成册。 三、设计内容及任务 原则上,学生从以下题目中任选一题进行课程设计。在课程设计指导老师的指导下,也可以选择其他题目,但要保证工作量,并满足课程设计的相关要求。

1、人机猜数游戏 由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。 提示:用库函数random()产生一个随机数。 2、编一程序,实现将输入的一个无符号整数转换为二进制、八进制和十六进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。) 说明:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。 3、计算分数的精确值。使用数组精确计算M/N(0

linux下C语言使用编译与调试试验

实验四:LINUX 下C语言使用、编译与调试实验 一、目的: 1、练习并掌握Linux提供的vi编辑器来编译C程序 2、学会利用gcc、gdb编译、调试C程序 3、学会使用make工具 二、内容 1、编写C语言程序,用gcc编译并观察编译后的结果,运行生成的可执行文件。 2、利用gdb调试程序。 3、学习编写makefile,并进行编译。 三、操作 1、文件编辑器vi 进入vi,直接执行vi编辑程序。 例:# vitest.c 显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。 1) vi的工作模式 (1)输入模式 输入以下命令即可进入vi输入模式: a 在光标之后加入资料 A 在该行之末加入资料 i 在光标之前加入资料 I 在该行之首加入资料 o 新增一行于该行之下 O 新增一行于该行之上 (2)命令模式 在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi::q! 离开vi,并放弃刚在缓冲区内编辑的内容 :wq 将缓冲区内的资料写入磁盘中,并离开vi ZZ 同wq :x 同wq :w 将缓冲区内的资料写入磁盘中,但并不离开vi :q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用 (3)命令模式下光标的移动

h 左移一个字符 j 下移一个字符 k 上移一个字符 l 右移一个字符 0(零)移至该行的行首 $ 移至该行的行尾 ^ 移至该行的第一个字符处 H 移至窗口的第一行 M 移至窗口中间那一行 L 移至窗口的最后一行 G 移至该文件的最后一行 W, w 下一个单词(W 忽略符号) B, b 上一个单词(B 忽略符号) (4) 命令模式下的编辑命令 dd 删除当前光标所在行 yy 复制当前光标所在行 p 将复制的内容粘贴在光标所在的位置后 P 将复制的内容粘贴在光标所在的位置前 x 删除当前光标字符 X 删除当前光标之前字符 u 撤消 ·重做 2、GNU C编译器 1) 使用gcc 通常后跟一些选项和文件名来使用gcc编译器。gcc命令的基本用法如下: gcc [options] [] 命令行选项指定的编译过程中的具体操作 2) gcc常用选项 当不用任何选项编译一个程序时,gcc将建立(假定编译成功)一个名为a.out的可执行文件。 选项含义: -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE 没有指定,默认文件名是a.out. 例如,

相关主题
文本预览
相关文档 最新文档