3.
(1)0
(2)1(3)1(4)0(5)1
4.(max=a>b?
a:
b)>c?
max:
c
5.-4
6.1
7.5,0,3
8.
(1)(a==0)
(2)(b==0)(3)(disc<0)
9.1101
10.10200
11.yes
12.X==0
13.x=1y=0
x=2
14.ch>=’A’&&c<=’Z’ch=ch-32
15.-1
16.01
习题5
5-1单选题
1~5CDABA6~10ABDDB11~15DBCBC16-21DBCBCD
5-2填空题
1.20
2.333
3.
(1)i<10
(2)j%3!
=0
4.
(1)flag*(float)k/(k+1)
(2)flag=-flag
5.
(1)max=x
(2)x!
=-1(3)scanf("%d",&x)
6.0
7.22
8.t*10
习题6
6-1单选题
1~5CBBAD6~10DBCCD11~15DCABC16~20ABBBC
21~25CCBAA26~30ABBDB31~35BDADD36~40ADCAA
41~43BBB
6.2填空题
1. 120
2. x
3. 3,2,2,3
4.fac/i
5. 8,17
6. 9
7. 1.0/(i*i)
8. fun-in:
30,20,10
fun-end:
1015,35,1050
10,20,30
9. 012345
10.93636
11.–f
12.010111212
13.4334
14.x
15.voidfun(doubleb[])
16.
(1)j
(2)str[j-1
17.A+B=9
18.246
19.1:
a=1,b=1
2:
a=1,b=2
20.x=9
x=10
21.9
22.777
习题7
7-1单选题
1-5 DBCCB6-8BDCAD
7-2填空题
1. c
2. 60
3. 1000 10
4. 16
5.81
6.100,144
习题8
8-1单选题
1~15CADAC6~10CCDAB11~15CBBCD16~20CAABA
21~25DACDA26~30BDCAD31~35ADACD36~37AC
10000
01000
00100
00010
00001
8-2填空题
1
(1)2345
(2)10010(3)QuickC(4)
2.
(1)j+=2
(2)a[i]>a[j]
3.
(1)r+b[k]
(2)*x
4.13715
5.&a[i]
a[i]或*(a+i)
6.m-1,n-1
7.
(1)i<10
(2)a[i]-a[i-1]
(3)i%3==0
8.
(1)a[i][j]+b[i][j]
(2)printf(“\n”)
9.0
习题9
9-1单选题
1~5DDACB6~10ACBAD11~15CDBCC
16~20DADAC21~25ACDAC26~30DDDAA
31~33ABC
9-2填空题
1.2,1
2.10#30#
3.FOUR,O
4.60
5.49
6.2
7.2
8.75319
9.15
1,1,1,1,1
3,3,3,3,3
10.
10001
01010
00100
01010
10001
11.
12.
(1)*x
(2)t
13.
(1)'\0'或0
(2)n++或n+=1或n=n+1
14.024
习题10
10-1单选题
1-5 CDBBB6-10 BBBAD11-15 CCBDA16-20BDCBB
21-25CDDCD26-30CADBB
10-2填空题
1. 所有结构体成员所占存储空间的总和
2. 与占用存储空间最大的那个成员相等
3.
(1)结构体
(2)3 (3)sa.a (4)9 (5)psa=&sa
4. 80
5. structnode
6. 0
7.23
8.22
9.10,x
10.2,3
习题11
11-1单选题
1-6 BADDAA
11-2填空题
1. 3d3d330
2.
(1)28
(2)20 (3)0 (4)-9
3.
(1)251
(2)42 (3)209 (4)–295 (5)848
4.246
习题12
12-1单选题
1-5 BCDCA 6-10 ADABC11-14BDDA
12-2填空题
1. rewind(文件指针)
2. "d1.dat","rb"
3. stdin
4. 文本文件 二进制文件
5.
(1)"w"
(2)str[i]-32 (3)"r"
6. fopen
7. Hell
8.
(1)"r"
(2)fgetc(fp) (3)time++
9.文本文件二进制文件
10.非零值0
习题12
12-1单选题
1-5 BCDCA 6-8 ADA
12-2填空题
1. rewind(文件指针)
2. "d1.dat","rb"
3. stdin
4. 文本文件 二进制文件
5.
(1)"w"
(2)str[i]-32 (3)"r"
6. fopen
7. Hell
8.
(1)"r"
(2)fgetc(fp) (3)time++
实验篇
实验1熟悉VisualC++6.0可视化集成开发环境
略
实验2顺序结构程序设计
略
实验3选择结构程序设计
(1)略
(2)略
(3)#include"stdio.h"
main()
{
floata,b;
printf("Pleaseinputthedataaandb:
\n");
scanf("%f%f",&a,&b);
if(a>10.0)
a=a-10.0;
else
{a=a+10.0;
if(b>a);
elseb=a-b;
}
printf("a=%f,b=%f\n",a,b);
}
实验4循环结构程序设计
(1)略
(2)略
(3)编写一个程序,打印输出半径为1~10的圆的面积,若面积为40~90则予以打印,否则,不予打印。
#include"stdio.h"
main()
{floatr=0,area=0;
while(r<10&&area<90)
{if(area>40)
printf("r=%f,area=%f\n",r,area);
r=r+1;
area=3.1415926*r*r;
}
}
(4)从键盘输入一批整数,统计其中不大于100的非负数数值的个数。
(用while循环实现。
)
#include"stdio.h"
main()
{intx,i=0;
scanf("%d",&x);
while(x>=0)
{if(x<=100)
i++;
scanf("%d",&x);
}
printf("thenumberis:
%d\n",i);
}
(5)用/4=1-1/4+1/5-1/7+1/9-…公式求的近似值,直到最后一项的绝对值小于10-4为止。
#include"math.h"
main()
{doublek=1.0,n=1.0,pi=0,t=1.0;
while(fabs(t)>=1e-4)
{pi=pi+t;
n=n+2.0;
k=-k;
t=k/n;
}
pi=pi*4;
printf("pi=%lf\n",pi);
}
(6)解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,只剩一个桃子了。
求第一天猴子共摘了多少个桃子。
#include
main()
{inti,m,n;
for(n=1,i=1;i<10;i++)
{m=2*n+2;
n=m;}
printf("total=%d\n",m);
}
(7)取彩球问题。
现有12个彩球——3个白球、3个红球、6个黑球,从中任意取n(2≤n≤12)个球,求所有不同的取法。
#include"stdio.h"
main()
{
intn,white,red,yellow,count=0;
printf("Pleaseinputthenumberofballtook:
");
scanf("%d",&n);
printf("whiteredyellow\n");
for(white=0;white<=3;white++)
for(red=0;red<=3;red++)
{yellow=n-white-red;
if(yellow>=0&&yellow<=6)
{printf("%6d%6d%6d\n",white,red,yellow);
count++;}
}
printf("Total:
%d\n",count);
}
实验5函数
(1)略
(2)略
(3)求两个整数的最大公约数和最小公倍数,要求:
用一个函数求最大公约数,用另一个函数求最小公倍数,分别采用用全局变量和不用全局变量两种方法做。
●使用全局变量:
#include"stdio.h"
intx,y;
inthef()
{intu=x,v=y,a,b;
if(u>v)
{a=u;u=v;v=a;}
while((b=u%v)!
=0)
{u=v;v=b;}
return(v);
}
intled(intx,inty,inth)
{return(x*y/h);}
main()
{
inth,l;
scanf("%d%d",&x,&y);
h=hef(x,y);
printf("HCF=%d\n",h);
l=led(x,y,h);
printf("LCD=%d\n",l);
}
●不用全局变量:
#include"stdio.h"
inthef(intx,inty)
{
inta,b;
if(y>x)
{a=x;x=y;y=a;}
while((b=x%y)!
=0)
{x=y;y=b;}
return(y);
}
intled(intx,inty,inth)
{return(x*y/h);}
main()
{intx,y,h,l;
scanf("%d%d",&x,&y);
h=hef(x,y);
printf("HCF=%d\n",h);
l=led(x,y,h);
printf("LCD=%d\n",l);
}
(4)计算s=1/1-1/2+1/3-…+1/9999-1/10000,分别采用下列各种方法,每种方法单独用一个函数实现,最后加以比较:
①从左到右各项相加;
②从右到左各项相加;
③从左到右各个正项和负项分别相加;
④从右到左各个正项和负项分别相加。
#include"stdio.h"
voidlsum(intn);
voidrsum(intn);
voidlsumc(intn);
voidrsumc(intn);
main()
{lsum(10000);
rsum(10000);
lsumc(10000);
rsumc(10000);
}
voidlsum(intn)
{inti,k=1;
doublesum=0,t;
for(i=1;i<=n;i++)
{t=1.0*k/i;
sum+=t;
k=-k;
}
printf("thelsumis:
%lf\n",sum);
}
voidrsum(intn)
{inti,k=-1;
doublesum=0,t;
for(i=n;i>=1;i--)
{t=1.0*k/i;
sum+=t;
k=-k;
}
printf("thersumis:
%lf\n",sum);
}
voidlsumc(intn)
{inti;doublesum=0;
for(i=1;i<=n-1;i++,i++)
sum+=1.0/i;
for(i=2;i<=n;i++,i++)
sum-=1.0/i;
printf("thelsumcis:
%lf\n",sum);
}
voidrsumc(intn)
{inti;doublesum=0;
for(i=n;i>=2;i--,i--)
sum-=1.0/i;
for(i=n-1;i>=1;i--,i--)
sum+=1.0/i;
printf("thersumcis:
%lf\n",sum);
}
(5)猴子吃桃问题的函数化。
把猴子吃桃问题写成一个函数,使它能够求得指定一天开始时的桃子数。
#include"stdio.h"
intmonkey(intk)
{inti,m,n;
for(n=1,i=1;i<=10-k;i++)
{m=2*n+2;
n=m;}
return(n);
}
main()
{intday;
printf("Pleaseinputtheday(1<=day<=10):
\n");
scanf("%d",&day);
printf("day:
%d,total:
%d",day,monkey(day));}
(6)菜单程序。
编写一个菜单程序,运行后首先在屏幕显示如图所示的菜单,当输入数值1时,调用显示“@”图案的函数;当输入数值2时,调用显示“$”图案的函数;当输入数值3时,程序结束。
#include"stdio.h"
voidview1();
voidview2();
main()
{
intop;
printf("\n************************************\n");
printf("Menusection\n");
printf("1.view(@)\n");
printf("2.view($)\n");
printf("3.exit\n");
printf("************************************\n");
printf("\nPleaseinputselection:
\n");
while
(1)
{
scanf("%d",&op);
if(op==1)
{view1();
printf("\nPleaseinputselection:
");
}
elseif(op==2)
{view2();
printf("\nPleaseinputselection:
");
}
elsereturn;
}
}
voidview1()
{inti;
for(i=1;i<15;i++)
putchar('@');
return;
}
voidview2()
{inti,j;
for(i=1;i<5;i++)
{for(j=1;j
putchar('');
for(j=1;j<10;j++)
putchar('$');
printf("\n");
}
return;}
实验6数组
(1)略
(2)略
(3)设有含10个元素的一维整型数组,其中偶数和奇数各占一半,将该数组变换为25的二维数组,且偶数和奇数各成一行。
#include"stdio.h"
main()
{inta[10],b[2][5],i,j=0,k=0;
printf("Pleaseinputthearraya:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{if(a[i]%2==0)
{b[0][j]=a[i];
j++;}
else
{b[1][k]=a[i];
k++;}
}
for(j=0;j<=1;j++)
for(k=0;k<=4;k++)
printf("b[%d][%d]=%d",j,k,b[j][k]);
}
(4)找出一个二维数组的鞍点,即该位置上的元素在所在行上最大,在所在列上最小,注意也可能没有鞍点。
#include"stdio.h"
#defineM3
#defineN4
main()
{inta[M][N],i,j,k;
printf("Pleaseinputthearraya:
\n");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{k=0;
for(j=1;jif(a[i][j]>a[i][k])k=j;
for(j=0;jif(a[j][k]if(j==M)
printf("%d%d,%d\n",a[i][k],i,k);
}
}
(5)有n个人围成一圈,顺序编号。
从第1个人开始报数(从1到m),凡报到m的人退出圈子,求最后一个圈中的人的编号。
#include"stdio.h"
main()
{inti=0;intk=0;
intquit_num=0;
intn;//总人数
intm;//报数的最大数
intnum[100];//保存所有人的编号
int*p=num;//初始化指针,使其指向num数组
printf("Pleaseinputnumberofperson:
n=");
scanf("%d",&n);
printf("Pleaseinputthenumberm=");
scanf("%d",&m);
/*给所有的人编号为1到n*/
for(i=0;i{*(p+i)=i+1;}
i=0;
/*当未退出人数大于1时执行循环*/
while(quit_num{while(i{if(*(p+i)==0)
{k++;
if(k==m){*(p+i)=0;quit_num++;k=0;}
}
i++;
}
i=0;
}
while(*p==0)p++;//查找留在圈中的人
printf("Thelastone’snumberis:
%d\n",*p);
}
实验7指针
(1)略
(2)略
(3)用指针作函数参数求4个整数中的最大者。
#include"stdio.h"
voidmax(int*,int*);
main()
{inta,b,c,d,*pa,*pb,*pc,*pd;
pa=&a;pb=&