c语言题库.docx
《c语言题库.docx》由会员分享,可在线阅读,更多相关《c语言题库.docx(23页珍藏版)》请在冰豆网上搜索。
c语言题库
功能:
调用函数fun判断一个三位数是否"水仙花数"。
在main函数中从键盘输入一个三位数,并输
出判断结果。
请编写fun函数。
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;
功能:
产生20个[30,120]上的随机整数放入二维数组
a[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][j])s=a[i][j];
return(s);
功能:
从键盘为一维整型数组输入10个整数,调用fun
函数找出其中最小的数,并在main函数中输出。
请编写fun函数。
intmin,i;
min=x[0];
for(i=1;i{if(x[i]returnmin;
功能:
从键盘输入一个大于3的整数,调用函数fun判断
其是否素数,然后在main函数中输出相应的结论
信息。
例如:
7是素数,8不是素数。
请编写fun函数。
素数是
仅能被1和自身整除的数
答案:
inti;
intj;
j=1;
for(i=2;i{if(n%i==0)j=0;
}
returnj;
功能:
用do-while语句求1~100的累计和。
答案:
inti=1,sum=0;
do
{sum=sum+i;
i++;
}while(i<=n);
returnsum;
功能:
求1到100之间的偶数之积。
答案:
doubley=1;
inti;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
returny;
功能:
根据整型形参m,计算如下公式的值:
y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)
例如:
若m=9,则应输出:
1.168229
答案:
doubley=0;
inti;
for(i=0;i<=m;i++)
{y+=1.0/(i+5);}
return(y);
功能:
从键盘上输入任意实数,求出其所对应的函数值。
z=e的x次幂(x>10)
z=log(x+3)(x>-3)
z=sin(x)/((cos(x)+4)
------------------------------------------------*/
答案:
----------------------
doublez;
if(x>10)z=exp(x);
elseif(x>-3)z=log(x+3);
elsez=sin(x)/(cos(x)+4);
return(z);
功能:
编写函数求表达式的和(n的值由主函数输入)。
1-1/2+1/3-1/4+......+1/m
例如:
当n=20时,表达式的值为0.668771。
floats=0;
inti,k=1;
for(i=1;i<=n;i++)
{s=s+k*1.0/i;
k=-k;
}
return(s);
功能:
能计算从1开始到n的自然数的和,n由键盘输入,
并在main()函数中输出。
答案:
----------------------
intsum,i;
sum=0;
for(i=1;i<=n;i++)
{sum=sum+i;}
return(sum);
功能:
把20个随机数存入一个数组,然后输出该数组中的
最大值。
答案:
inti,max=0;
for(i=1;iif(list[max]max=i;
returnmax;
功能:
根据整型形参m,计算如下公式的值:
y=1/2+1/4+
1/6+...+1/2m。
例如:
若m=9,则应输出:
1.414484
答案:
doubley=0;
inti;
for(i=1;i<=m;i++)
{y+=1.0/(2*i);}
return(y);
功能:
编写函数fun计算下列分段函数的值:
x^2+x+6x<0且x≠-3
f(x)=x^2-5x+60≤x<10且x≠2及x≠3
x^2-x-1其它
答案:
floaty;
if(x<0&&x!
=-3.0)
y=x*x+x+6;
elseif(x>=0&&x<10.0&&x!
=2.0&&x!
=3.0)
y=x*x-5*x+6;
elsey=x*x-x-1;
returny;
功能:
编写函数fun将一个数组中的值按逆序存放,并在
main()函数中输出。
例如:
原来存顺序为8,6,5,4,1。
要求改为:
1,4,5,6,8。
nti,t;
for(i=0;i{t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
功能:
求一个给定字符串中的字母的个数。
答案:
inti,k=0;
for(i=0;s[i]!
='\0';i++)
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
k++;
returnk;
功能:
编写函数判断一个整数能否同时被3和5整除,若能
则返回值为1,否则为0。
调用该函数求出15~300之
间能同时被3和5整除的数的个数。
答案:
if(n%3==0&&n%5==0)return
(1);
return(0);
功能:
求1到w之间的奇数之和。
(w是大于等于100小于等
于1000的整数)
答案:
longy=0;
inti;
for(i=1;i<=w;i++)
if(i%2==1)y+=i;
returny;
功能:
求k!
(k〈13),所求阶乘的值作为函数值返回。
(要求使用递归)
答案:
if(k>0)
return(k*fun(k-1));
elseif(k==0)
return1L;
功能:
能计算从1开始到n的自然数中偶数的平方的和,n由键盘输入,并在main()函数中输出。
(n是偶数)
答案:
intsum,i;
sum=0;
for(i=2;i<=n;i=i+2)
{
sum=sum+i*i;}
return(sum);
功能:
计算n门课程的平均值,计算结果作为函数值返回。
例如:
若有5门课程的成绩是:
92,76,69,58,88,
则函数的值为76.599998。
答案:
inti;
floaty=0;
for(i=0;iy+=a[i];
y=y/n;
returny;
功能:
编写函数求1~100中奇数的平方和。
结果为166650。
答案:
floats=0;
inti,j;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);
功能:
将主函数中输入的字符串反序存放。
答案:
inti,j;
charc;
for(i=0,j=n-1;i*(str+i)=*(str+j);
*(str+j)=c;}
功能:
编写函数用冒泡排序法对数组中的数据进行从小到
大的排序。
IntI,j,t;
For(i=0;iFor(j=0;jIf(a>[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
功能:
求出二维数组周边元素之和,作为函数值返回。
二
维数组的值在主函数中赋予。
Ints=0;
IntI,j;
For(i=0;iS=s+a[i][0]+a[i][N-1];
For(j=1;jS=s+a[0][j]+a[M-1][j];
Returns;
功能:
编写函数判断一个整数能否同时被3和5整除,若能
则返回值为1,否则为0。
调用该函数求出15~300之
间能同时被3和5整除的数的个数。
If(n%3==0&&n%5==0)
Return(0);
功能:
计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:
n的值不大于1000。
例如:
n的值为855时,应输出704。
Ints=0,I;
For(i=2;iIf(n%i==0)s=s+I;
Returns;
功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出矩阵第一行与第三行元素之和,
并在fun()函数中输出。
float
Intsum;
IntI,j;
Sum=0;
For(i=0;i<3;i+=2)
For(j=0;j<3;j++)
Sum=sum+a[i][j];
Returnsum;
功能:
计算n门课程的平均值,计算结果作为函数值返回。
例如:
若有5门课程的成绩是:
92,76,69,58,88,
则函数的值为76.599998。
IntI;
Floaty=0;
For(i=0;iY+=a[i];
Y=y/n;
Returny;
功能:
用函数求fibonacci数列前n项的和。
说明:
fibonacci数列为数列的第一项值为1,第二项值也
为1,从第三项开始,每一项均为其前面相邻两项
的和。
例如:
当n=28时,运行结果:
832039
Longf,k=f1+f2;
IntI;
For(i=3;i<=28;i++)
{
f=f1+f2;
K=k+f;
F1=f2;
F2=f;
}
Return(k);
功能:
对长度为8个字符的字符串,将8个字符按降序排列。
例如:
原来的字符串为CEAedcab,排序后输出为edcbaECA。
Inti,j;
Chart;
For(i=0;iFor(j=i+1;jIf(s[i]
{t=s[i];s[i]=s[j];s[j]=t;}
功能:
根据整型形参m,计算如下公式的值:
y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)
例如:
若m=9,则应输出:
1.168229
Doubley=0;
IntI;
For(i=0;i<=m;i++)
{y+=1.0/(i+5);}
Return(y);
功能:
给定n个数据,求最大值出现的位置(如果最大值出
现多次,求出第一次出现的位置即可)。
答案:
inti,k;
k=0;
for(i=1;iif(s[i]>s[k])k=i;
return(k+1);
第2题(10.0分)题号:
321
功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出主对角线元素的积,并在fun()
函数中输出。
inti,j;
sum=1;
for(i=0;i<3;i++)
sum=sum*a[i][i];
returnsum;
功能:
计算出k以内最大的10个能被13或17整除的自然数之和。
(k〈3000)。
答案:
inta=0,b=0,j;
while((k>=2)&&(b<10))
{if((k%13==0)||(k%17==0))
{a=a+k;b++;}
k--;
}
returna;
功能:
编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。
调用该函数找出
100~200之间满足条件的所有数。
答案:
intk,s=0;
do
{s=s+m%10;
m=m/10;
}while(m!
=0);
if(s%7==0)k=1;
elsek=0;
return(k);
第5题(10.0分)题号:
367
功能:
求一组数中大于平均值的数的个数。
例如:
给定的一组数为1,3,6,9,4,23,35,67,12,88时,函
数值为3。
答案:
inti,k=0;
floats=0,ave;
for(i=0;is+=a[i];
ave=s/n;
printf("%f",ave);
for(i=0;iif(a[i]>ave)k++;
returnk;
功能:
统计出若干个学生的平均成绩,最高分以及得最高
分的人数。
例如:
输入10名学生的成绩分别为92,87,68,56,92,
84,67,75,92,66,则输出平均成绩为77.9,
最高分为92,得最高分的人数为3人。
答案inti;floatsum=0,ave;
Max=array[0];
for(i=0;i{if(Maxsum=sum+array[i];}
ave=sum/n;
for(i=0;iif(array[i]==Max)J++;
return(ave);
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
答案:
inti,j;
for(j=0;j{pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];}
功能:
编写程序求无理数e的值并输出。
计算公式为:
e=1+1/1!
+1/2!
+1/3!
+......+1/n!
当1/n!
<0.000001时e=2.718282。
答案:
longintj;
inti,k;
floate,jc;
i=1;
e=0.0;
jc=1.0;
while(jc>=0.000001)
{e=e+jc;
j=1;
for(k=1;k<=i;k++)
j=j*k;
jc=1.0/j;
i++;}
returne;
功能:
编写函数fun求s=1^k+2^k+3^k+......+N^k的值,
(1的K次方到N的K次方的累加和)。
答案:
longpower,sum=0;
inti,j;
for(i=1;i<=n;i++)
{power=i;
for(j=1;jpower*=i;
sum+=power;
}
returnsum;
功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出矩阵第一行与第三行元素之和,
并在fun()函数中输出。
答案:
intsum;
inti,j;
sum=0;
for(i=0;i<3;i+=2)
for(j=0;j<3;j++)
sum=sum+a[i][j];
returnsum;
功能:
用函数求fibonacci数列前n项的和。
说明:
fibonacci数列为数列的第一项值为1,第二项值也
为1,从第三项开始,每一项均为其前面相邻两项
的和。
答案:
longf,k=f1+f2;
inti;
for(i=3;i<=28;i++)
{f=f1+f2;
k=k+f;
f1=f2;
f2=f;}
return(k);
功能:
求一批数中最大值和最小值的差。
答案:
inti,max,min;
max=min=a[0];
for(i=1;iif(a[i]>max)max=a[i];
elseif(a[i]return(max-min);
功能:
找出一个大于给定整数且紧随这个整数的素数,并
作为函数值返回。
答案:
inti,k;
for(i=n+1;;i++){
for(k=2;k
if(i%k==0)
break;
if(k==i)
return(i);}
功能:
将字符串中的大写字母转换为对应的小写字母,
其它字符不变。
答案:
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='A'&&str[i]<='Z')str[i]=str[i]+32;
功能:
判断一个整数w的各位数字平方之和能否被5整除,
可以被5整除则返回1,否则返回0。
答案:
intk,s=0;
do
{s=s+(w%10)*(w%10);
w=w/10;
}while(w!
=0);
if(s%5==0)k=1;
elsek=0;
return(k);
功能:
将字符串中的小写字母转换为对应的大写字母,
其它字符不变。
答案:
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
功能:
求5行5列矩阵的主、副对角线上元素之和。
注意,
两条对角线相交的元素只加一次。
例如:
主函数中给出的矩阵的两条对角线的和为45。
答案:
ints=0;
inti,j;
for(i=0;is=s+a[i][i]+a[i][M-1-i];
s=s-a[(M-1)/2][(M-1)/2];
returns;
功能:
用函数将第2个串连接到第1个串之后,不允许使用
strcat函数。
答案:
inti,j;
for(i=0;c1[i]!
='\0';i++);
for(j=0;c2[j]!
='\0';j++)
c1[i+j]=c2[j];
c1[i+j]='\0';
功能:
求一个四位数的各位数字的立方和
答案:
intd,k,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
功能:
求给定正整数n以内的素数之积。
(n<28)
longi,k;
longs=1;
for(i=2;i<=n;i++)
{for(k=2;k
if(i%k==0)break;
if(k==i)s=s*i;
}
returns;
功能:
求出N×M整型数组的最大元素及其所在的行坐标及
列坐标(如果最大元素不唯一,选择位置在最前面
的一个)。
例如:
输入的数组为:
123
4156
12189
10112
求出的最大数为18,行坐标为2,列坐标为1。
答案:
intmax,i,j;
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);
功能:
给定n个数据,求最小值出现的位置(如果最小值
出现多次,求出第一次出现的位置即可)。
答案:
inti,k;
k=0;
for(i=1;iif(s[i]
return(k);
功能:
编写函数fun其功能是:
根据整型形参m,计算如下
公式的值:
y=1/2!
+1/4!
+...+1/m!
(m是偶数)
答案:
doubley=0.0;
inti,j;
doubles=1;
for(i=2;i<=m;i+=2)
{
for(j=i-1;j<=i;j++)
s=s*j;
y=y+1.0/s;
}
returny;
功能:
用函数求N个[10,60]上的整数中能被5整除的最大
的数,如存在则返回这个最大值,如果不存在则
返回0。
答案:
inti;
for(i=0;iif(arr[i]%5==0&&arr[i]>m)
m=arr[i];
功能:
求一个n位自然数的各位数字的积。
(n是小于10的自然数)
答案:
longd,s=1;
while(n>0)
{d=n%10;
s*=d;
n/=10;}
returns;
功能:
求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…
的前n项之和。
说明:
每一分数的分母是前两项的分母之和,每一分数的
分子是前两项的分子之和
inti;
floatf1=1,f2=1,f3,s=0;
for(i=1;i<=n;i++)
{f3=f1+f2;
f1=f2;
f2=f3;
s=s+f2/f1;
}
returns;
功能:
求一批数中最大值和最小值的积。
inti,max,min;
max=min=a[0];
for(i=1;iif(a[i]>max)max=a[i];
elseif(a[i]return(max*min);
功能:
对长度为7个字符的字符串,除首、尾字符外,将其
余5个字符按降序排列。
例如:
原来的字符串为CEAedca,排序后输出为CedcEAa。
答案:
inti,j;
chart;
for(i=1;ifor(j=i+1;jif(s[i]
{t=s[i];s[i]=s[j];s[j]=t;}
功能:
若x、y为奇数,求x到y之间的奇数和;若x、y为偶数,则求x到y之间的偶数和。
答案:
inti,s=0;
for(i=x;i<=y;i+=2)
s=s+i;
returns;
功能:
从字符串s中删除指定的字符c。
答案:
inti,k=0;
for(i=0;s[i]!
='\0';i++)
if(s[i]!
=c)s[k++]=s[i];
s[k]='\0';
功能:
计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:
n的值不大于1000。
答案:
ints=0,i;
for(i=2;iif(n%i==0)s=s+i;
returns;
功能:
求出二维数组周边元素之和,作为函数值返回。
二
维数组的值在主函数中赋予。
答案:
ints=0;
inti,j;
for(i=0;i