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.11 0 1
10.10 200
11.yes
12.X==0
13.x=1 y=0
x=2
14. ch>=’A’&& c<=’Z’ ch=ch-32
15.-1
16.01
习题5
5-1单选题
1~5CDABA ﻩ6~10ABDDBﻩ11~15DBCBC16-21 DBCBCD
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~5CBBADﻩ6~10DBCCDﻩ11~15DCABC 16~20ABBBC
21~25CCBAA 26~30ABBDB 31~35BDADD 36~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.0 101 112 12
13.4 334
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~15 CADAC ﻩ6~10CCDABﻩ11~15 CBBCD 16~20CAABA
21~25DACDA 26~30BDCAD 31~35ADACD 36~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~5DDACB 6~10ACBAD11~15CDBCC
16~20DADAC21~25ACDAC26~30DDDAA
31~33 ABC
9-2填空题
1.2,1
2.10#30#
3.FOUR,O
4. 60
5. 49
6.2
7.2
8. 7 5 31 9
9.15
10.
11.
12.(1) *x
(2) t
13.
(1)'\0'或0
(2)n++或n+=1或n=n+1
14. 024
习题10
10-1单选题
1-5 CDBBB 6-10 BBBADﻩ11-15 CCBDA 16-20BDCBB
21-25CDDCD 26-30CADBB
10-2填空题
1.所有结构体成员所占存储空间的总和
2.与占用存储空间最大的那个成员相等
3.
(1) 结构体
(2)3 (3) sa.a (4)9 (5)psa=&sa
4. 80
5. struct node
6. 0
7. 23
8.22
9.10,x
10. 2,3
习题11
11-1单选题
1-6BADDAA
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.2 46
习题12
12-1单选题
1-5 BCDCA ﻩ6-10 ADABC 11-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-5BCDCA6-8ADA
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) ;
ﻩ elseﻩb=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()
{ int i,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("Pleaseinputthe numberofballtook:
");
scanf("%d",&n);
printf("whitered yellow\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);
}
int led(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(int x,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,int y,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"
void lsum(intn);
voidrsum(intn);
void lsumc(intn);
voidrsumc(int n);
main()
{lsum(10000);
rsum(10000);
lsumc(10000);
rsumc(10000);
}
voidlsum(intn)
{inti,k=1;
double sum=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(int n)
{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);
}
void rsumc(intn)
{int i; 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"
int monkey(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"
void view1();
voidview2();
main()
{
intop;
printf("\n************************************\n");
printf(" Menu section \n");
printf("1.view(@) \n");
printf(" 2.view($) \n");
printf(" 3.exit \n");
printf("************************************\n");
printf("\nPleaseinput selection:
\n");
while(1)
{
scanf("%d",&op);
if(op==1)
{view1();
printf("\nPleaseinputselection:
");
}
elseif(op==2)
ﻩ { view2();
ﻩ printf("\nPleaseinputselection:
");
}
ﻩelse return;
}
}
voidview1()
{ inti;
for(i=1;i<15;i++)
putchar('@');
return;
}
void view2()
{inti,j;
for(i=1;i<5;i++)
{ for(j=1;j<i;j++)
ﻩputchar(' ');
for(j=1;j<10;j++)
putchar('$');
printf("\n");
}
return;}
实验6数组
(1)略
(2)略
(3)设有含10个元素的一维整型数组,其中偶数和奇数各占一半,将该数组变换为2⨯5的二维数组,且偶数和奇数各成一行。
#include"stdio.h"
main()
{ inta[10],b[2][5],i,j=0,k=0;
printf("Pleaseinput the arraya:
\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"
#define M 3
#defineN 4
main()
{inta[M][N],i,j,k;
printf("Pleaseinputthearraya:
\n");
for(i=0;i<M;i++)
for(j=0;j scanf("%d",&a[i][j]);
for(i=0;i{k=0;
for(j=1;j<N;j++)
if(a[i][j]>a[i][k])ﻩk=j;
for(j=0;j<M;j++)
if(a[j][k]<a[i][k])break;
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("Please input numberof person:
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<n-1)
ﻩ{while(i<n)
ﻩ{if(*