北华大学C语言编程题库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22题目:从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main 函数中输出。
请编写fun函数。
/**********Program**********/
intmin,i;
min=x[0];
for(i=1;i<n;i++)
{if(x[i]<min) min=x[i];}
return min;
/********** End **********/
23题目:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。
例如:7是素数,8不是素数。
请编写fun函数。
素数是仅能被1和自身整除的数
/**********Program**********/
inti;
int j;
j= 1;
for(i=2;i<n;i++)
{if(n%i==0) j= 0;}
return j;
/********** End **********/
29题目:请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最高分以及得最高分的人数。
/**********Program**********/
inti;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);
/********** End **********/
40题目:请编写函数fun,它的功能是:判断m是否为素数。
主函数的功能是:求出100到200之间的素数的
个数。
/**********Program**********/
inti,k=1;
if(m<=1) k=0;
for(i=2;i<m;i++)
if(m%i==0) k=0;
return k;
/********** End **********/
47.题目:编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。
规定
n的值不大于1000。
/**********Program**********/
int s=0,i;
for(i=2;i<n;i++)
if(n%i==0)s=s+i;
return s;
/********** End **********/
52.题目:编写函数fun,函数的功能是:求给定正整数m(包括m)
以内的素数之和。
/**********Program**********/
inti,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;
/********** End **********
53.题目:编写函数fun,函数的功能是:求一个给定字符串
中的字母的个数。
/**********Program**********/
inti,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;
/********** End **********/
62.题目:编写函数fun,函数的功能是:找出一批正整数中的最大的偶数。
/**********Program**********/
inti,amax=-1;
for(i=0;i<n;i++)
if(a[i]%2==0)
if (a[i]>amax) amax=a[i];
returnamax;
/********** End **********/
126.题目:用函数将两个字符串连接起来,不允许使用strcat函数。
/**********Program**********/
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';
/********** End **********/
127.题目:用函数将一个N阶方阵进行转置,输入输出在主函数中实现。
/**********Program**********/
inti,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;}
/********** End **********/
128.题目:用函数求一个N阶方阵右下三角元素的和(包括副
对角线上的元素)。
/**********Program**********/
inti,j,k=0;
for(i=0;i<N;i++)
for(j=N-1-i;j<N;j++)
k=k+a[i][j];
return(k);
/********** End **********/
159.题目:用函数求fibonacci数列前28项的和。
已知数列的第一项值为1,第二项值也为1,从第三项开始,每
一项均为其前面相邻两项的和。
运行结果:832039
/**********Program**********/
longf,k=f1+f2;
inti;
for(i=3;i<=28;i++)
{f=f1+f2;
k=k+f;
f1=f2;
f2=f;
}
return(k);
/********** End **********/
177题目:编写函数用选择排序法对数组中的数据进行从小到大的排序。
/**********Program**********/
inti,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;
}
}
/********** End **********/
214.题目:编写函数用冒泡排序法对数组中的数据进行从小到大的排序。
/**********Program**********/
inti,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;}
/********** End **********/
217.题目: 给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。
/**********Program**********/
inti,k;
k=0;
for(i=1;i<n;i++)
if(s[i]>s[k]) k=i;
return(k);
/********** End **********/
219.题目: 用辗转相除法求两个整数的最大公约数。
/**********Program**********/
intr,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);
/********** End **********/
223.题目:求字符ch在字符串s中出现的所有位置。
(用一个新生成的数组来表示出现的所有位置)
/**********Program**********/
inti,j=0;
for(i=0;s[i]!='\0';i++)
if(s[i]==ch) a[j++]=i;
return(j);
/********** End **********/
257.题目:用函数求N个[10,60]上的整数中能被5整除的最大的数, 如存在则返回这个最大值,如果不存在则返
回0。
.
/**********Program**********/
inti;
for(i=0;i<n;i++)
if(arr[i]%5==0 &&arr[i]>m)
m=arr[i];
/********** End **********/
258.题目:求一批数中最大值和最小值的差。
/**********Program**********/
inti,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);
/********** End **********/
262.题目:编写函数求1~100(闭区间)中奇数的平方和。
结果为166650。
/**********Program**********/
float s=0;
inti,j;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);
/********** End **********/
263.题目:将字符串中的小写字母转换为对应的大写字母,其它字符不变。
/**********Program**********/
inti;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
/********** End **********/
264.题目:编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和每一分数的分子是前两项的分子之和/**********Program**********/
inti;
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;
/********** End **********/
265.题目:求一批数中最大值和最小值的积。
/**********Program**********/
inti,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);
/********** End **********/
270.题目:编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中
输出排序结果。
/**********Program**********/
intk,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;}
/********** End **********/
271.题目:编写函数fun将一个数组中的值按逆序存放,并在main()函数中输出。
例如,原来存顺序为8,6,5,4,1。
要求改为:1,4,5,6,8。
/**********Program**********/
inti,t;
for(i=0;i<n/2;i++)
{ t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
/********** End **********/
275.题目:函数fact(x)的功能是求x!。
编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。
计算公式是:组合数=m!/(n!.(m-n)!)。
要求:m不能小于n,否则应有容错处理。
/**********Program**********/
while(m<n)
{
printf("m<n:\n");
scanf("%d%d",&m);
}
zhsgs=fact(m)/(fact(n)*fact(m-n));
/********** End **********/
277题目:编写函数fun生成一个主对角线元素为1,其他元素都为0的3*3的二维数组。
/**********Program**********/
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
arr[i][j]=1;
else
arr[i][j]=0;
/********** End **********/
278.题目:编写函数fun,求任一整数m的n次方。
/**********Program**********/
longint x=1;
inti;
for(i=1;i<=n;i++)
x=x*m;
return x;
/********** End **********/
282.题目:编写函数fun求1000以内所有7的倍数之和。
/**********Program**********/
int s=0,i;
for(i=1;i<N;i++)
if(i%m==0)
s+=i;
return s;
/********** End **********/
284.题目:编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),
其中d为1-9的数字。
例如3+33+333+3333+33333(此时d=3,n=5),d和n
在主函数中输入。
/**********Program**********/
longint s=0,t=0;
inti;
for(i=1;i<=n;i++)
{ t=t+d;
s=s+t;
d=d*10;
}
return s;
/********** End **********/
【程序设计】033
题目:请编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为:
1 2 3
4 1
5 6
12 18 9
10 11 2
求出的最大数为18,行坐标为2列坐标为1。
/*************Program***************/
intmax,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);
/************* End ***************/
【程序设计】56
题目:编写函数fun,函数的功能是:求1到100(包括100) 之间的偶数之积。
**************Program*************/
double y=1;
inti;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
【程序设计】221
题目:求一批数中大于平均值的数的个数。
/**************Program**************/
inti,sum=0,k=0;
float average;
for(i=0;i<n;i++)
sum=sum+a[i];
average=sum*1.0/n;
for(i=0;i<n;i++)
if(average>a[i]) k++;
return(k);
/************** End
【程序设计】226
题目: 给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。
/**************Program**************/
inti,k;
k=0;
for(i=1;i<n;i++)
if(s[i]<s[k]) k=i;
return(k);
/************** End ********
【程序设计】266
题目:编写函数求3!+6!+9!+12!+15!+18!+21!。
/**************Program**************/
/************** End
【程序设计】268
题目:求n阶方阵主、副对角线上的元素之积。
/**************Program**************/
inti,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);
/************** End
【程序设计】269
题目:求一批数中大于平均值的数的和。
/**************Program**************/
inti,sum=0,k=0;
float average;
for(i=0;i<n;i++)
sum=sum+a[i];
average=sum*1.0/n;
for(i=0;i<n;i++)
if(average<a[i]) k=k+a[i];
return(k);
/************** End
【程序设计】272
题目:编写函数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';
【程序设计】273
题目:编写函数fun求图中显示的表达式的值,(1的K次方到N的K次方的累加和)。
/**************Program*************/
longpower,sum=0;
inti,j;
for(i=1;i<=n;i++)
{ power=i;
for(j=1;j<k;j++)
power *= i;
sum += power;
}
return sum;
【程序设计】269
题目:函数fact(x)的功能是求x!。
编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。
计算公式是:组合数=m!/(n!.(m-n)!)。
要求:m不能小于n,否则应有容错处理。
/**************Program**************/
while(m<n)
{
printf("m<n:\n");
scanf("%d%d",&m);
}
zhsgs=fact(m)/(fact(n)*fact(m-n));
【程序设计】281
*题目:编写函数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;
/************** End *************/}。