c语言大题.docx
《c语言大题.docx》由会员分享,可在线阅读,更多相关《c语言大题.docx(15页珍藏版)》请在冰豆网上搜索。
![c语言大题.docx](https://file1.bdocx.com/fileroot1/2023-8/19/598f78f1-a93a-46da-9d2d-fbb721bbc762/598f78f1-a93a-46da-9d2d-fbb721bbc7621.gif)
c语言大题
1.功能:
计算并输出给定整数n的所有因子之和(不包括1与自身)。
注意:
n的值不大于1000。
例如:
n的值为12时,除了1和12外的因子有2、3、4、6,和为15,应输出15
ints=0,i;
for(i=2;iif(n%i==0)s=s+i;
returns;
2.功能:
求大于lim(lim小于100的整数)并且小于100的所有
素数并放在aa数组中,该函数返回所求出素数的个数。
intn=0;
inti,j;
for(i=lim;i<=100;i++)
{for(j=2;j
if(i%j==0)break;
if(j==i)aa[n++]=i;
}
returnn;
3.功能:
求1到w之间的奇数之和。
(w是大于等于100小于等
于1000的整数)。
longy=0;
inti;
for(i=1;i<=w;i++)
if(i%2==1)y+=i;
returny;
4.功能:
能计算从1开始到n的自然数的和,n由键盘输入,
并在main()函数中输出。
请使用for循环实现
intsum,i;
sum=0;
for(i=1;i<=n;i++)
{sum=sum+i;}
return(sum);
5.功能:
编写程序,使用循环将矩阵(3行3列)各元素值乘2。
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
200400600
80010001200
140016001800
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
array[i][j]=array[i][j]*2;
6.功能:
把20个随机数存入一个数组,然后输出该数组中的最大值
inti,max=0;
for(i=1;iif(list[max]max=i;
returnmax;
7.功能:
编写函数fun其功能是:
根据整型形参m,计算如下
公式的值:
y=1+1/3+1/5+1/7+...+1/(2m+1)
例如:
若m=9,则应输出:
doubley=1;
inti;
for(i=1;i<=m;i++)
{y+=(2*i+1);}
return(y);
8.功能:
判断m是否为素数。
inti,k=1;
if(m<=1)k=0;
for(i=2;iif(m%i==0)k=0;
returnk;
9.功能:
求小于lim的所有素数并放在aa数组中,该函数返回
所求出素数的个数。
intn=0;
inti,j;
for(i=2;i<=lim;i++)
{for(j=2;j
if(i%j==0)break;
if(j==i)aa[n++]=i;
}
returnn;
10.功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出主对角线元素的平方和。
fun()
函数的功能为求对角线元素的和。
程序中如果用到
循环,必须使用for循环。
intsum;
inti;
sum=0;
for(i=0;i<3;i++)
sum=sum+a[i][i]*a[i][i];
returnsum;
11.功能:
求一个给定字符串中的字母的个数。
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;
12.功能:
编写函数fun其功能是:
根据整型形参m,计算如下
公式的值:
y=1/2!
+1/4!
+...+1/m!
(m是偶数)。
doubley=;
inti,j;
doubles=1;
for(i=2;i<=m;i+=2)
{
for(j=i-1;j<=i;j++)
s=s*j;
y=y+s;
}
returny;
13、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。
intmin,i;
min=x[0];
for(i=1;i{if(x[i]returnmin;
14.功能:
将两个两位数的正整数a、b合并形成一个整数放在c
中。
合并的方式是:
将a数的十位和个位数依次放
在c数的个位和百位上,b数的十位和个位数依次放
在c数的十位和千位上。
例如:
当a=45,b=12,调用该函数后,c=2514。
*c=a/10+a%10*100+b/10*10+b%10*1000;
15.功能:
编写函数判断一个整数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);
16.功能:
将主函数中输入的字符串反序存放。
例如:
输入字符串"abcdefg",则应输出"gfedcba"。
inti,j;
charc;
for(i=0,j=n-1;i/*或者for(i=0,j=n-1;i{c=*(str+i);
*(str+i)=*(str+j);
*(str+j)=c;}
17.功能:
把20个随机数存入一个数组,然后输出该数组中的
最小值。
其中确定最小值的下标的操作在fun函数中
实现,请给出该函数的定义。
inti,min=0;
for(i=1;iif(list[min]>list[i])
min=i;
returnmin;
18.功能:
编写函数对数组中的数据进行从小到大的排序。
------------------------------------------------*/
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;
}
--------------------------------------------------
19.功能:
从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
7531。
longsl=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
20.求一个正整数的各位数字的立方和。
intd,k,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
21.求给定正整数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;
22.功能:
求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;
23.功能:
编写程序求无理数e的值并输出。
计算公式为:
e=1+1/1!
+1/2!
+1/3!
+......+1/n!
当1/n!
<时e=。
longintj;
inti,k;
floate,jc;
i=1;
e=;
jc=;
while(jc>=
{
e=e+jc;
j=1;
for(k=1;k<=i;k++)
j=j*k;
jc=j;
i++;
}
24.请编一个函数:
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];}
25.用函数求fibonacci数列前28项的和。
程序中如果用到循环,必须使用for循环。
说明:
fibonacci数列为数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和。
运行结果:
832039。
longf,k=f1+f2;
inti;
for(i=3;i<=28;i++)
{f=f1+f2;
k=k+f;
f1=f2;
f2=f;
}
return(k);
26.功能:
从键盘上输入任意实数x,求出其所对应的函数值。
z=(x-4)的平方根(x>4)
z=x的八次幂(4>x>-4)
z=4/(x*(x+1))(-4>x>-10)
z=|x|+20(其他)
提示:
x的八次幂请使用幂函数pow求得,平方根函数是sqrt。
floatz;
if(x>4)z=sqrt(x-4);
elseif(x>-4)z=pow(x,8);
elseif(x>-10)z=4/(x*(x+1));
elsez=fabs(x)+20;
return(z);
27.功能:
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
642。
longsl=10;
s/=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
28.功能:
求一组数中大于平均值的数的个数。
例如:
给定的一组数为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;
29.功能:
编写函数fun,求任一整数m的n次方。
longintx=1;
inti;
for(i=1;i<=n;i++)
x=x*m;
returnx;
30.功能:
根据整型形参m,计算如下公式的值:
y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)
例如:
若m=9,则应输出:
doubley=0;
inti;
for(i=0;i<=m;i++)
{y+=(i+5);}
return(y);
31.功能:
编写函数fun生成一个主对角线元素为1,其他元素都
为0的3*3的二维数组。
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
arr[i][j]=1;
else
arr[i][j]=0;
32.功能:
调用函数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;
33.根据整型形参m,计算如下公式的值:
y=1/2+1/4+1/6+...+1/2m。
程序中如果用到循环,必须使用for循环。
例如:
若m=9,则应输出:
doubley=0;
inti;
for(i=1;i<=m;i++)
{y+=(2*i);}
return(y);
34.编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0。
调用该函数求出15~300之间能同时被3和5整除的数的个数。
if(n%3==0&&n%5==0)return
(1);
return(0);
35.将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
例如:
当a=45,b=12。
调用该函数后,c=4251。
*c=a/10*1000+a%10*10+b/10+b%10*100;
36.判断整数x是否是同构数。
若是同构数,函数返回1;否则返回0。
x的值由主函数从键盘读入,要求不大于100。
说明:
所谓"同构数"是指这样的数,这个数出现在它的平方数的右边。
例如:
输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。
intk;
k=x*x;
if((x<10&&k%10==x)||(x>9&&k%100==x))
return1;
elsereturn0;
37.功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积。
fun()函数的功能为求对角线元素的积。
intsum;
inti,j;
sum=1;
for(i=0;i<3;i++)
sum=sum*a[i][i];
returnsum;
38.产生20个随机整数放入二维数组a[5][4]中,利用函数row_sum求每行元素的和,并将和放到另一个数组中。
inti,j;
for(i=0;i<5;i++)
{b[i]=0;
for(j=0;j<4;j++)
b[i]=b[i]+a[i][j];
39.功能:
根据整型形参m,计算如下公式的值:
y=sin(m)*10。
例如:
若m=9,则应输出:
doubley=0;
y=sin(m)*10;
return(y);
}
40.功能:
求出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);