admin 管理员组

文章数量: 887021


2023年12月24日发(作者:modify())

WORD格式可编辑

第1章程序设计和C语言1

1.1什么是计算机程序1

1.2什么是计算机语言1

1.3C语言的发展及其特点3

1.4最简单的C语言程序5

1.4.1最简单的C语言程序举例6

1.4.2C语言程序的结构10

1.5运行C程序的步骤与方法12

1.6程序设计的任务14

1-5 #include

int main ( )

{ printf ("**************************nn");

printf(" Very Good!nn");

printf ("**************************n");

return 0;

}

1-6#include

int main()

{int a,b,c,max;

printf("please input a,b,c:n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if (max

max=b;

if (max

max=c;

printf("The largest number is %dn",max);

return 0;

}

第2章算法——程序的灵魂16

2.1什么是算法16

专业知识整理分享

WORD格式可编辑

2.2简单的算法举例17

2.3算法的特性21

2.4怎样表示一个算法22

2.4.1用自然语言表示算法22

2.4.2用流程图表示算法22

2.4.3三种基本结构和改进的流程图26

2.4.4用NS流程图表示算法28

2.4.5用伪代码表示算法31

2.4.6用计算机语言表示算法32

2.5结构化程序设计方法34

习题36

第章最简单的C程序设计——顺序程序设计37

3.1顺序程序设计举例37

3.2数据的表现形式及其运算39

3.2.1常量和变量39

3.2.2数据类型42

3.2.3整型数据44

3.2.4字符型数据47

3.2.5浮点型数据49

3.2.6怎样确定常量的类型51

3.2.7运算符和表达式52

3.3C语句57

3.3.1C语句的作用和分类57

3.3.2最基本的语句——赋值语句59

3.4数据的输入输出65

3.4.1输入输出举例65

3.4.2有关数据输入输出的概念67

3.4.3用printf函数输出数据68

3.4.4用scanf函数输入数据75

3.4.5字符数据的输入输出78

习题82

3-1 #include

#include

int main()

{float p,r,n;

r=0.1;

n=10;

p=pow(1+r,n);

printf("p=%fn",p);

return 0;

}

专业知识整理分享

WORD格式可编辑

3-2-1

#include

#include

int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%fn",p1); // 输出按第1方案得到的本息和

printf("p2=%fn",p2); // 输出按第2方案得到的本息和

printf("p3=%fn",p3); // 输出按第3方案得到的本息和

printf("p4=%fn",p4); // 输出按第4方案得到的本息和

printf("p5=%fn",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-2

#include

#include

int main()

{double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

专业知识整理分享

WORD格式可编辑

p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%fn",p1); // 输出按第1方案得到的本息和

printf("p2=%fn",p2); // 输出按第2方案得到的本息和

printf("p3=%fn",p3); // 输出按第3方案得到的本息和

printf("p4=%fn",p4); // 输出按第4方案得到的本息和

printf("p5=%fn",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-3

#include

#include

int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%10.2fn",p1); // 输出按第1方案得到的本息和

printf("p2=%10.2fn",p2); // 输出按第2方案得到的本息和

printf("p3=%10.2fn",p3); // 输出按第3方案得到的本息和

printf("p4=%10.2fn",p4); // 输出按第4方案得到的本息和

printf("p5=%10.2fn",p5); // 输出按第5方案得到的本息和

return 0;

}

3-3.

#include

#include

int main()

{float d=300000,p=6000,r=0.01,m;

m=log10(p/(p-d*r))/log10(1+r);

printf("m=%6.2fn",m);

return 0;

专业知识整理分享

WORD格式可编辑

}

3-4

#include

int main()

{int c1,c2;

c1=197;

c2=198;

printf("c1=%c,c2=%cn",c1,c2);

printf("c1=%d,c2=%dn",c1,c2);

return 0;

}

3-5

#include

int main()

{int a,b;

float x,y;

char c1,c2;

scanf("a=%d b=%d",&a,&b);

scanf("%f %e",&x,&y);

scanf("%c%c",&c1,&c2);

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn",a,b,x,y,c1,c2);

return 0;

}

3-6

#include

int main()

{char c1='C',c2='h',c3='i',c4='n',c5='a';

c1=c1+4;

c2=c2+4;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("passwor is %c%c%c%c%cn",c1,c2,c3,c4,c5);

return 0;

}

专业知识整理分享

WORD格式可编辑

3-7

#include

int main ()

{float h,r,l,s,sq,vq,vz;

float pi=3.141526;

printf("请输入圆半径r,圆柱高h∶");

scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h

l=2*pi*r; //计算圆周长l

s=r*r*pi; //计算圆面积s

sq=4*pi*r*r; //计算圆球表面积sq

vq=3.0/4.0*pi*r*r*r; //计算圆球体积vq

vz=pi*r*r*h; //计算圆柱体积vz

printf("圆周长为: l=%6.2fn",l);

printf("圆面积为: s=%6.2fn",s);

printf("圆球表面积为: sq=%6.2fn",sq);

printf("圆球体积为: v=%6.2fn",vq);

printf("圆柱体积为: vz=%6.2fn",vz);

return 0;

}

3-8-1

#include

int main()

{

int c1,c2; //整型定义

printf("请输入两个整数c1,c2:");

scanf("%d,%d",&c1,&c2);

printf("按字符输出结果:n");

printf("%c,%cn",c1,c2);

printf("按ASCII码输出结果为:n");

printf("%d,%dn",c1,c2);

return 0;

}

3-8-2

#include

int main()

{

char c1,c2; //定义字符型变量

int i1,i2; //定义整型变量

printf("请输入两个字符c1,c2:");

scanf("%c,%c",&c1,&c2);

专业知识整理分享

WORD格式可编辑

i1=c1; //赋值给整型变量

i2=c2;

printf("按字符输出结果:n");

printf("%c,%cn",i1,i2);

printf("按整数输出结果:n");

printf("%d,%dn",c1,c2);

return 0;

}

3-8-3

#include

int main()

{

char c1,c2; // int i1,i2; // printf("请输入两个整数i1,i2:");

scanf("%d,%d",&i1,&i2);

c1=i1; // c2=i2;

printf("按字符输出结果:n");

printf("%c,%cn",c1,c2);

printf("按整数输出结果:n");

printf("%d,%dn",c1,c2);

return 0;

}

3-8

#include

int main()

{

char c1,c2;

printf("请输入两个字符c1,c2:");

c1=getchar();

c2=getchar();

printf("用putchar语句输出结果为:");

putchar(c1);

putchar(c2);

printf("n");

printf("用printf语句输出结果为:");

printf("%c %cn",c1,c2);

return 0;

}

第4章选择结构程序设计85

专业知识整理分享

定义为字符型

定义为整型

将整数赋值给字符变量

WORD格式可编辑

4.1选择结构和条件判断85

4.2用if语句实现选择结构87

4.2.1用if语句处理选择结构举例87

4.2.2if语句的一般形式 89

4.3关系运算符和关系表达式91

4.3.1关系运算符及其优先次序91

4.3.2关系表达式92

4.4逻辑运算符和逻辑表达式92

4.4.1逻辑运算符及其优先次序93

4.4.2逻辑表达式94

4.4.3逻辑型变量96

4.5条件运算符和条件表达式97

4.6选择结构的嵌套99

4.7用switch语句实现多分支选择结构102

4.8选择结构程序综合举例105

习题111

4-4-1

#include

int main()

{

int a,b,c;

printf("请输入三个整数:");

scanf("%d,%d,%d",&a,&b,&c);

if (a

if (b

printf("max=%dn",c);

else

printf("max=%dn",b);

else if (a

printf("max=%dn",c);

else

printf("max=%dn",a);

return 0;

}

4-4-2

#include

int main()

{ int a,b,c,temp,max;

printf("请输入三个整数:");

scanf("%d,%d,%d",&a,&b,&c);

temp=(a>b)?a:b; /*将a和b中的大者存入temp中*/

max=(temp>c)?temp:c; /*将a和b中的大者与c比较,取最大者*/

printf("三个整数的最大数是%dn",max);

专业知识整理分享

WORD格式可编辑

return 0;

}

4-5-2

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

while (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%dn",i,k);

return 0;

}

4-5

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

if (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%dn",i,k);

return 0;

}

4-6.

#include

专业知识整理分享

WORD格式可编辑

int main()

{ int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1) /* x<1 */

{ y=x;

printf("x=%3d, y=x=%dn" ,x,y);

}

else if(x<10) /* 1=

{ y=2*x-1;

printf("x=%d, y=2*x-1=%dn",x,y);

}

else /* x>=10 */

{ y=3*x-11;

printf("x=%d, y=3*x-11=%dn",x,y);

}

return 0;

}

4-7-1

#include

int main()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=0;

printf("x=%d,y=%dn",x,y);

return 0;

}

4-7-2

#include

int main()

{

int x,y;

printf("please enter x:");

专业知识整理分享

WORD格式可编辑

scanf("%d",&x);

y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

printf("x=%d,y=%dn",x,y);

return 0;

}

4-8

#include

int main()

{ float score;

char grade;

printf("请输入学生成绩:");

scanf("%f",&score);

while (score>100||score<0)

{printf("n 输入有误,请重输");

scanf("%f",&score);

}

switch((int)(score/10))

{case 10:

case 9: grade='A';break;

case 8: grade='B';break;

case 7: grade='C';break;

case 6: grade='D';break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0: grade='E';

}

printf("成绩是 %5.1f,相应的等级是%cn ",score,grade);

return 0;

}

4-9

#include

#include

int main()

{

专业知识整理分享

WORD格式可编辑

int num,indiv,ten,hundred,thousand,ten_thousand,place; //分别代表个位,十位,百位,千位,万位和位数

printf("请输入一个整数(0-99999):");

scanf("%d",&num);

if (num>9999)

place=5;

else if (num>999)

place=4;

else if (num>99)

place=3;

else if (num>9)

place=2;

else place=1;

printf("位数:%dn",place);

printf("每位数字为:");

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;

ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;

indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);

printf("n反序数字为:");

printf("%d%d%d%d%dn",indiv,ten,hundred,thousand,ten_thousand);

break;

case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("n反序数字为:");

printf("%d%d%d%dn",indiv,ten,hundred,thousand);

break;

case 3:printf("%d,%d,%d",hundred,ten,indiv);

printf("n反序数字为:");

printf("%d%d%dn",indiv,ten,hundred);

break;

case 2:printf("%d,%d",ten,indiv);

printf("n反序数字为:");

printf("%d%dn",indiv,ten);

break;

case 1:printf("%d",indiv);

printf("n反序数字为:");

printf("%dn",indiv);

break;

}

return 0;

}

专业知识整理分享

WORD格式可编辑

4-10-1

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+100000*0.05;

bon6=bon4+100000*0.03;

bon10=bon6+400000*0.015;

printf("请输入利润i:");

scanf("%d",&i);

if (i<=100000)

bonus=i*0.1;

else if (i<=200000)

bonus=bon1+(i-100000)*0.075;

else if (i<=400000)

bonus=bon2+(i-200000)*0.05;

else if (i<=600000)

bonus=bon4+(i-400000)*0.03;

else if (i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf("奖金是: %10.2fn",bonus);

return 0;

}

4-10-2

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

int branch;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

专业知识整理分享

WORD格式可编辑

printf("请输入利润i:");

scanf("%d",&i);

branch=i/100000;

if (branch>10) branch=10;

switch(branch)

{ case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break;

case 2:

case 3: bonus=bon2+(i-200000)*0.05;break;

case 4:

case 5: bonus=bon4+(i-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)*0.015;break;

case 10: bonus=bon10+(i-1000000)*0.01;

}

printf("奖金是 %10.2fn",bonus);

return 0;

}

4-11

#include

int main()

{int t,a,b,c,d;

printf("请输入四个数:");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%dn",a,b,c,d);

if (a>b)

{ t=a;a=b;b=t;}

if (a>c)

{ t=a;a=c;c=t;}

if (a>d)

{ t=a;a=d;d=t;}

if (b>c)

{ t=b;b=c;c=t;}

if (b>d)

{ t=b;b=d;d=t;}

if (c>d)

{ t=c;c=d;d=t;}

printf("排序结果如下: n");

printf("%d %d %d %d n" ,a,b,c,d);

return 0;

专业知识整理分享

WORD格式可编辑

}

4-12

#include

int main()

{

int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;

printf("请输入一个点(x,y):");

scanf("%f,%f",&x,&y);

d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); /*求该点到各中心点距离*/

d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);

d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);

d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);

if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/

printf("该点高度为 %dn",h);

return 0;

}

第5章循环结构程序设计114

5.1为什么需要循环控制114

5.2用while语句实现循环115

5.3用do…while语句实现循环117

5.4用for 语句实现循环120

5.5循环的嵌套124

5.6几种循环的比较125

5.7改变循环执行的状态125

5.7.1用break语句提前终止循环126

5.7.2用continue语句提前结束本次循环127

5.7.3break语句和continue语句的区别128

5.8循环程序举例131

习题140

5-2

#include

#include // 程序中用到数学函数fabs,应包含头文件math.n

int main()

{

int sign=1,count=0; // sign用来表示数值的符号,count用来统计循环次数

double pi=0.0,n=1.0,term=1.0; // pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值

while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方

专业知识整理分享

WORD格式可编辑

{

pi=pi+term; // 把当前项term累加到pi中

n=n+2; // n+2是下一项的分母

sign=-sign; // sign代表符号,下一项的符号与上一项符号相反

term=sign/n; // 求出下一项的值term

count++; // count累加1

}

pi=pi*4; // 多项式的和pi乘以4,才是π的近似值

printf("pi=%10.8fn",pi); // 输出π的近似值

printf("count=%dn",count); // 输出循环次数

return 0;

}

5-3

#include

int main()

{

int p,r,n,m,temp;

printf("请输入两个正整数n,m:");

scanf("%d,%d,",&n,&m);

if (n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:%dn",n);

printf("它们的最小公约数为:%dn",p/n);

return 0;

}

5-4

#include

int main()

{

char c;

int letters=0,space=0,digit=0,other=0;

专业知识整理分享

WORD格式可编辑

printf("请输入一行字符:n");

while((c=getchar())!='n')

{

if (c>='a' && c<='z' || c>='A' && c<='Z')

letters++;

else if (c==' ')

space++;

else if (c>='0' && c<='9')

digit++;

else

other++;

}

printf("字母数:%dn空格数:%dn数:%dn",letters,space,digit,other);

return 0;

}

5-5

#include

int main()

{

int a,n,i=1,sn=0,tn=0;

printf("a,n=:");

scanf("%d,%d",&a,&n);

while (i<=n)

{

tn=tn+a; /*赋值后的tn为i个 a组成数的值*/

sn=sn+tn; /*赋值后的sn为多项式前i项之和*/

a=a*10;

++i;

}

printf("a+aa+aaa+...=%dn",sn);

return 0;

}

5-6

#include

int main()

{double s=0,t=1;

int n;

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

专业知识整理分享

数字数其它字符:%dn

WORD格式可编辑

{

t=t*n;

s=s+t;

}

printf("1!+2!+...+20!=%22.15en",s);

return 0;

}

5-7

#include

int main()

{

int n1=100,n2=50,n3=10;

double k,s1=0,s2=0,s3=0;

for (k=1;k<=n1;k++) /*计算1到100的和*/

{s1=s1+k;}

for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/

{s2=s2+k*k;}

for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/

{s3=s3+1/k;}

printf("sum=%15.6fn",s1+s2+s3);

return 0;

}

5-8

#include

int main()

{

int i,j,k,n;

printf("parcissus numbers are ");

for (n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if (n==i*i*i + j*j*j + k*k*k)

printf("%d ",n);

}

printf("n");

return 0;

}

专业知识整理分享

WORD格式可编辑

5-9-1

#define M 1000 /*定义寻找范围*/

#include

int main()

{

int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

int i,a,n,s;

for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */

{n=0; /* n用来累计a的因子的个数 */

s=a; /* s用来存放尚未求出的因子之和,开始时等于a */

for (i=1;i

if (a%i==0) /* 如果i是a的因子 */

{n++; /* n加1,表示新找到一个因子 */

s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */

switch(n) /* 将找到的因子赋给k1...k9,或k10 */

{case 1:

k1=i; break; /* 找出的笫1个因子赋给k1 */

case 2:

k2=i; break; /* 找出的笫2个因子赋给k2 */

case 3:

k3=i; break; /* 找出的笫3个因子赋给k3 */

case 4:

k4=i; break; /* 找出的笫4个因子赋给k4 */

case 5:

k5=i; break; /* 找出的笫5个因子赋给k5 */

case 6:

k6=i; break; /* 找出的笫6个因子赋给k6 */

case 7:

k7=i; break; /* 找出的笫7个因子赋给k7 */

case 8:

k8=i; break; /* 找出的笫8个因子赋给k8 */

case 9:

k9=i; break; /*找出的笫9个因子赋给k9 */

case 10:

k10=i; break; /* 找出的笫10个因子赋给k10 */

}

}

if (s==0)

{

printf("%d ,Its factors are ",a);

if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */

if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */

if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输 专业知识整理分享

WORD格式可编辑

出一个因子 */

if (n>4) printf(",%d",k5); /* 以下类似 */

if (n>5) printf(",%d",k6);

if (n>6) printf(",%d",k7);

if (n>7) printf(",%d",k8);

if (n>8) printf(",%d",k9);

if (n>9) printf(",%d",k10);

printf("n");

}

}

return 0;

}

5-9-2

#include

int main()

{int m,s,i;

for (m=2;m<1000;m++)

{s=0;

for (i=1;i

if ((m%i)==0) s=s+i;

if(s==m)

{printf("%d,its factors are ",m);

for (i=1;i

if (m%i==0) printf("%d ",i);

printf("n");

}

}

return 0;

}

5-10

#include

int main()

{

int i,n=20;

double a=2,b=1,s=0,t;

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

{

s=s+a/b;

t=a,

a=a+b,

b=t;

专业知识整理分享

WORD格式可编辑

}

printf("sum=%16.10fn",s);

return 0;

}

5-11

#include

int main()

{

double sn=100,hn=sn/2;

int n;

for (n=2;n<=10;n++)

{

sn=sn+2*hn; /*第n次落地时共经过的米数*/

hn=hn/2; /*第n次反跳高度*/

}

printf("第10次落地时共经过%f米n",sn);

printf("第10次反弹%f米n",hn);

return 0;

}

5-12

#include

int main()

{

int day,x1,x2;

day=9;

x2=1;

while(day>0)

{x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/

x2=x1;

day--;

}

printf("total=%dn",x1);

return 0;

}

5-13

#include

#include

int main()

{

专业知识整理分享

WORD格式可编辑

float a,x0,x1;

printf("enter a positive number:");

scanf("%f",&a);

x0=a/2;

x1=(x0+a/x0)/2;

do

{x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)>=1e-5);

printf("The square root of %5.2f is %8.5fn",a,x1);

return 0;

}

5-14

#include

#include

int main()

{double x1,x0,f,f1;

x1=1.5;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}while(fabs(x1-x0)>=1e-5);

printf("The root of equation is %5.2fn",x1);

return 0;

}

5-15

#include

#include

int main()

{float x0,x1,x2,fx0,fx1,fx2;

do

{printf("enter x1 & x2:");

scanf("%f,%f",&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

}while(fx1*fx2>0);

do

{x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

专业知识整理分享

WORD格式可编辑

if ((fx0*fx1)<0)

{x2=x0;

fx2=fx0;

}

else

{x1=x0;

fx1=fx0;

}

}while(fabs (fx0)>=1e-5);

printf("x=%6.2fn",x0);

return 0;

}

5-16

#include

int main()

{int i,j,k;

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

{for (j=0;j<=2-i;j++)

printf(" ");

for (k=0;k<=2*i;k++)

printf("*");

printf("n");

}

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

{for (j=0;j<=i;j++)

printf(" ");

for (k=0;k<=4-2*i;k++)

printf("*");

printf("n");

}

return 0;

}

5-17

#include

int main()

{

char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/

for (i='x';i<='z';i++)

for (j='x';j<='z';j++)

if (i!=j)

for (k='x';k<='z';k++)

专业知识整理分享

WORD格式可编辑

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

if (i!='x' && k!='x' && k!='z')

printf("A--%cnB--%cnC--%cn",i,j,k);

return 0;

}

第6章利用数组处理批量数据142

6.1怎样定义和引用一维数组142

6.1.1怎样定义一维数组143

6.1.2怎样引用一维数组元素144

6.1.3一维数组的初始化145

6.1.4一维数组程序举例146

6.2怎样定义和引用二维数组148

6.2.1怎样定义二维数组149

6.2.2怎样引用二维数组的元素150

6.2.3二维数组的初始化151

6.2.4二维数组程序举例152

6.3字符数组154

6.3.1怎样定义字符数组154

6.3.2字符数组的初始化155

6.3.3怎样引用字符数组中的元素155

6.3.4字符串和字符串结束标志156

6.3.5字符数组的输入输出159

6.3.6使用字符串处理函数161

6.3.7字符数组应用举例165

习题168

6-1

#include

#include

int main()

{int i,j,n,a[101];

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

a[i]=i;

a[1]=0;

for (i=2;i

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

{if(a[i]!=0 && a[j]!=0)

if (a[j]%a[i]==0)

a[j]=0;

}

printf("n");

for (i=2,n=0;i<=100;i++)

专业知识整理分享

WORD格式可编辑

{ if(a[i]!=0)

{printf("%5d",a[i]);

n++;

}

if(n==10)

{printf("n");

n=0;

}

}

printf("n");

return 0;

}

6-2

#include

int main()

{int i,j,min,temp,a[11];

printf("enter data:n");

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

{printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("n");

printf("The orginal numbers:n");

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

printf("%5d",a[i]);

printf("n");

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

{min=i;

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

if (a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("nThe sorted numbers:n");

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

printf("%5d",a[i]);

printf("n");

return 0;

}

6-3

专业知识整理分享

WORD格式可编辑

#include

int main()

{

int a[3][3],sum=0;

int i,j;

printf("enter data:n");

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

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

scanf("%3d",&a[i][j]);

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

sum=sum+a[i][i];

printf("sum=%6dn",sum);

return 0;

}

6-4

#include

int main()

{ int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf("array a:n");

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

printf("%5d",a[i]);

printf("n");

printf("insert data:");

scanf("%d",&number);

end=a[9];

if (number>end)

a[10]=number;

else

{for (i=0;i<10;i++)

{if (a[i]>number)

{temp1=a[i];

a[i]=number;

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

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

}

break;

}

}

}

printf("Now array a:n");

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

专业知识整理分享

WORD格式可编辑

printf("%5d",a[i]);

printf("n");

return 0;

}

6-5

#include

#define N 5

int main()

{ int a[N],i,temp;

printf("enter array a:n");

for (i=0;i

scanf("%d",&a[i]);

printf("array a:n");

for (i=0;i

printf("%4d",a[i]);

for (i=0;i

{ temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf("nNow,array a:n");

for (i=0;i

printf("%4d",a[i]);

printf("n");

return 0;

}

6-6

#include

#define N 10

int main()

{ int i,j,a[N][N];

for (i=0;i

{a[i][i]=1;

a[i][0]=1;

}

for (i=2;i

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

for (i=0;i

{for (j=0;j<=i;j++)

专业知识整理分享

WORD格式可编辑

printf("%6d",a[i][j]);

printf("n");

}

printf("n");

return 0;

}

6-7

#include

int main()

{ int a[15][15],i,j,k,p,n;

p=1;

while(p==1)

{printf("enter n(n=1--15):");

scanf("%d",&n);

if ((n!=0) && (n<=15) && (n%2!=0))

p=0;

}

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

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

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

for (k=2;k<=n*n;k++)

{i=i-1;

j=j+1;

if ((i<1) && (j>n))

{i=i+2;

j=j-1;

}

else

{if (i<1) i=n;

if (j>n) j=1;

}

if (a[i][j]==0)

a[i][j]=k;

else

{i=i+2;

j=j-1;

a[i][j]=k;

}

}

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

专业知识整理分享

WORD格式可编辑

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

printf("%5d",a[i][j]);

printf("n");

}

return 0;

}

6-8

#include

#define N 4

#define M 5 /* 数组为4行5列 */

int main()

{

int i,j,k,a[N][M],max,maxj,flag;

printf("please input matrix:n");

for (i=0;i

for (j=0;j

scanf("%d",&a[i][j]);

for (i=0;i

{max=a[i][0]; /* 开始时假设a[i][0]最大 */

maxj=0; /* 将列号0赋给maxj保存 */

for (j=0;j

if (a[i][j]>max)

{max=a[i][j]; /* 将本行的最大数存放在max中 */

maxj=j; /* 将最大数所在的列号存放在maxj中 */

}

flag=1; /* 先假设是鞍点,以flag为1代表 */

for (k=0;k

if (max>a[k][maxj]) /* 将最大数和其同列元素相比 */

{flag=0; /* 如果max不是同列最小,表示不是鞍点令flag1为0 */

continue;}

if(flag) /* 如果flag1为1表示是鞍点 */

{printf("a[%d][%d]=%dn",i,maxj,max); /* 输出鞍点的值和所在行列号 */

break;

}

}

if(!flag) /* 如果flag为0表示鞍点不存在 */

printf("It is not exist!n");

return 0;

}

专业知识整理分享

WORD格式可编辑

6-9

#include

#define N 15

int main()

{ int i,number,top,bott,mid,loca,a[N],flag=1,sign;

char c;

printf("enter data:n");

scanf("%d",&a[0]);

i=1;

while(i

{scanf("%d",&a[i]);

if (a[i]>=a[i-1])

i++;

else

printf("enter this data again:n");

}

printf("n");

for (i=0;i

printf("%5d",a[i]);

printf("n");

while(flag)

{printf("input number to look for:");

scanf("%d",&number);

sign=0;

top=0; //top是查找区间的起始位置

bott=N-1; //bott是查找区间的最末位置

if ((numbera[N-1])) //要查的数不在查找区间内

loca=-1; // 表示找不到

while ((!sign) && (top<=bott))

{mid=(bott+top)/2;

if (number==a[mid])

{loca=mid;

printf("Has found %d, its position is %dn",number,loca+1);

sign=1;

}

else if (number

bott=mid-1;

else

top=mid+1;

}

if(!sign||loca==-1)

printf("cannot find %d.n",number);;

printf("continu or not(Y/N)?");

专业知识整理分享

WORD格式可编辑

scanf(" %c",&c);

if (c=='N'||c=='n')

flag=0;

}

return 0;

}

6-10

#include

int main()

{int i,j,upp,low,dig,spa,oth;

char text[3][80];

upp=low=dig=spa=oth=0;

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

{ printf("please input line %d:n",i+1);

gets(text[i]);

for (j=0;j<80 && text[i][j]!='0';j++)

{if (text[i][j]>='A'&& text[i][j]<='Z')

upp++;

else if (text[i][j]>='a' && text[i][j]<='z')

low++;

else if (text[i][j]>='0' && text[i][j]<='9')

dig++;

else if (text[i][j]==' ')

spa++;

else

oth++;

}

}

printf("nupper case: %dn",upp);

printf("lower case: %dn",low);

printf("digit : %dn",dig);

printf("space : %dn",spa);

printf("other : %dn",oth);

return 0;

}

6-11

#include

int main()

{ char a[5]={'*','*','*','*','*'};

int i,j,k;

专业知识整理分享

WORD格式可编辑

char space=' ';

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

{ printf("n");

printf(" ");

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

printf("%c",space);

for (k=0;k<5;k++)

printf("%c",a[k]);

}

printf("n");

return 0;

}

6-12a-c

#include

int main()

{ int j,n;

char ch[80],tran[80];

printf("input cipher code:");

gets(ch);

printf("ncipher code :%s",ch);

j=0;

while (ch[j]!='0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

tran[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z'))

tran[j]=219-ch[j];

else

tran[j]=ch[j];

j++;

}

n=j;

printf("noriginal text:");

for (j=0;j

putchar(tran[j]);

printf("n");

return 0;

}

6-12b

#include

int main()

专业知识整理分享

WORD格式可编辑

{int j,n;

char ch[80];

printf("input cipher code:n");

gets(ch);

printf("ncipher code:%sn",ch);

j=0;

while (ch[j]!='0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

ch[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z'))

ch[j]=219-ch[j];

else

ch[j]=ch[j];

j++;

}

n=j;

printf("original text:");

for (j=0;j

putchar(ch[j]);

printf("n");

return 0;

}

6-13

#include

int main()

{ char s1[80],s2[40];

int i=0,j=0;

printf("input string1:");

scanf("%s",s1);

printf("input string2:");

scanf("%s",s2);

while (s1[i]!='0')

i++;

while(s2[j]!='0')

s1[i++]=s2[j++];

s1[i]='0';

printf("nThe new string is:%sn",s1);

return 0;

}

专业知识整理分享

WORD格式可编辑

6-14

#include

int main()

{ int i,resu;

char s1[100],s2[100];

printf("input string1:");

gets(s1);

printf("ninput string2:");

gets(s2);

i=0;

while ((s1[i]==s2[i]) && (s1[i]!='0'))i++;

if (s1[i]=='0' && s2[i]=='0')

resu=0;

else

resu=s1[i]-s2[i];

printf("nresult:%d.n",resu);

return 0;

}

6-15

#include

#include

int main()

{ char s1[80],s2[80];

int i;

printf("input s2:");

scanf("%s",s2);

for (i=0;i<=strlen(s2);i++)

s1[i]=s2[i];

printf("s1:%sn",s1);

return 0;

}

第7章用函数实现模块化程序设计170

7.1为什么要用函数170

7.2怎样定义函数172

7.2.1为什么要定义函数172

7.2.2定义函数的方法173

7.3调用函数174

7.3.1函数调用的形式174

7.3.2函数调用时的数据传递175

7.3.3函数调用的过程177

专业知识整理分享

WORD格式可编辑

7.3.4函数的返回值178

7.4对被调用函数的声明和函数原型179

7.5函数的嵌套调用182

7.6函数的递归调用184

7.7数组作为函数参数192

7.7.1数组元素作函数实参193

7.7.2数组名作函数参数194

7.7.3多维数组名作函数参数197

7.8局部变量和全局变量199

7.8.1局部变量199

7.8.2全局变量200

7.9变量的存储方式和生存期204

7.9.1动态存储方式与静态存储方式204

7.9.2局部变量的存储类别205

7.9.3全局变量的存储类别208

7.9.4存储类别小结212

7.10关于变量的声明和定义214

7.11内部函数和外部函数215

7.11.1内部函数215

7.11.2外部函数215

习题218

7-1-1

#include

int main()

{int hcf(int,int);

int lcd(int,int,int);

int u,v,h,l;

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("H.C.F=%dn",h);

l=lcd(u,v,h);

printf("L.C.D=%dn",l);

return 0;

}

int hcf(int u,int v)

{int t,r;

if (v>u)

{t=u;u=v;v=t;}

while ((r=u%v)!=0)

{u=v;

v=r;}

return(v);

}

专业知识整理分享

WORD格式可编辑

int lcd(int u,int v,int h)

{

return(u*v/h);

}

7-1-2

#include

int Hcf,Lcd;

int main()

{void hcf(int,int);

void lcd(int,int);

int u,v;

scanf("%d,%d",&u,&v);

hcf(u,v);

lcd(u,v);

printf("H.C.F=%dn",Hcf);

printf("L.C.D=%dn",Lcd);

return 0;

}

void hcf(int u,int v)

{int t,r;

if (v>u)

{t=u;u=v;v=t;}

while ((r=u%v)!=0)

{u=v;

v=r;

}

Hcf=v;

}

void lcd(int u,int v)

{

Lcd=u*v/Hcf;

}

7-2

#include

#include

float x1,x2,disc,p,q;

int main()

专业知识整理分享

WORD格式可编辑

{void greater_than_zero(float,float);

void equal_to_zero(float,float);

void smaller_than_zero(float,float);

float a,b,c;

printf("input a,b,c:");

scanf("%f,%f,%f",&a,&b,&c);

printf("equation: %5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c);

disc=b*b-4*a*c;

printf("root:n");

if (disc>0)

{

greater_than_zero(a,b);

printf("x1=%fttx2=%fn",x1,x2);

}

else if (disc==0)

{equal_to_zero(a,b);

printf("x1=%fttx2=%fn",x1,x2);

}

else

{smaller_than_zero(a,b);

printf("x1=%f+%fitx2=%f-%fin",p,q,p,q);

}

return 0;

}

void greater_than_zero(float a,float b)

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

void equal_to_zero(float a,float b)

{

x1=x2=(-b)/(2*a);

}

void smaller_than_zero(float a,float b)

{

p=-b/(2*a);

q=sqrt(-disc)/(2*a);

}

7-3

专业知识整理分享

WORD格式可编辑

#include

int main()

{int prime(int);

int n;

printf("input an integer:");

scanf("%d",&n);

if (prime(n))

printf("%d is a prime.n",n);

else

printf("%d is not a prime.n",n);

return 0;

}

int prime(int n)

{int flag=1,i;

for (i=2;i

if (n%i==0)

flag=0;

return(flag);

}

7-4

#include

#define N 3

int array[N][N];

int main()

{ void convert(int array[][3]);

int i,j;

printf("input array:n");

for (i=0;i

for (j=0;j

scanf("%d",&array[i][j]);

printf("noriginal array :n");

for (i=0;i

{for (j=0;j

printf("%5d",array[i][j]);

printf("n");

}

convert(array);

printf("convert array:n");

for (i=0;i

{for (j=0;j

专业知识整理分享

WORD格式可编辑

printf("%5d",array[i][j]);

printf("n");

}

return 0;

}

void convert(int array[][3])

{int i,j,t;

for (i=0;i

for (j=i+1;j

{t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

#include

#include

int main()

{void inverse(char str[]);

char str[100];

printf("input string:");

scanf("%s",str);

inverse(str);

printf("inverse string:%sn",str);

return 0;

}

void inverse(char str[])

{char t;

int i,j;

for (i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)

{t=str[i];

str[i]=str[j-1];

str[j-1]=t;

}

}

7-6

#include

专业知识整理分享

WORD格式可编辑

int main()

{void concatenate(char string1[],char string2[],char string[]);

char s1[100],s2[100],s[100];

printf("input string1:");

scanf("%s",s1);

printf("input string2:");

scanf("%s",s2);

concatenate(s1,s2,s);

printf("nThe new string is %sn",s);

return 0;

}

void concatenate(char string1[],char string2[],char string[])

{int i,j;

for (i=0;string1[i]!='0';i++)

string[i]=string1[i];

for(j=0;string2[j]!='0';j++)

string[i+j]=string2[j];

string[i+j]='0';

}

7-7

#include

int main()

{void cpy(char [],char []);

char str[80],c[80];

printf("input string:");

gets(str);

cpy(str,c);

printf("The vowel letters are:%sn",c);

return 0;

}

void cpy(char s[],char c[])

{ int i,j;

for (i=0,j=0;s[i]!='0';i++)

if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||

s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')

{c[j]=s[i];

j++;

}

c[j]='0';

}

专业知识整理分享

WORD格式可编辑

7-8

#include

#include

int main()

{char str[80];

void insert(char []);

printf("input four digits:");

scanf("%s",str);

insert(str);

return 0;

}

void insert(char str[])

{int i;

for (i=strlen(str);i>0;i--)

{str[2*i]=str[i];

str[2*i-1]=' ';

}

printf("output:n%sn",str);

}

7-9

#include

int letter,digit,space,others;

int main()

{void count(char []);

char text[80];

printf("input string:n");

gets(text);

printf("string:");

puts(text);

letter=0;

digit=0;

space=0;

others=0;

count(text);

printf("nletter:%dndigit:%dnspace:%dnothers:%dn",letter,digit,space,others);

return 0;

}

专业知识整理分享

WORD格式可编辑

void count(char str[])

{int i;

for (i=0;str[i]!='0';i++)

if ((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z'))

letter++;

else if (str[i]>='0' && str [i]<='9')

digit++;

else if (str[i]==32)

space++;

else

others++;

}

7-10

#include

#include

int main()

{int alphabetic(char);

int longest(char []);

int i;

char line[100];

printf("input one line:n");

gets(line);

printf("The longest word is :");

for (i=longest(line);alphabetic(line[i]);i++)

printf("%c",line[i]);

printf("n");

return 0;

}

int alphabetic(char c)

{if ((c>='a' && c<='z')||(c>='A'&&c<='z'))

return(1);

else

return(0);

}

int longest(char string[])

{int len=0,i,length=0,flag=1,place=0,point;

for (i=0;i<=strlen(string);i++)

if (alphabetic(string[i]))

if (flag)

{point=i;

flag=0;

专业知识整理分享

WORD格式可编辑

}

else

len++;

else

{flag=1;

if (len>=length)

{length=len;

place=point;

len=0;

}

}

return(place);

}

7-11

#include

#include

#define N 10

char str[N];

int main()

{void sort(char []);

int i,flag;

for (flag=1;flag==1;)

{printf("input string:n");

scanf("%s",&str);

if (strlen(str)>N)

printf("string too long,input again!");

else

flag=0;

}

sort(str);

printf("string sorted:n");

for (i=0;i

printf("%c",str[i]);

printf("n");

return 0;

}

void sort(char str[])

{int i,j;

char t;

for(j=1;j

for (i=0;(i

专业知识整理分享

WORD格式可编辑

if(str[i]>str[i+1])

{t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

7-12

#include

#include

int main()

{float solut(float a,float b,float c,float d);

float a,b,c,d;

printf("input a,b,c,d:");

scanf("%f,%f,%f,%f",&a,&b,&c,&d);

printf("x=%10.7fn",solut(a,b,c,d));

return 0;

}

float solut(float a,float b,float c,float d)

{float x=1,x0,f,f1;

do

{x0=x;

f=((a*x0+b)*x0+c)*x0+d;

f1=(3*a*x0+2*b)*x0+c;

x=x0-f/f1;

}

while(fabs(x-x0)>=1e-3);

return(x);

}

7-13

#include

#define N 10

#define M 5

float score[N][M];

float a_stu[N],a_cour[M];

int r,c;

int main()

{ int i,j;

float h;

专业知识整理分享

WORD格式可编辑

float s_var(void);

float highest();

void input_stu(void);

void aver_stu(void);

void aver_cour(void);

input_stu();

aver_stu();

aver_cour();

printf("n NO. cour1 cour2 cour3 cour4 cour5 avern");

for(i=0;i

{printf("n NO %2d ",i+1);

for(j=0;j

printf("%8.2f",score[i][j]);

printf("%8.2fn",a_stu[i]);

}

printf("naverage:");

for (j=0;j

printf("%8.2f",a_cour[j]);

printf("n");

h=highest();

printf("highest:%7.2f NO. %2d course %2dn",h,r,c);

printf("variance %8.2fn",s_var());

return 0;

}

void input_stu(void)

{int i,j;

for (i=0;i

{printf("ninput score of student%2d:n",i+1);

for (j=0;j

scanf("%f",&score[i][j]);

}

}

void aver_stu(void)

{int i,j;

float s;

for (i=0;i

{for (j=0,s=0;j

s+=score[i][j];

a_stu[i]=s/5.0;

}

}

专业知识整理分享

WORD格式可编辑

void aver_cour(void)

{int i,j;

float s;

for (j=0;j

{s=0;

for (i=0;i

s+=score[i][j];

a_cour[j]=s/(float)N;

}

}

float highest()

{float high;

int i,j;

high=score[0][0];

for (i=0;i

for (j=0;j

if (score[i][j]>high)

{high=score[i][j];

r=i+1;

c=j+1;

}

return(high);

}

float s_var(void)

{int i;

float sumx,sumxn;

sumx=0.0;

sumxn=0.0;

for (i=0;i

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i];

}

return(sumx/N-(sumxn/N)*(sumxn/N));

}

7-*14

#include

#define N 10

#define M 5

专业知识整理分享

WORD格式可编辑

float score[N][M];

float a_stu[N],a_cour[M];

int r,c;

int main()

{ int i,j;

float h;

float s_var(void);

float highest();

void input_stu(void);

void aver_stu(void);

void aver_cour(void);

input_stu();

aver_stu();

aver_cour();

printf("n NO. cour1 cour2 cour3 cour4 cour5 avern");

for(i=0;i

{printf("n NO %2d ",i+1);

for(j=0;j

printf("%8.2f",score[i][j]);

printf("%8.2fn",a_stu[i]);

}

printf("naverage:");

for (j=0;j

printf("%8.2f",a_cour[j]);

printf("n");

h=highest();

printf("highest:%7.2f NO. %2d course %2dn",h,r,c);

printf("variance %8.2fn",s_var());

return 0;

}

void input_stu(void)

{int i,j;

for (i=0;i

{printf("ninput score of student%2d:n",i+1);

for (j=0;j

scanf("%f",&score[i][j]);

}

}

void aver_stu(void)

{int i,j;

专业知识整理分享

WORD格式可编辑

float s;

for (i=0;i

{for (j=0,s=0;j

s+=score[i][j];

a_stu[i]=s/5.0;

}

}

void aver_cour(void)

{int i,j;

float s;

for (j=0;j

{s=0;

for (i=0;i

s+=score[i][j];

a_cour[j]=s/(float)N;

}

}

float highest()

{float high;

int i,j;

high=score[0][0];

for (i=0;i

for (j=0;j

if (score[i][j]>high)

{high=score[i][j];

r=i+1;

c=j+1;

}

return(high);

}

float s_var(void)

{int i;

float sumx,sumxn;

sumx=0.0;

sumxn=0.0;

for (i=0;i

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i];

}

return(sumx/N-(sumxn/N)*(sumxn/N));

}

专业知识整理分享

WORD格式可编辑

7-15

#include

#include

#define N 10

int main()

{void input(int [],char name[][8]);

void sort(int [],char name[][8]);

void search(int ,int [],char name[][8]);

int num[N],number,flag=1,c;

char name[N][8];

input(num,name);

sort(num,name);

while (flag==1)

{printf("ninput number to look for:");

scanf("%d",&number);

search(number,num,name);

printf("continue ot not(Y/N)?");

getchar();

c=getchar();

if (c=='N'||c=='n')

flag=0;

}

return 0;

}

void input(int num[],char name[N][8])

{int i;

for (i=0;i

{printf("input NO.: ");

scanf("%d",&num[i]);

printf("input name: ");

getchar();

gets(name[i]);

}

}

void sort(int num[],char name[N][8])

{ int i,j,min,templ;

char temp2[8];

for (i=0;i

{min=i;

for (j=i;j

if (num[min]>num[j]) min=j;

专业知识整理分享


本文标签: 数组 输入 因子 函数