c语言程序设计向艳书上例题源代码.docx
《c语言程序设计向艳书上例题源代码.docx》由会员分享,可在线阅读,更多相关《c语言程序设计向艳书上例题源代码.docx(43页珍藏版)》请在冰豆网上搜索。
![c语言程序设计向艳书上例题源代码.docx](https://file1.bdocx.com/fileroot1/2023-1/21/f34b3943-c313-42c8-9b81-978e92e223f1/f34b3943-c313-42c8-9b81-978e92e223f11.gif)
c语言程序设计向艳书上例题源代码
第五章函数
1.定义一个求两个整数和的函数
intsum(x,y)
intx,y;
{
intz;
z=x+y;
return(z);
}
2.编写函数求两个数的最大值
#include
floatmax(floatx,floaty)
{
floatz;
if(x>y)z=x;
elsez=y;
return(z);
}
voidmain()
{
floata,b,c;
scanf("%f%f",&a,&b);
c=max(a,b);
printf("max=&f\n",c);
}
3.计算并输出一个圆台两底面积之和
#include
floatarea(floatx,floaty)
{
floats;
s=3.1415*(x*x+y*y);
returns;
}
voidprintstar()
{
inti;
for(i=0;i<30;i++)
printf("*");
printf("\n");
}
voidmain()
{
floatr1,r2,s;
printstar();
scanf("%f,%f",&r1,&r2);
s=area(r1,r2);
printf("s=%.2f\n",s);
printstar();
}
4.实参求值顺序的例子
#include
intfun(inta,intb)
{
if(a>b)return1;
elseif(a==b)return0;
elsereturn-1;
}
voidmain()
{
intk=3,s;
s=fun(k,++k);
printf("s=%d\n",s);
}
5.计算Σni=1i
#include
voidmain()
{
voids(int);
intn;
printf("inputnumber\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
voids(intn)
{
inti;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d\n",n);
}
6.全局变量被“屏蔽”
#include
inta=3,b=5;
max(inta,intb)
{
intc;
c=a>b?
a:
b;
return(c);
}
voidmain()
{
inta=8;
printf("%d\n",max(a,b));
}
7.输入正方体的长宽高,求体积及三个面的面积
#include
ints1,s2,s3;
intv_s(inta,intb,intc)
{
intv;
v=a*b*c;
s1=a*b;
s2=b*c;
s3=a*c;
returnv;
}
voidmain()
{
intv,l,w,h;
printf("\ninputlength,widthandheight\n");
scanf("%d%d%d",&l,&w,&h);
v=v_s(l,w,h);
printf("\nv=%d,s1=%d,s2=%d,s3=%d\n",v,s1,s2,s3);
}
8.用register说明变量的程序
#include
intfac(intn)
{
registerinti,f=1;
for(i=1;i<=n;i++);
f=f*i;
returnf;
}
voidmain()
{
inti;
for(i=1;i<=5;i++)
printf("%ds!
=%d\n",i,fac(i));
}
9.用static说明变量的程序
#include
intfac(intn)
{
staticinti,f=1;
f=f*n;
returnf;
}
voidmain()
{
inti;
for(i=1;i<=5;i++)
printf("%d!
=%d\n",i,fac(i));
}
10.用extern说明变量的程序
#include
externintn;
voidfun()
{
n-=20;
}
intn=100;
voidmain()
{
for(;n>=60;)
{
fun();
printf("n=%d\n",n);
}
}
11.计算s=2^2!
+3^3!
#include
longf1(intp)
{
intk;
longr;
longf2(int);
k=p*p;
r=f2(k);
returnr;
}
longf2(intq)
{
longc=1;
inti;
for(i=1;i<=q;i++)
c=c*i;
returnc;
}
voidmain()
{
inti;
longs=0;
for(i=2;i<=3;i++)
s=s+f1(i);
printf("\ns=%ld\n",s);
}
12.用梯形法编程求函数f(x)=x*x+2*x+1的定积分S0~2f(x)dx的值
#include
doublefun(doublex)
{
doubley;
y=x*x+2*x+1;
returny;
}
doubledjf(doublen,doublea,doubleb)
{
doubles=0,h;
inti;
h=(b-a)/n;
for(i=1;i<=n;i++)
s+=((fun(a+(i-1)*h)+fun(a+i*h))*h)/2;
return(s);
}
voidmain()
{
doubles,n,a,b;
scanf("%lf,%lf,%lf",&n,&a,&b);
s=djf(n,a,b);
printf("s=%.2lf\n",s);
}
13.用递归法求n!
#include
longfun(intn)
{
longf;
if(n==0||n==1)f=1;
elsef=fun(n-1)*n;
return(f);
}
voidmain()
{
intn;
longy;
printf("\ninputainteagernumber:
\n");
scanf("%d",&n);
y=fun(n);
printf("%d!
=%ld",n,y);
}
14.Hanoi塔问题
#include
voidmove(intn,charx,chary,charz)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
voidmain()
{
inth;
printf("\ninputnumber:
\n");
scanf("%d",&h);
printf("thesteptomoving%2ddiskes:
\n",h);
move(h,'a','b','c');
}
第七章数组
1.定义一个长度为10的整型一维数组,利用for循环对其中的每个元素赋值,最后利用for循环按逆序输出这十个元素值。
#include
voidmain()
{
inti,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
}
2.编写程序,从键盘输入某班学生某门课的成绩,求出最高分以及其序号。
#include
voidmain()
{
intmax,score[40];
inti,n,num;
printf("inputtotalnumbers:
\n");
scanf("%d",&n);/*输入学生实际人数*/
printf("inputscore:
\n");
for(i=0;iscanf("%d",&score[i]);
max=score[0];num=0;
for(i=1;iif(score[i]>max)
{max=score[i];num=i;}
printf("max=%d,num=%d\n",max,num);
}
3.从键盘输入某班学生某门课的成绩,然后按分数从低到高进行排序。
#include
voidmain()
{
inttemp,score[40];
inti,j,n;
printf("inputtotalnumbers:
\n");
scanf("%d",&n);
printf("inputscore:
\n");
for(i=0;iscanf("%d",&score[i]);
for(i=0;ifor(j=0;jif(score[j]>score[j+1])
{temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
printf("outputscore:
\n");
for(i=0;iprintf("%d",score[i]);
}
4.已知数组a中一共有10个已按由小到大排好序的整数。
现从键盘输入一个整数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置,否则打印找不到。
#include
voidmain()
{inta[10],d,h,x,i,m;
printf("pleaseinput10numbers:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("pleaseinputx:
");
scanf("%d",&x);
d=0;h=9;
while(d<=h)
{m=(d+h)/2;
if(x==a[m])break;
elseif(x>a[m])d=m+1;
elseh=m-1;
}
if(d<=h)
printf("%distheposition%d\n",x,m);
else
printf("thereisno%d\n",x);
}
5.一个学习小组有5个人,每个人有3门课的考试成绩,如表7-1所示。
求全组各科的平均成绩和所有科目的总平均成绩。
#include
voidmain()
{
inti,j,s=0,average,v[3];
inta[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
for(i=0;i<3;i++)
{for(s=0,j=0;j<5;j++)
s=s+a[j][i];
v[i]=s/5;
}
average=(v[0]+v[1]+v[2])/3;
printf("math:
%d\nclanguage:
%d\nFoxpro:
%d\n",v[0],v[1],v[2]);
printf("total:
%d\n",average);
}
6.将一个二维数组的行和列互换,存到另一个二维数组中。
#include
#definem2
#definen3
voidmain()
{inta[m][n]={2,4,6,8,10,12},b[n][m],i,j;
printf("arraya:
\n");
for(i=0;ifor(j=0;jprintf("%d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("arrayb:
\n");
for(i=0;ifor(j=0;jprintf("%d",b[i][j]);
printf("\n");
}
}
7.打印如图所示的杨辉三角型:
#include
#defineN15
voidmain()
{inti,j,n,a[N][N];
printf("Inputn(1-15):
\n");
scanf("%d",&n);
for(i=0;i<=n;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<=n;i++)
for(j=1;j
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<=n;i++){
for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
8.打印魔方阵。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
要求打印出由1-n^2(n为奇数)的自然数构成的魔方阵。
#include
#definen3
voidmain()
{inti,j,k,i1,j1;
inta[n][n]={0};
j=n/2;
i=0;
a[i][j]=1;
for(k=2;k<=n*n;k++)
{i1=i;j1=j;
i--;j++;
if(i<0)i=n-1;
if(j>n-1)j=0;
if(a[i][j]==0)a[i][j]=k;
else{
i=i1+1;
j=j1;
a[i][j]=k;
}
}
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
9.初始化二维数组a,并输出各元素的值。
#include
voidmain()
{
inti,j;
chara[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};
for(i=0;i<=1;i++)
{
for(j=0;j<=4;j++)
printf("%c",a[i][j]);
printf("\n");
}
}
10.输入并输出一个一个字符串。
#include
voidmain()
{chara[10],i;
for(i=0;i<10;i++)
scanf("%c",&a[i]);
for(i=0;i<10;i++)
printf("%c",a[i]);
}
11.用格式符%s对数组进行输入和输出操作。
#include
voidmain()
{
charstr1[6],str2[6],str3[6];
printf("inputstring:
\n");
scanf("%s%s%s",str1,str2,str3);
printf("%s%s%s\n",str1,str2,str3);
}
12.设有C程序如下:
#include
voidmain()
{
charstr[15];
printf("inputstring:
\n");
scanf("%s",str);
printf("%s\n",str);
}
//运行时如果输入:
//thisisabook
//输出结果为:
this
//(字符串长度超过字符数组定义长度)
13.设有C程序如下:
#include
voidmain()
{
charstr[15];
printf("inputstring:
\n");
gets(str);
puts(str);
}
//运行时如果输入:
thisisabook
//运行结果为:
thisisabook
14.连接两个字符串。
#include"string.h"
#include"stdio.h"
voidmain()
{
charstr1[25]="Mynameis";
charstr2[10];
printf("inputyourname:
\n");
gets(str2);
strcat(str1,str2);
puts(str1);
}
//运行时如果输入:
WangLing
//程序运行结果是:
MynameisWangLing
15.设有C程序如下:
#include
#include"string.h"
voidmain()
{
charstr1[15],str2[]="CLanguage";
strcpy(str1,str2);
puts(str1);
}
16.字符串比较
设有C程序如下:
#include"stdio.h"
#include"string.h"
voidmain()
{intk;
charstr1[15],str2[]="CLanguage";
printf("inputastring:
\n");
gets(str1);
k=strcmp(str1,str2);
if(k==0)printf("str1=str2\n");
if(k>0)printf("str1>str2\n");
if(k<0)printf("str1}
17.求字符串长度
设有C程序如下:
#include"stdio.h"
#include"string.h"
voidmain()
{intk;
charstr[]="CLanguage";
k=strlen(str);
printf("Thelenthofthestringis%d\n",k);
}
18.输入一个字符串,统计有多少个单词。
单词之间用空格分隔开。
#include
voidmain()
{charstr[80],c;
inti,num=0,flag=0;
printf("pleaseinputstring:
\n");
gets(str);
for(i=0;(c=str[i])!
='\0';i++)
if(c=='')flag=0;
elseif(flag==0)
{flag=1;
num++;
}
printf("Thereare%dwordsinthestring.\n",num);
}
19.输入一个无符号整数,将其转换成二进制字符串并输出。
#include
voidmain()
{unsignedn;
charstr[10],t;
intk,i,j;
printf("Pleaseinput:
");
scanf("%u",&n);
for(i=0;n!
=0;i++)
{str[i]=n%2+'0';
n/=2;
}
str[i]='\0';
printf("Theresultis:
");
for(k=0,j=i-1;k{t=str[k];str[k]=str[j];str[j]=t;}
puts(str);
}
20.输入五个国家的名称,并按字母顺序排列输出这些国家的名称。
#include
#include
voidmain()
{charstr[20],name[5][20];
inti,j;
printf("inputcountry'sname:
\n");
for(i=0;i<5;i++)
gets(name[i]);
printf("\n");
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(strcmp(name[j],name[j+1])>0)
{strcpy(str,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],str);
}
printf("Theresultis:
\n");
for(i=0;i<5;i++)
puts(name[i]);
}
21.用选择法对十个整数由小到大排序。
#include
voidsort(inta[],intn)
{inti,j,k,t;
for(i=0;i{k=i;
for(j=i+i;jif(a[j]if(k!
=i)
{t=a[k];a[k]=a[i];a[i]=t;}
}
}
voidmain()
{ints[10],i;
printf("inputthearray:
");
for(i=0;i<10;i++)
scanf("%d",&s[i]);
sort(s,10);
printf("outputthearray:
");
for(i=0;i<10;i++)
printf("%4d",s[i]);
}
22.
#include
voidnzp(inta[],intn)
{
inti;
printf("\nvaluesofarrayaare:
\n");
for(i=0;i{if(a[i]<0)a[i]=0;
printf("%d",a[i]);
}
}
voidmain()
{
intb[8],i;
printf("\ninput8numbers:
\n");
for(i=0;i<8;i++)
scanf("%d",&b[i]);
printf("initialvaluesofarraybare:
\n");
for(i=0;i<8;i++)
printf("%d",b[i]);
nzp(b,8);
printf("\nlastvaluesofarraybare:
\n");
for(i=0