C语言编程题题库.docx
《C语言编程题题库.docx》由会员分享,可在线阅读,更多相关《C语言编程题题库.docx(29页珍藏版)》请在冰豆网上搜索。
C语言编程题题库
1、功能:
求一个给定字符串中的字母的个数。
#include "stdio.h"
void TestFunc();
int fun(char s[])
{
/**********Begin**********/
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;
/********** End **********/
}
void main()
{
char str[]="Best wishes for you!
";
int k;
k=fun(str);
printf("k=%d\n",k);
TestFunc();
}
2、编写函数fun其功能是:
根据整型形参m,计算如下公式的值:
y=1/2!
+1/4!
+...+1/m!
(m是偶数)
#include "stdio.h"
void TestFunc();
double fun(int m)
{
/**********Begin**********/
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;
/********** End **********/
}
void main()
{
int n;
printf("Enter n:
");
scanf("%d", &n);
printf("\nThe result is %1ffun(n));
3、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。
#include "stdio.h"
void TestFunc();
int fun(int x[],int n)
{
/**********Begin**********/
intmin,i;
min=x[0];
for(i=1;i{if(x[i]returnmin;
/********** End **********/
}
void main()
{
int a[10],i,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
min=fun(a,10);
printf("%d\n",min);
TestFunc();
}
4、求一个正整数的各位数字的立方和。
#include "stdio.h"
void TestFunc();
int fun(int n)
{
/**********Begin**********/
intd,k,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
/********** End **********/
}
void main()
{
int k;
k=fun(1234);
printf("k=%d\n",k);
TestFunc();
}
愤怒◎小强,不二 16:
59:
54
5、从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如:
当s中的数为:
时,t中的数为:
642。
#include "stdio.h"
void TestFunc();
long fun (long s,long t)
{
/**********Begin**********/
longsl=10;
s/=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
/********** End **********/
}
return t;
}
void main()
{
long s, t,m;
printf("\nPlease enter s:
"); scanf("%ld", &s);
m=fun(s,t);
printf("The result is:
%ld\n", m);
TestFunc();
}
6、求一组数中大于平均值的数的个数。
例如:
给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。
#include "stdio.h"
void TestFunc();
int fun(int a[],int n)
{
/**********Begin**********/
int i,k=0;
float s=0,ave;
for(i=0;i s+=a[i];
ave=s/n;
printf("%f ",ave);
for(i=0;i if(a[i]>ave)k++;
return k;
/********** End **********/
}
void main()
{
int a[10]={1,3,6,9,4,23,35,67,12,88};
int y;
y=fun(a,10);
printf("y=%d\n",y);
TestFunc();
}
7、把20个随机数存入一个数组,然后输出该数组中的最小值。
其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。
#include "stdio.h"
#include "stdlib.h"
#define VSIZE 20
int vector[VSIZE] ;
void NONO();
int fun(int list[],int size)
{
/**********Begin**********/
int i,min=0; for(i=1; i if(list[min]>list[i])
min=i;
return min;
/********** End **********/
}
void main()
{
int i;
for (i=0;i {
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMininum:
Vector[%d]=%6d\n",i,vector[i]);
NONO();
}
8、计算并输出给定整数n的所有因子之和(不包括1与自身)。
注意:
n的值不大于1000。
例如:
n的值为12时,除了1和12外的因子有2、3、4、6,和为15,应输出15。
#include "stdio.h"
void TestFunc();
int fun(int n)
{
/**********Begin**********/
int s=0,i;
for(i=2;i if(n%i==0)s=s+i;
return s;
/********** End **********/
}
void main()
{
printf("s=%d\n",fun(855));
TestFunc();
}
9、求大于lim(lim小于100的整数)并且小于100的所有素数并放在aa数组中,该函数返回所求出素数的个数
#include
#include
#define MAX 100
void NONO();
int fun(int lim,int aa[MAX])
{
/**********Begin**********/
int n=0;
int i,j;
for(i=lim;i<=100;i++)
{for(j=2;j
if(i%j==0) break;
if(j==i) aa[n++]=i;
} return n;
/********** End **********/
}
void main()
{
int limit,i,sum;
int aa[MAX];
printf("Please Input aInteger:
");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i if(i%10==0&&i!
=0) printf("\n");
printf("%5d",aa[i]);
}
10、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和。
fun()函数的功能为求对角线元素的和。
程序中如果用到循环,必须使用for循环。
#include "stdio.h"
void TestFunc();
int fun(int a[3][3])
{
/**********Begin**********/
int sum;
int i;
sum=0;
for(i=0;i<3;i++)
sum=sum+a[i][i]*a[i][i];
return sum;
/********** End **********/
}
void main()
{
int i,j,s,a[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
s=fun(a);
printf("Sum=%d\n",s);
TestFunc();
}
11、编写程序, 使用循环将矩阵(3行3列)各元素值乘2 。
例如:
输入下面的矩阵:
100 200 300 400 500 600 700 800 900程序输出:
20040060080010001200140016001800
#include "stdio.h"
void NONO();
void fun(int array[3][3])
{
/**********Begin**********/
int i,j;
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
array[i][j]=array[i][j]*2;
/********** End **********/
}
void main()
{
int i,j;
int array[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for (i=0; i < 3; i++)
{
for (j=0; j < 3; j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Converted array:
\n");
for (i=0; i < 3; i++)
{
for (j=0; j < 3; j++)
printf("%7d",array[i][j]);
printf("\n");
}
12、把20个随机数存入一个数组,然后输出该数组中的最大值。
#include "stdio.h"
#include "stdlib.h"
#define VSIZE 20
void NONO();
int vector[VSIZE] ;
int fun(int list[],int size)
{
/**********Begin**********/
int i,max=0;
for(i=1; i if(list[max]max=i;
return max
/********** End **********/
}
void main()
{
int i;
for (i=0;i {
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMaxnum:
Vector[%d]=%6d\n",i,vector[i]);
NONO();
}
int i,max=0;
for(i=1; i if(list[max]max=i;
return max;
13、求给定正整数n以内的素数之积。
(n<28)
#include "stdio.h"
#include"conio.h"
void TestFunc();
long fun(int n)
{
/**********Begin**********/
long i,k;
long s=1;
for(i=2;i<=n;i++)
{for(k=2;k
if(i%k==0)break;
if(k==i)s=s*i;
}
return s;
/********** End **********/
}
void main()
{ int m;
printf("Enter m:
");
scanf("%d", &m);
printf("\nThe result is %ld\n", fun(m));
TestFunc();
}
14、请编一个函数:
void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
#include
#include
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{
/**********Begin**********/
int i,j;
for(j=0;j { pp[j]=tt[0][j];
for(i=1;i if(tt[i][j] pp[j]=tt[i][j];}
/********** End **********/
void main()
{
int t[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
int p[N],i,j,k;
printf("The original data is:
\n");
for(i=0;i {
for(j=0;j printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nThe result is:
\n");
for(k=0;k printf("\n");
NONO();
}
15、求5行5列矩阵的主、副对角线上元素之和。
注意,两条对角线相交的元素只加一次。
例如:
主函数中给出的矩阵的两条对角线的和为45。
#include "stdio.h"
#define M 5
void TestFunc();
int fun(int a[M][M])
{
/**********Begin**********/
int s=0;
int i,j;
for(i=0;i s=s+a[i][i]+a[i][M-1-i];
s=s-a[(M-1)/2][(M-1)/2];
return s;
/********** End **********/
}
void main()
{
int a[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}};
int y;
y=fun(a);
printf("s=%d\n",y);
TestFunc();
}
16、编写程序求无理数e的值并输出。
计算公式为:
e=1+1/1!
+1/2!
+1/3!
+......+1/n!
当1/n!
<0.时e=2.。
#include "stdio.h"
void TestFunc();
float fun()
{
/**********Begin**********/
long int j;
int i,k;
float e,jc;
i=1;
e=0.0;
jc=1.0;
while(jc>=0.)
{
e=e+jc;
j=1;
for(k=1;k<=i;k++)
j=j*k;
jc=1.0/j;
i++;
}
return e;
/********** End **********/
}
void main()
{
float fun();
printf("无理数e的值是:
%f\n",fun());
TestFunc();
}
17、用函数求fibonacci数列前28项的和。
程序中如果用到循环,必须使用for循环。
说明:
fibonacci数列为数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和。
运行结果:
。
#include "stdio.h"
void TestFunc();
long sum(long f1,long f2)
{
/**********Begin**********/
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);
/********** End **********/
}
void main()
{ long int f1=1,f2=1;
printf("sum=%ld\n",sum(f1,f2));
TestFunc();
}
18、编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0。
调用该函数求出15~300之间能同时被3和5整除的数的个数。
#include "stdio.h"
void TestFunc();
int sum(int n)
{ /**********Begin**********/
if(n%3==0&&n%5==0) return
(1);
return(0);
/********** End **********/
}
void main()
{ int i,s=0;
for(i=15;i<=300;i++)
if(sum(i)==1) s=s+1;
printf("s=%d\n",s);
TestFunc();
}
19、根据整型形参m,计算如下公式的值:
y=1/2+1/4+1/6+...+1/2m 。
程序中如果用到循环,必须使用for循环。
例如:
若m=9,则应输出:
1.
#include "stdio.h"
void TestFunc();
double fun(int m)
{ /**********Begin**********/
double y=0;
int i;
for(i=1; i<=m; i++)
{y+=1.0/(2*i); }
return(y);
/********** End **********/
}
void main()
{ int n;
printf("Enter n:
");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n));
TestFunc();
}
20、求1到w之间的奇数之和。
(w是大于等于100小于等于1000的整数)。
#include "stdio.h"
#include"conio.h"
void TestFunc();
long fun(int w)
{/**********Begin**********/
long y=0;
int i;
for(i=1;i<=w;i++)
if(i%2==1)