C语言题库【编程题】期末

编程


1、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。请编写fun函数。
int min,i;
min=x[0];
for(i=1;i<n;i++)
{if(x[i]<min) min=x[i];}
return min;
2、从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。例如:7是素数,8不是素数。请编写fun函数。素数是仅能被1和自身整除的数
int i;
int j;
j= 1;
for(i=2;i<n;i++)
{if(n%i == 0) j= 0;}
return j;
3、请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最高分以及得最高分的人数。
int i;float sum=0,ave;
Max=array[0];
for(i=0;i<n;i++)
{ if(Max<array [i]) Max=array [i];
sum=sum+array [i]; }
ave=sum/n;
for(i=0;i<n;i++)
if(array [i] == Max) J++;
return(ave);
4、请编写函数fun,它的功能是:判断m是否为素数。主函数的功能是:求出100到200之间的素数的
个数。
int i,k=1;
if(m<=1) k=0;
for(i=2;i<m;i++)
if(m%i == 0) k=0;
return k;
5、编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。规定
n的值不大于1000。
int s=0,i;
for(i=2;i<n;i++)
if(n%i == 0)s=s+i;
return s;
5.题目:编写函数fun,函数的功能是:求给定正整数m(包括m)以内的素数之和。
int i,k,s=0;
for(i=2;i<=m;i++)
{for(k=2;k<i;k++)
if(i%k == 0)break;
if(k == i)s=s+i;}
return s;
6、编写函数fun,函数的功能是:求一个给定字符串
中的字母的个数。
int i,k=0;
for(i=0;s[i]!=‘\0’;i++)
if(s[i]>=‘a’&&s[i]<=‘z’||s[i]>=‘A’&&s[i]<=‘Z’)
k++;
return k;
7、编写函数fun,函数的功能是:找出一批正整数中的最大的偶数。
int i,amax=-1;
for(i=0;i<n;i++)
if(a[i]%2==0)
if (a[i]>amax) amax=a[i];
return amax;
8、用函数将两个字符串连接起来,不允许使用strcat函数。
int i,j;
for(i=0;c1[i]!=‘\0’;i++);
for(j=0;c2[j]!=‘\0’;j++)
c1[i+j]=c2[j];
c1[i+j]=‘\0’;
9、用函数将一个N阶方阵进行转置,输入输出在主函数中实现。
int i,j,k;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
{k=a[i][j];
a[i][j]=a[j][i];
a[j][i]=k;}
10、用函数求一个N阶方阵右下三角元素的和(包括副
对角线上的元素)。
int i,j,k=0;
for(i=0;i<N;i++)
for(j=N-1-i;j<N;j++)
k=k+a[i][j];
return(k);
11、用函数求fibonacci数列前28项的和。 已知数列的第一项值为1,第二项值也为1,从第三项开始,每
一项均为其前面相邻两项的和。运行结果:832039
long f,k=f1+f2;
int i;
for(i=3;i<=28;i++)
{f=f1+f2;
k=k+f;
f1=f2;
f2=f;}
return(k);
12、编写函数用选择排序法对数组中的数据进行从小到大的排序。
int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j]) k=j;
if(k!=i)
{t=a[i];
a[i]=a[k];
a[k]=t;
} }
13、编写函数用冒泡排序法对数组中的数据进行从小到大的排序。
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
14、给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。
int i,k;
k=0;
for(i=1;i<n;i++)
if(s[i]>s[k]) k=i;
return(k);
15、用辗转相除法求两个整数的最大公约数。
int r,t;
if(n<m) { t=n;n=m;m=t;}
r=n%m;
while(r!=0)
{ n=m;m=r;r=n%m;}
return(m);
16、求字符ch在字符串s中出现的所有位置。(用一个新生成的数组来表示出现的所有位置)
int i,j=0;
for(i=0;s[i]!=‘\0’;i++)
if(s[i]==ch) a[j++]=i;
return(j);
17、用函数求N个[10,60]上的整数中能被5整除的最大的数, 如存在则返回这个最大值,如果不存在则返
int i;
for(i=0;i<n;i++)
if(arr[i]%5 == 0 && arr[i]>m)
m=arr[i];
18、求一批数中最大值和最小值的差。
int i,max,min;
max=min=a[0];
for(i=1;i<n;i++)
if(a[i]>max) max=a[i];
else if(a[i]<min) min=a[i];
return(max-min);
19、编写函数求1~100(闭区间)中奇数的平方和。结果为166650。
float s=0;
int i,j;
for(i=1;i<=n;i=i+2)
s=s+ii;
return(s);
20、将字符串中的小写字母转换为对应的大写字母,其它字符不变。
int i;
for(i=0;str[i]!=‘\0’;i++)
if(str[i]>=‘a’&& str[i]<=‘z’)
str[i]=str[i]-32;
21、编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。每一分数的分母是前两项的分母之和每一分数的分子是前两项的分子之和
int i;
float f1=1,f2=1,f3,s=0;
for(i=1;i<=n;i++)
{f3=f1+f2;
f1=f2;
f2=f3;
s=s+f2/f1; }
return s;
22、求一批数中最大值和最小值的积。
int i,max,min;
max=min=a[0];
for(i=1;i<n;i++)
if(a[i]>max) max=a[i];
else if(a[i]<min) min=a[i];
return(max
min);
23、编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中
输出排序结果。
int k,j,t;
for (k=0;k<n-1;k++)
for (j=k+1;j<n;j++)
if (array[k]<array[j])
{t=array[k];
array[k]=array[j];
array[j]=t;}
23、编写函数fun将一个数组中的值按逆序存放,并在main()函数中输出。例如,原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。
int i,t;
for(i=0;i<n/2;i++)
{ t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t; }
24、函数fact(x)的功能是求x!。编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。
计算公式是:组合数=m!/(n!.(m-n)!)。
要求:m不能小于n,否则应有容错处理。
while(m<n)
{ printf(“m<n:\n”);
scanf(“%d%d”,&m); }
zhsgs=fact(m)/(fact(n)fact(m-n));
25、编写函数fun生成一个主对角线元素为1,其他元素都为0的3
3的二维数组。
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i == )
arr[i][j]=1;
else
arr[i][j]=0;
26、题目:编写函数fun,求任一整数m的n次方。
long int x=1;
int i;
for(i=1;i<=n;i++)
x=xm;
return x;
27、编写函数fun求1000以内所有7的倍数之和。
int s=0,i;
for(i=1;i<N;i++)
if(i%m == 0)
s+=i;
return s;
28、编写函数fun求sum=d+dd+ddd+……+dd…d(n个d),
其中d为1-9的数字。例如3+33+333+3333+33333(此时d=3,n=5),d和n
在主函数中输入。
long int s=0,t=0;
int i;
for(i=1;i<=n;i++)
{ t=t+d;
s=s+t;
d=d
10; }
return s;
29、请编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为:
1 2 3
4 15 6
12 18 9
10 11 2
求出的最大数为18,行坐标为2列坐标为1。
int max,i,j;
max=array [0][0];
Row=0;
Col=0;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
if(max<array [i][j])
{max=array [i][j];
Row=i;
Col=j;} }
return(max);
30、编写函数fun,函数的功能是:求1到100(包括100) 之间的偶数之积。
double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2 == 0)y*=i;
return y;
31、求一批数中大于平均值的数的个数。
int i,sum=0,k=0;
float average;
for(i=0;i<n;i++)
sum=sum+a[i];
average=sum1.0/n;
for(i=0;i<n;i++)
if(average>a[i]) k++;
return(k);
32、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。
int i,k;
k=0;
for(i=1;i<n;i++)
if(s[i]<s[k]) k=i;
return(k);
33、求n阶方阵主、副对角线上的元素之积。
int i,j;
float t=1;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i == j||i+j == N-1)
t=t
arr[i][j];
return(t);
34、求一批数中大于平均值的数的和。
int i,sum=0,k=0;
float average;
for(i=0;i<n;i++)
sum=sum+a[i];
average=sum1.0/n;
for(i=0;i<n;i++)
if(average<a[i]) k=k+a[i];
return(k);
35、编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
while(str[i+n-1])
{ str[i-1]=str[i+n-1];
i++; }
str[i-1]=‘\0’;
36、编写函数fun求图中显示的表达式的值,(1的K次方到N的K次方的累加和)。
long power,sum=0;
int i,j;
for(i=1;i<=n;i++)
{ power=i;
for(j=1;j<k;j++)
power = i;
sum += power; }
return sum;
37、函数fact(x)的功能是求x!。编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。要求:m不能小于n,否则应有容错处理。
while(m<n)
{ printf(“m<n:\n”);
scanf(“%d%d”,&m); }
zhsgs=fact(m)/(fact(n)fact(m-n));
38、编写函数fun计算下列分段函数的值:公式如图所示:
注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
float y;
if (x<0 && x!=-3.0)
y=x
x+x+6;
else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)
y=x
x-5
x+6;
else y=x*x-x-1;
return y;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锦轩韶华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值