当前位置:文档之家› C语言题库答案

C语言题库答案

1.给定N个数据,求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)

int i,k;
k=0;
for(i=1;iif(s[i]return(k);
最大值 第三行 i<=n 五行 k+1
-----------------------------------------
2.编写程序求无理数e的值并输出。计算公式为:
e=1+1/1!+1/2!+1/3!+......1/n!
当1/n!<0.000001 时 e=2.718282

long int j;
int i,k;
float e,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++;
}
return e;
-----------------------------------------
3.求一批数中最大值和最小值的积。
int i,max,min;
max=min=a[0];
for(i=1;1if(a[i]>max) max=a[i];
else if(a[i]return(max*min);
-----------------------------------------
4.某一正数的值保留2位小数,对第三位进行四舍五入。
int i;
i=(int)(h*1000)%10;
if(i>=5)
return(int)(h*100+1)/100.0;
else
return(int)(h*100)/100.0;
-----------------------------------------
5.从键盘上输入任意实数x,求出其所对应的函数值
z=(x-4)的二次幂
z=x的八次幂(x>-4)
z=4/(x*(x+1))(x>-10)
z=|x|+20(其他)

答案:
float z;
if(x>4) z=(x-4)*(x-4);
else if(x-4) z=pow(x,8);
else if(x>-10) z=4/(x*(x+1));
else z=fabs(x)+20;
return(z);
-----------------------------------------
6.求出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{for(j=0;jif(max{max=array[i][j];
Row=i;
Col=j;}
}
return(max);
-----------------------------------------
7.求一个n位自然数的各位数字的积。(n是小于10的自然数)

long d,s=1;
while (n>0)
{d=n%10;
s*=d;
n/=10;
}
return s;
-----------------------------------------
8.计算n门课程的平均值,计算结果作为函数值返回。
例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998

int i;
float y=0;
for(i=0;iy+=a[i];
y=y/n;
return y;
-----------------------------------------
9.求一批数中小于平均值的个数。

int i,sum=0,k=0;
float average;
for(i=0;isum=sum+a[i];
average=sum*1.0/n;
for(i=0;iif(average>a[i]) k++;
return(k);
-----------------------------------------
10.编写函数判断一个整数m的个位数字之和能否被7整除,可以被7整除则返回1,否则返回0.调用该函数找出100~200之间满足条件的所有数。

int k,s=0;
do
{s=s+m%10;
m=m/10;
}while(m!=0);
if(s%7==0)k=1;
else k=0;
return(k);
-----------------------------------------
11.请编一个函数void

fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

int i,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]>pp[j])
pp[j]=tt[i][j];
}
-----------------------------------------
12.编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。

int k,j,t;
for (k=0;kfor (j=k+1;jif (array[k]{
t=array[k];
array[k]=array[j];
array[j]=t;
}
-----------------------------------------
13.编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。计算公式是:组合数=m!/(n!(m-n)!)。
要求:m不能小于n,否则应有容错处理。
说明:函数fact(x)的功能是求x!
while (m{
printf("m和n输入错!请重新输入:/n");
scanf("%d%d",&m,&n);
}
zhsgs=fact(m)/(fact(n)*fact(m-n));
-----------------------------------------
14.找出一批正整数中的最大的偶数。
int i,amax=a[0] ;
for(i=0;iif(a[i]%2==0)
if(a[i]>amax) amax=a[i];
return amax;
-----------------------------------------
15.实现两个整数的交换。
例如:给a和b分别输入:60和65,输出为:a=65 b=60

int t;
t=*a; *a=*b;*b=t;
-----------------------------------------
16.将字符串中的小写字母转换为对应的大写字母,其他字符不变。

int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a' && str[i]<='z')
str[i]=str[i]-32;
-----------------------------------------
17.求一个四位数的各位数字的立方和。

int d,k,s=0;
while (n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
return s;
-----------------------------------------
18.求一组数中大于平均值的数的个数。
例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3.

int i,k=0;
float s=0,ave;
for(i=0;is+=a[i];
ave=s/n;
printf("%f",ave);
for(i=0;iif(a[i]>ave)k++;
reeturn k;
-----------------------------------------
19.对任意数的x,用下式计算并输出y的值。
5 x<10
y=0 x=10
-5 x>10
答案:
int m;
if(n>=10)
m=-5;
else m=0;
else m=5;
return m;
-----------------------------------------
20.求给定正整数m以内的素数之和。
答案:
int i,k,s=0;
for(i=2;i<=m;i++)
{for (k=2;kif(i%k==0)break;
if(k==i)s=s+i;
}
return s;
-----------------------------------------
21.判断整数x是否是同构数。.........要求不大于100

int k;
k=x*x;
if ((k%10==x)||(k%100==x))
return 1;
else
return 0;
--------------------------------------------------
22.用函数求N个[10,60]上的整数中被5整除。。。。。

int i;
for

(i=0;iif (arr[i]%5==0 && arr[i]>m)
m=arr[i];
--------------------------------------------------
23.编写函数fun求sum=d+dd+ddd+...............

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;
--------------------------------------------------
24.编写函数fun将一个数组中的值按逆序存放。。。。。。

int i,t;
for(i=0;i{ t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
--------------------------------------------------
25.对长度为8个字符的字符串.........将序排列

int i,j;
char t;
for(i=0;ifor(j=i+1;jif(s[i]{ t=s[i];s[i]=s[j];s[j]=t;}
--------------------------------------------------
26.根据整数参数n,计算如图公式的值

float a=1;int i;
for(i=1;ia=1.0/(1+a);
return a;
--------------------------------------------------
27.键盘上输入一个3行3列矩阵。。。。。。。。。。。。并在fun()函数中输出

int sum;
int i,j;
sum=1;
for(i=0;i<3;i++)
sum=sum*a[i][i];
return sum;
--------------------------------------------------
28.编写函数fun(str,i,n),..........连续n个字符

while (str[i+n-1])
{
str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
--------------------------------------------------
29.统计出若干个学生的平均成绩,最高分。。。人数

int i;float sum=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);
--------------------------------------------------
30.编写程序,实现矩阵(3行3列)的转置

int i,j,t;
for(i=0;i<3;i++)
for(j=0;j{ t=array[j][i];
array[i][j]=array[j][i];
array[j][i]=t;}
--------------------------------------------------
31.用函数实现字符串的复制........

int i;
for(i=0;str1[i]!='\0';i++)
str2[i]=str1[i];
str2[i]='\0';
--------------------------------------------------
32.从键盘为一维整型数组输入10个整数,。。。。。。

int min,i;
min=x[0];
for(i=1;i{if(x[i]return min;
--------------------------------------------------
33.用do-while语句求1-100的累积和

int i=1,sum=0;
do
{sum=sum+i;
i++;
}while(i<=n);
return sum;
--------------------------------------------------
34.编写函数求1-100奇数的平方和

float s=0;
int i,j;
for(i=1;is=s+i*i;
return(s);
--------------------------------------------------
35.计算并输出给定整数的所有因子之积。。。。不大于50

long s=1,i;
for(i=2;i<=n;i++)
if(n%i==0)s=s*i;
return s;
--------------------------------------------------
36.求1-100之间的偶数之积
double y=1;
int i;
for(i=1;i<=m;i++)
if(n%2==0)y*=i;
return y;
--------------------------------------------------
37.编写函数球表达式的和(n的值。。。。)
1-1/2......

float s=0;
int i,k=1;
for(i=1;1<=n;i++

)
{ s=s+k*1.0/i;
k=-k;
return(s);
--------------------------------------------------
38.产生20个[30,120]...............

int i,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);
--------------------------------------------------
39.能计算从1开始到n的自然数的和,。。。。。。。。。。

int sum,i;
sum=0;
for(i=1;1<=n;i++)
{sum=sum+i;}
return(sum);
当N为偶数第三行i=2i=i+2
第四行i*i
--------------------------------------------------
41.计算出k以内最大的10个能被13或17.。。。。。。

int a=0,b=0,j;
while((k>=2)&&(b<10))
{if((k%13==0)||(k%17==0))
{a=a+k;b++;}
k--;
}
return a;
--------------------------------------------------
42.判断一个整数w的各位数字平方之后。。被5整除


int k,s=0;
do
{s=s+(w%10)*(w%10);
w=w/10;
}while(w!=0);
if(s%5==0)k=1;
else k=0;
return(k);
--------------------------------------------------
43.从低位开始取出长整型变量s奇数。。。。。。。

long s1=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*s1+t;
sl=s1*10;

如果为642,在第二行加,s/=10;
--------------------------------------------------
44.求大于lim(小于100的整数)并且小于100的所.............

int n=0;
int i,j;
for(i=lim;i<=100;i++)
{for(j=2;jif(i%j==0) break;
if(j==i) aa[n++]=i;
}
return n;
--------------------------------------------------
45.求一批数中最大值和最小值的差
int i,maxmin;
mac=min=a[0];
for(i=1;iif(a[i]>max) max=a[i];
else if(a[i]return(max-min);
--------------------------------------------------
46.求出斐波那契数列的前一项与后一项之比的极限的近似值.
int i,j;
float f1=1 f2=1,f3;
float r1=2,r2;
do
{ r2=r1;
r1=f1/f2;
f3=f1+f2;
f1=f2;
f2=f3;
}
while(fabs(r1-r2)>1e-4);
return r1;
--------------------------------------------------
47.将两个两位数的正整数,a,b合并形成一个整数放在c中。
*c=a/10=a%10*100+b/10*10+b%10*1000;
--------------------------------------------------
48.编写函数判断一个整数m的各位数字之和能否被7整除,可以返回1,否则返回0。调用改函数找出100-200之间满足条件的所有数。
int k,s=0;
do
{ s=s+m%10;
m=m/10;}
while (m!=0);
if(s%7==0)k=1;
else k=0;
return(k);
--------------------------------------------------
49.判断m是否为素数
int i,k=1;
if(m<=1) k=0;
for(i=2;iif(m%i==0) k=0;
return k;
--------------------------------------------------
50.给定n个数据,求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。

int i,k;
k=0;
for(i=1;iif(s[i]return k;
--------------------------------------------------
51.

求出二维数组周边元素之和,作为函数值返回,二维数组的值在主函数中赋予。

int s=0;
int i,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];
return s;
--------------------------------------------------
52.编写函数实现两个数据的交换,在主函数输入任意3个数据,调用函数对着三个数据从大到小排序。

int k;
k=*a;
*a=*b;
*b=k;
--------------------------------------------------
53.编写一个函数判断一个整数能否同时被3和5整除 若能返回1,否则返回0.

if (n%3==0&&n%5==0) return (1);
return (0);
--------------------------------------------------
54.编写函数fun,求任一整数m的n次方

long int x=1;
int i;
for(i=1;i<=n;i++)
x=x*m;
return x;
--------------------------------------------------
55.从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。

int i;
int j;
j=1;
for(i=2;i{ if(n%i==0) j=0;

}
return j;
--------------------------------------------------
56.用辗转相除法求两个整数的最大公约数。

int r,t;
if(nr=n%m;
while (r!=0)
{ n=m;m=r;r=n%m;}
return (m);
--------------------------------------------------
57.求一批数中小雨平均值的数的个数。

double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0) y*=i;
return y;
--------------------------------------------------
58.编写函数用选择排序法对数组中的数据进行从小到大的排序。

int i,j,k,t;
for(i=0;i{ k=i;
for(j=i+1;jif (a[k]>a[j]) k=j;
if(k!=i)
{ t=a[i];
a[i]=a[k];
a[k]=t;
}
}
--------------------------------------------------
59.从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。

int min,i;
min=x[0];
for(i=1;i{ if(x[i]min=x[i];

}
return min;
--------------------------------------------------
60.从键盘上输入 的每个单词的第一个字母转换为大写字母,输入各个单词必须用空格隔开,用‘.’结束输入。

if(*c==' ') return 1;
else
{
if (status && *c<=' z' && *c >=' a')
*c +=' A'-' a';
return 0;

}
--------------------------------------------------
61. 编写函数fun求1!+2!+3!+···+n!的和,在main函数中由键盘输入n值,丙输出运算结果。

int i;
float f=1,s=0;
for(i=1;i<=n;i++)
{ f=f*i;
s=s+f;
}
return s;
--------------------------------------------------
62.根据整型形参m,计算如下公式的值:y=sin(m)*10。

double y=0;
y=sin(m)*10;
return y;
--------------------------------------------------
63.求一个大于10的n位整数的n-1位的数,并作为函数值

返回

int n=0;
int i=1;
while( w>10)
{ n=n+i*(w%10);
w/=10;
i*=10;

}
return n;
--------------------------------------------------
64.求给定正整数m以内的素数之和。

int i,k,s=0;
for(i=2,i<=m;i++)
{ for(k=2;kif(i%k==0) break;
if(k==i) s=s+i;
}

return s;
--------------------------------------------------
65.求给定正整数n以内的素数之和。(n<28)

long i,k;
long s=1;
for(i=2;i<=n;i++)
{ for(k=2;kif(i%k==0) break;
if(k==i) s=s*i
}
return s;
--------------------------------------------------
66.求一个给定字符串中的字母个数。
答案:
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;
-----------------------------------------
68.编写程序,求矩阵(3行3列)与2的乘积
答案:
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
array[i][j]=array[i][j]*2;
-----------------------------------------
69.编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。
答案:
int k,j,t;
for (k=0;kfor(j=k+1;jif (array[k]{
t=array[k];
array[k]=array[j];
array[j]=t;
}
-----------------------------------------
70.编写函数fun计算下列分段函数的值:
x^2+x+6 x<0且x不等于-3
f(x)=x^2-5x+6 0=x^2-x-1 其它
答案:
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;
-----------------------------------------
71.用函数将第二个串连接到第一个串之后,不允许使用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';
-----------------------------------------
72.求一组数中大于平均值得数的个数。
答案:
int i;k=0;
float s=0,ave;
for(i=0;is+=a[i];
ave=s/n;
printf("%f",ave);
for(i=0;iif(a[i]>ave)k++;
return k;
-----------------------------------------
73.编写函数用冒泡排序法对数组中的数据进行从小到大的排序。
答案:
int i,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;
}
-----------------------------------------
74.将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位数和个位数一次放在c数的千位和十位上,b数的十位和个位数依次放在c数的千位和百位上。
答案:*c=a/10*1000+a%10*10+b/10+b%10*100;
-----------------------------------------
75.对某一正数的值保留2位小数,并对第三位进行四舍五入。
答案:
int i;
i=(int)(h*1000)%10;
if(i>=5)
return(int)(h*100+1)/100.0;


else
return(int)(h*100)/100.0;
-----------------------------------------
79.找出一个大于给定整数且紧随这个正数的素数,并作为函数的值返回。
答案:
int i,k;
for(i=n+1;;i++)
{for(k=2;kif(i%k==0)
break;
if(k==i)
return(i);
}
-----------------------------------------
80.用函数求fibonacci数列前n项和。
答案:
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);
-----------------------------------------
81.删除所有值为y的元素。数组元素中的值和y的值由主函数通过键盘输入
答案:
int i,j;
for(i=0;i<*n;)
{
if(bb[i]==y)
{
for(j=i;j<*n;j++)
bb[j]=bb[j+1];
*n=*n-1;
}
else
i++;
}
-----------------------------------------
82.功能:求一分数序列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;
-----------------------------------------
83.功能:从键盘上输入任意实数,求出其所对应的函数值。
答案:
double z;
if(x>10)z=pow(e,x)
else if(x>-3)z=log(x+3);
else z=sin(x)/(cos(x)+4);
return(z);
-----------------------------------------
84.用函数求一个N阶方阵右下角三角元素的和(包括对角线上的元素)。
答案:
int i,j,k=0;
for(i=0;ifor(j=N-1-i;jk=k+a[i][j];
return k;
-----------------------------------------
85.功能:用函数实现字符串的复制,不允许使用strcpy()函数。
答案:
int i;
for(i=0;str[i]!='\0';i++)
str2[i]=str1[i];
str2[i]='\0'
-----------------------------------------
86.功能:将字符串中的小写字母转换为对应的大写字母,其他字符不变。
答案:
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32
-----------------------------------------
87.功能:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+...+1/m!(m是偶数)
答案:
int i,j;
double s=1;
for(i=2;i<=m;i+=2)
{for(j=i-1;j<=i;j++)
s=s*j;
y=y+1.0/s;
}
return y;
-----------------------------------------
88.功能:能计算从1开始到n的自然数中偶数的平方和,n由键盘输入,并在main()函数中输出。(n是偶数)
答案:
int sum,i;
sum=0;
for(i=2;i<=n;i=i+2)
{sum=sum+i*i;}
return (sum);
-----------------------------------------
89.功能:根据整型形参m,计算如下公式的值:y=1/5+1/6+1/7+1/8+1/9+1/10+...+1/(m+5)
答案:
double y=0;
int i;
for(i=0;i<=m;i++)
{y+=1.0/(i+5);}
return y;
-----------------------------------------
90.功能:编写函数fun求一个字符串的长度,在main函数中输入字符串,并输出其长度。
答案:
char *p;
int n=0;
p=p1;
while(*p++)
n++;
return n;
-----------------------------------------
-----------------------------------------
-----------------------------------------
----------

-------------------------------
-----------------------------------------

相关主题
文本预览
相关文档 最新文档