c语言程序设计题目及答案.docx
《c语言程序设计题目及答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计题目及答案.docx(66页珍藏版)》请在冰豆网上搜索。
c语言程序设计题目及答案
一、程序设计共口3题
第1题题号:
319
#include"stdio.h"
voidwwjt();
intfun(intm){inti,k=l;
if(m<=l)k=0;
for(i=2;iif(m%i==0)k=0;
returnk;}第2题题号:
351
功能:
i青编一个函数voidfun(int
tt[M][N]Jntpp[N]),
tt指向一个M行N列的二维数
组,求出二维数组每列
中最大元素,并依次放入pp所
指一维数组中。
二维
数组中的数已在主函数中赋
予。
#include
#include
#defineM3
#defineN4
voidwwjt();
voidfun(inttt[M][N],intpp[N]){intij;
for(j=0;jfor(i=l;iif(tt[i][j]>pp[j])
PP[j]=tt[i][j];}第3题题号:
375
功能:
从键盘上输入任意实数,求出其
所对应的函数值。
z=e的x次幕(x>10)z=log(x+3)(x>-
3)z=sin(x)/((cos(x)+4)#include
#include
voidwwjt();
doubley(floatx){doublez;
if(x>10)z=exp(x);
elseif(x>-3)z=log(x+3);elsez=sin(x)/(cos(x)+4);return(z);}第4题题号:
334
功能:
求给定正整数n以内的素数之积。
(*28)
#include
#include,,conio.hH
longfun(intn){longi,k;
longs=l;
for(i=2;i<二n;i++)
{for(k=2;k
if(i%k==O)break;
if(k==i)s=s*i;}returns;}第5题题号:
333
功能:
计算并输出给定整数的所有因子之积(包括自身)。
规定这个整数的值不大于50o
#include
#include"conio.h"
voidwwjt();
longintfun(intn)
{longs=l,i;
for(i=2;i<二n;i++)
if(n%i==0)s=s*i;
returns;}第6题题号:
50
功能:
求出菲波那契数列的前一项与
后一项xx的极限的
近似值例如:
当误差为
0.0001
时,函数值为
0.618056。
#include
include"math.h"
voidwwjt();
floatfun(){floatfl=l,f2=l,f3;
floatrl=2,r2;
do
{r2=rl;
rl=fl/f2;
f3=fl+f2;
fl=f2;
f2=f3;
}while(fabs(rl-r2)>le-4);
returnrl;}第7题题号:
394
功能:
产生20个[30,120]上的随机整
数放入二维数组
a⑸⑷中,求其中的最小值。
#include"stdlib.h"
#include
voidwwjt();
intamin(inta[5][4]){inti,j,s;
s=a[0][0];
for(i=0;i<5;i++)
for(j=0;j<4;j++)
if(s>a[i]U])s=a[i]D];
return(s);
}第8题题号:
337
功能:
将两个两位数的正整数a、b合并形成一个整数放在
CXXo合并的方式是:
将a数的十位和个位数依次放
在c数的百位和个位上,b数的十位和个位数依次放
在c数的十位和千位上。
例如:
当a=45,b=12o调用该函数后,c=2415o
inelude
voidwwjt();
voidfun(inta,intb,long*c){
*c=a/10*100+a%10+b/10*10+b%10*1000;}第9题题号:
388
功能:
编写函数判断一个整数能否同时被3和5整除,若能
则返回值为1,否则为0。
调用该函数求出15^300之
间能同时被3和5整除的数的个数。
#include
voidwwjt();
intsumfintn){if(n%3==0&&n%5==0)return
(l);return
(0);}
第10题题号16
功能:
编写函数fun求l!
+2!
+3!
+〃〃+n!
的和,在main函
数中由键盘输入n值,并输出运算结果。
请编写fun
函数。
例如:
若n值为5,则结果为153。
#include
voidwwjt();
longintfun(intn){inti;
floatf=l,s=O;
for(i=l;i<=n;i++)
s=s+f;}
returns;
第11题题号:
329
功能:
对某一正数的值保留2位小数,intfun(intn){intsumj;
sum=0;
for(i=l;i<=n;i++)
{sum=sum+i;}
return(sum);
并对第三位进行四舍
五入。
#include
#include"conio.h"
voidwwjt();
doublefun(floath){inti;
i=(int)(h*1000)%10;
if(i>=5)
return(int)(h*100+l)/
100.0;
else
return(int)(h*100)/
100.0;
第12题题号:
410
功能:
编写函数fun将一个数组中的
值按逆序存放,并在
main()函数中输出。
例如:
原来存顺序为86541。
要求
改为:
14568。
#include
#defineN5
voidwwjt();
intfun(intarr[],intn){inti,t;
for(i=0;i{t=arr[i];
arr[i]=arr[n-l-i];
arr[n-l-i]=t;}B13题题号:
327
功能:
能计算从1开始到n的自然数
的和,n由键盘输入,并在main()函数中输出。
#include
voidwwjt();第14题题号:
507
功能:
编写函数fun求一个字符串的长度,在main函数中输入字符串,并输出其XX。
#include
voidwwjt();
intfun(char*pl){char*p;
intn=0;
P=P1;
while(*p++)
n++;
returnn;
第15题题号:
44
功能:
求出二维数组周边元素之和,作为函数值返回。
二
维数组的值在主函数中赋予。
#defineM4
#defineN5
#include
voidwwjt();
intfun(inta[M][N]){ints=0;
intij;
for(i=0;is=s+a[i][0]+a[i][N-l];for(j=l;j第16题题号:
364
功能:
求一个四位数的各位数字的立方和。
#ineludevoidwwjt();
intfun(intn){intd,s=O;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;}returns;
第17题题号:
339
功能:
判断整数x是否是同构数。
若
是同构数,函数返回1;
否则返回0。
x的值由主函数从
键盘读入,要求不大
于100o
说明:
所谓“同构数〃是指这样的数,
这个数岀现在它的
平方数的右边。
例如:
输入整数5,5的平方数是25,
5是25xx右侧的数,所
以5是同构数。
^include
voidwwjt();
intfun(intx){intk;
k=x*x;
if((k%10==x)||(k%100==x))
return1;
else
return0;
第18题题号:
331
功能:
找出一个大于给定整数且紧随
这个整数的素数,并
作为函数值返回。
#include
#include"conio.h"
voidwwjt();
intfun(intn){inti,k;for(i=n+l;;i++){
for(k=2;k
if(i%k==O)
break;
if(k==i)
return(i);}第19题题号:
317
功能:
求出NxM整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:
输入的数组为:
12341561218910112
求出的最大数为18,行坐标为2,列坐标为1。
#defineN4
#defineM3
#include
voidwwjt();
intRow,Col;
intfun(intarray[N][M]){
intmaxJJ;
max=array[0][0];
Row=0;
Col=0;
for(i=0;i{for(j=0;jif(max{max=array[i][j];
Row=i;
Col=j;}}return(max);
第20题题号:
360
【程序设计】功能:
把20个随机数存入一个数组,
然后输出该数组中的
最大值。
#include
#defineVSIZE20
voidwwjt();
intvector[VSIZE];
intfun(intlist[],intsize)voidwwjt();
floatfun(floatx){floaty;
if(x<0&&x!
=・
3.0)
y=x*x+x+6;
elseif(x>=0&&x<
10.0&&x!
=
2.0&&x!
二
3.0){inti,max=0;
for(i=l;iif(list[max]max=i;
returnmax;
第21题题号:
355
功能:
对xx为8个字符的字符串,
将8个字符按降序排列。
例如:
原来的字符串为CEAedcab,排序
后输出为edcbaECAo
#include
#include
#include
voidwwjt();
voidfun(char*s,intnum){intij;
chart;
for(i=0;ivnum;i++)
for(j=i+l;jif何i]
{t=s[i];s[i]=sD];s[j]=t;}
第22题题号:
405
功能:
编写函数fun计算下列分段函
数的值:
xA2+x+6x<0且
x#-3
f(x)=xA2-5x+60且xH2及xH3
xA2-x-l其它
#includey=x*x-5*x+6;
elsey=x*x-x-l;
returny;
第23题题号:
338
功能:
编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
#include
voidwwjt();
intfun(intarray⑶[3]){
intij,t;
for(i=0;i<3;i++)for(j=0;j
array[i][j]=array[j][i];array[j][i]=t;}
第24题题号:
392
功能:
求一批数中最大值和最小值的积。
#defineN30
#include"stdlib.h"
#inelude
voidwwjt();
intmax_min(inta[],intn){inti,max,min;
max=min=a[0];
for(i=l;ivn;i++)
if(a[i]>max)max=a[i];
elseif(a[i]return(max*min);
第25题题号:
407
功能:
编写函数fun求
sum二d+dd+ddd+〃〃+dd.・・d(n个d),if(i==j||i+j==N-l)t=t*arr[i][j];return(t);
第27题题号:
42
功能:
从字符串sxx删除指定的字符Co
#inelude
voidwwjt();
fun(chars[],charc){其中d为1-9的数字。
例如:
3+33+333+33+333(此时
d=3,n=5),d和n在主函
数中输入。
#include
voidwwjt();
longintfun(intd,intn){longints=O,t=O;
inti;
for(i=l;i<二n;i++)
{t=t+d;
s=s+t;
d=d*10;}returns;
第26题题号:
395
功能:
求n阶方阵主、副对角线上的
元素之积。
*/
#defineN4
#include"stdlib.h"
#include
voidwwjt();
floatmul(intarr[][N]){inti,j;
floatt=l;
for(i=0;ifor(j=0;jfor(i=0;s[i]!
=,\0';i++)if(s[i]!
=c)s[k++]=s[i];s[k]=,\0,;
第28题题号:
311
功能:
计算n门课程的平均值,计算结果作为函数值返回。
例如:
若有5门课程的成绩是:
92,76,69,58,88,
则函数的值为
76.6000。
#include
voidwwjt();
floatfun(inta[],intn){
inti;
floaty=0;
for(i=0;ivn;i++)
y+=a[i];
y=y/n;
returny;
第29题题号:
348
功能:
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在tXXo
例如:
当s中的数为:
时,t中的数为:
642o
#include
voidwwjt();
longfun(longs,longt){
longsl=10;
s/=10;
t=s%10;
while(s>0){s=s/100;
t=s%10*sl+1;
si=si*10;
功能:
编写函数求
3!
+6!
+9!
+12!
+15+18!
+21!
o
#include
voidwwjt();
floatsum(intn){intij;
floatt,s=0;
for(i=3;i<二n;i=i+3)
{t=l;
for(j=l;j<=i;j++)
s=s+t;}
return(s);
第31题题号:
397
功能:
编写函数fun(str,i,n),从字
符串strxx删除第i个
字符开始的连续n个字符(注
意:
str[0]代表字符串
的第一个字符)。
#include
voidwwjt();
fun(charstr[],inti,intn){while(str[i+n-l]){str[i-l]=str[i+n-l];
i++;}str[i-l]=,\Ol;
第32题题号29
功能:
对任意输入的x,用下式计算
并输出y的值。
5x<10
y=0x=10
-5x>10
#include
voidwwjt();intfun(intn){
答案:
intm;
if(n<10)
m=5;
else
if(n==10)m=0;
elsem=-5;
returnm;或intm;
if(n>=10)
if(n>10)
m=-5;
elsem=0;
elsem=5;
returnm;
第33题题号:
323
功能:
求1到w之间的奇数之和。
(w是大于等于100小于等
于1000的整数)
#include
#include"conio.h"
voidwwjt();
longfun(intw){longy=0;
inti;
for(i=l;i<=w;i++)
if(i%2==l)y+=i;
returny;
第34题题号:
312
功能:
调用函数fun判断一个三位数是否“水仙花数“。
在main函数中从键盘输入一个三位数,并输
出判断结果。
请编写fun函数。
说明:
所谓”水仙花数”是指一3位数,其各位数字立方和等于该数本身。
例如:
153是一个水仙花数,因为153二1+125+27。
#include
voidwwjt();intfun(intn){intbw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%l
0;
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw){
答案:
for(m=-i;m<=i;m++){
for(n=0;nvabs(m);n++)printf(“");
for(n=0;nv7・2*abs(m);n++)printf(”*”);
printf(”\n“);
return1;
elsereturn0;
第35题题号:
378
功能:
编写函数用冒泡排序法对数组
中的数据进行从小到
大的排序。
#inelude
#include
voidwwjt();
voidsort(inta[],intn){inti,j,t;
for(i=0;ifor(j=0;jif(aD]>aU+l])
{t=aU];
a[j]二a[j+l];
a[j+l]二t;}第36题题号:
504
功能:
编写程序打印如图1所示图形。
****
*******
****要求:
要求使用abs()o
#inelude
include"math.h11
voidfun(inti)}
第37题题号:
342
功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出矩阵第一行与第三行元素之和,并在fun()函数中输出。
#include
voidwwjt();
main(){inti,j,s,a[3][3];
for(i=0;i<3;i++){for(j=0;j<3;j++)
scanf(”%d”,&a[i][j]);}
s=fun(a);
printf(,,Sum=%d\n,,,s);
wwjt();}intfunfinta[3][3]){intsum;
intij;
sum=0;
for(i=0;i<3;i+=2)
for(j=0;j<3;j++)
sum=sum+a[i][j];
returnsum;
第38题题号:
382
功能:
给定n个数据,求最小值出现的位置(如果最小值出现多次,求出第一次出现的
位置即可)ofor(i=0;c[i]!
='\O';i++)#include
voidwwjt();
intstation(ints[],intn){inti,k;
k=0;
for(i=l;ivn;i++)
if(s[i]
return(k);
第39题题号:
62
功能:
求5行5xx矩阵的主、副对角
线上元素之和。
注意,
两条对角线相交的元素只加一
次。
例如:
主函数中给出的矩阵的两条对
角线的和为45。
#include
#defineM5
intfun(inta[M][M]){ints=0;
intij;
for(i=0;is=s+a[i][i]+a[i][M-l-i];
s=s-a[(M-l)/2][(M-l)/2];
returns;
第40题题号:
503
题目:
分别统计字符串中字母、数字、
空格和其他字符出现的
次数(字符xx小于80)o
#include
voidwwjt();
/*•全局变量,a用于保存字母个数、
num用于保存数字个数
b用于保存空格个数、other用于保存
其他字符字数*/
inta=0,num=0,b=0,other=0;
voidcount(charc[]){
答案:
inti;if((c[i]>=lA,&&c[i]v=Z)11(叩]>=8&&玮]<=力)
a=a+l;
else讦
(c[i]>='0'&&c[i]<='9')
num二num+l;elseif(c[i]=='')
b=b+l;else
other=other+l;第41题题号:
387
功能:
求一批数中最大值和最小值的差。
#defineN30
#include"stdlib.h"
#include
voidwwjt();
intmax_min(inta[],intn){
inti,max,min;
max=min=a[0];
for(i=l;ivn;i++)
if(a[i]>max)max=a[i];elseif(a[i]号:
347
功能: