c语言程序设计题目及答案Word格式文档下载.docx
《c语言程序设计题目及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计题目及答案Word格式文档下载.docx(60页珍藏版)》请在冰豆网上搜索。
if(x>
10)z=exp(x);
elseif(x>
-3)z=log(x+3);
elsez=sin(x)/(cos(x)+4);
return(z);
第4题题号:
334
求给定正整数n以内的素数之积。
(n<
28)
#include"
conio.h"
longfun(intn)
{
longi,k;
longs=1;
=n;
{for(k=2;
k<
i;
k++)
if(i%k==0)break;
if(k==i)s=s*i;
}
returns;
第5题题号:
333
计算并输出给定整数的所有因子之积(包括自身)。
规定这个整数的值不大于50。
longintfun(intn)
longs=1,i;
if(n%i==0)s=s*i;
returns;
第6题题号:
50
求出菲波那契数列的前一项与后一项之比的极限的
近似值例如:
当误差为0.0001时,函数值为0.618056。
math.h"
floatfun()
floatf1=1,f2=1,f3;
floatr1=2,r2;
do
{r2=r1;
r1=f1/f2;
f3=f1+f2;
f1=f2;
f2=f3;
}while(fabs(r1-r2)>
1e-4);
returnr1;
第7题题号:
394
产生20个[30,120]上的随机整数放入二维数组
a[5][4]中,求其中的最小值。
stdlib.h"
intamin(inta[5][4])
inti,j,s;
s=a[0][0];
for(i=0;
5;
4;
if(s>
a[i][j])s=a[i][j];
return(s);
第8题题号:
337
将两个两位数的正整数a、b合并形成一个整数放在
c中。
合并的方式是:
将a数的十位和个位数依次放
在c数的百位和个位上,b数的十位和个位数依次放
在c数的十位和千位上。
例如:
当a=45,b=12。
调用该函数后,c=2415。
include<
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整除的数的个数。
intsum(intn)
if(n%3==0&
&
n%5==0)return
(1);
return(0);
第10题题号:
16
编写函数fun求1!
+2!
+3!
+……+n!
的和,在main函
数中由键盘输入n值,并输出运算结果。
请编写fun
函数。
若n值为5,则结果为153。
inti;
floatf=1,s=0;
for(i=1;
{f=f*i;
s=s+f;
第11题题号:
329
对某一正数的值保留2位小数,并对第三位进行四舍
五入。
doublefun(floath)
i=(int)(h*1000)%10;
if(i>
=5)
return(int)(h*100+1)/100.0;
else
return(int)(h*100)/100.0;
第12题题号:
410
编写函数fun将一个数组中的值按逆序存放,并在
main()函数中输出。
原来存顺序为8,6,5,4,1。
要求改为:
1,4,5,6,8。
#defineN5
intfun(intarr[],intn)
inti,t;
n/2;
{t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
第13题题号:
327
能计算从1开始到n的自然数的和,n由键盘输入,
并在main()函数中输出。
intfun(intn)
intsum,i;
sum=0;
{sum=sum+i;
return(sum);
第14题题号:
507
编写函数fun求一个字符串的长度,在main函数中
输入字符串,并输出其长度。
intfun(char*p1)
char*p;
intn=0;
p=p1;
while(*p++)
n++;
returnn;
第15题题号:
44
求出二维数组周边元素之和,作为函数值返回。
二
维数组的值在主函数中赋予。
#defineM4
intfun(inta[M][N])
ints=0;
s=s+a[i][0]+a[i][N-1];
for(j=1;
N-1;
s=s+a[0][j]+a[M-1][j];
第16题题号:
364
求一个四位数的各位数字的立方和。
intfun(intn)
intd,s=0;
while(n>
0)
{d=n%10;
s+=d*d*d;
n/=10;
第17题题号:
339
判断整数x是否是同构数。
若是同构数,函数返回1;
否则返回0。
x的值由主函数从键盘读入,要求不大
于100。
说明:
所谓“同构数”是指这样的数,这个数出现在它的
平方数的右边。
输入整数5,5的平方数是25,5是25中右侧的数,所
以5是同构数。
intfun(intx)
intk;
k=x*x;
if((k%10==x)||(k%100==x))
return1;
else
return0;
第18题题号:
331
找出一个大于给定整数且紧随这个整数的素数,并
作为函数值返回。
inti,k;
for(i=n+1;
;
i++){
for(k=2;
if(i%k==0)
break;
if(k==i)
return(i);
第19题题号:
317
求出N×
M整型数组的最大元素及其所在的行坐标及
列坐标(如果最大元素不唯一,选择位置在最前面
的一个)。
输入的数组为:
123
4156
12189
10112
求出的最大数为18,行坐标为2,列坐标为1。
intRow,Col;
intfun(intarray[N][M])
intmax,i,j;
max=array[0][0];
Row=0;
Col=0;
for(i=0;
{for(j=0;
if(max<
array[i][j])
{max=array[i][j];
Row=i;
Col=j;
return(max);
第20题题号:
360
【程序设计】
把20个随机数存入一个数组,然后输出该数组中的
最大值。
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
inti,max=0;
i<
size;
i++)
if(list[max]<
list[i])
max=i;
returnmax;
第21题题号:
355
对长度为8个字符的字符串,将8个字符按降序排列。
原来的字符串为CEAedcab,排序后输出为edcbaECA。
ctype.h>
voidfun(char*s,intnum)
chart;
num;
for(j=i+1;
if(s[i]<
s[j])
{t=s[i];
s[i]=s[j];
s[j]=t;
第22题题号:
405
编写函数fun计算下列分段函数的值:
x^2+x+6x<
0且x≠-3
f(x)=x^2-5x+60≤x<
10且x≠2及x≠3
x^2-x-1其它
floatfun(floatx)
floaty;
if(x<
0&
x!
=-3.0)
y=x*x+x+6;
=0&
x<
10.0&
=2.0&
=3.0)
y=x*x-5*x+6;
elsey=x*x-x-1;
returny;
第23题题号:
338
编写程序,实现矩阵(3行3列)的转置(即行列互换)
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
intfun(intarray[3][3])
inti,j,t;
3;
i++)
for(j=0;
j<
i;
j++)
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
第24题题号:
392
求一批数中最大值和最小值的积。
#defineN30
intmax_min(inta[],intn)
inti,max,min;
max=min=a[0];
n;
if(a[i]>
max)max=a[i];
elseif(a[i]<
min)min=a[i];
return(max*min);
第25题题号:
407
编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),
其中d为1-9的数字。
3+33+333+3333+33333(此时d=3,n=5),d和n在主函
数中输入。
longintfun(intd,intn)
longints=0,t=0;
inti;
{t=t+d;
s=s+t;
d=d*10;
第26题题号:
395
-----------------------------------------------
求n阶方阵主、副对角线上的元素之积。
------------------------------------------------*/
floatmul(intarr[][N])
inti,j;
floatt=1;
if(i==j||i+j==N-1)
t=t*arr[i][j];
return(t);
第27题题号:
42
从字符串s中删除指定的字符c。
fun(chars[],charc)
inti,k=0;
s[i]!
='
\0'
if(s[i]!
=c)s[k++]=s[i];
s[k]='
第28题题号:
311
计算n门课程的平均值,计算结果作为函数值返回。
若有5门课程的成绩是:
92,76,69,58,88,
则函数的值为76.600000。
floatfun(inta[],intn)
floaty=0;
y+=a[i];
y=y/n;
returny;
第29题题号:
348
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在t中。
当s中的数为:
7654321时,t中的数为:
642。
#include<
longfun(longs,longt)
longsl=10;
s/=10;
t=s%10;
while(s>
0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
----------------------
编写函数求3!
+6!
+9!
+12!
+15+18!
+21!
。
floatsum(intn)
floatt,s=0;
for(i=3;
i=i+3)
{t=1;
=i;
t=t*j;
}
第31题题号:
397
编写函数fun(str,i,n),从字符串str中删除第i个
字符开始的连续n个字符(注意:
str[0]代表字符串
的第一个字符)。
fun(charstr[],inti,intn)
while(str[i+n-1])
str[i-1]=str[i+n-1];
i++;
str[i-1]='
第32题题号:
29
对任意输入的x,用下式计算并输出y的值。
5x<
10
y=0x=10
-5x>
答案:
intm;
if(n<
m=5;
else
if(n==10)m=0;
elsem=-5;
returnm;
或
if(n>
=10)
10)
m=-5;
elsem=0;
elsem=5;
第33题题号:
323
求1到w之间的奇数之和。
(w是大于等于100小于等
于1000的整数)
longfun(intw)
longy=0;
=w;
if(i%2==1)y+=i;
第34题题号:
312
调用函数fun判断一个三位数是否"
水仙花数"
在main函数中从键盘输入一个三位数,并输
出判断结果。
请编写fun函数。
所谓"
是指一3位数,其各位数字立方和
等于该数本身。
153是一个水仙花数,因为153=1+125+27。
intbw,sw,gw;
bw=n/100;
sw=(n-bw*100)/10;
gw=n%10;
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1;
elsereturn0;
第35题题号:
378
编写函数用冒泡排序法对数组中的数据进行从小到
大的排序。
stdlib.h>
voidsort(inta[],intn)
n-1;
n-1-i;
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
第36题题号:
504
编写程序打印如图1所示图形。
*
***
*****
*******
要求:
要求使用abs()。
voidfun(inti)
for(m=-i;
m<
m++)
{
for(n=0;
n<
abs(m);
n++)printf("
"
);
7-2*abs(m);
*"
printf("
\n"
第37题题号:
342
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出矩阵第一行与第三行元素之和,
并在fun()函数中输出。
main()
inti,j,s,a[3][3];
3;
scanf("
%d"
&
a[i][j]);
s=fun(a);
Sum=%d\n"
s);
wwjt();
intfun(inta[3][3])
intsum;
sum=0;
i+=2)
sum=sum+a[i][j];
returnsum;
第38题题号:
382
给定n个数据,求最小值出现的位置(如果最小值
出现多次,求出第一次出现的位置即可)。
intstation(ints[],intn)
k=0;
s[k])k=i;
return(k);
第39题题号:
62
求5行5列矩阵的主、副对角线上元素之和。
注意,
两条对角线相交的元素只加一次。
主函数中给出的矩阵的两条对角线的和为45。
#defineM5
intfun(inta[M][M])
s=s+a[i][i]+a[i][M-