1.程序填空题
在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <conio.h>
#include <stdio.h>
void fun(___1___,int n)
{
double count=0.0;
double average=0.0;
int i=0;
for(i=0;i<n;i++)
___2___;
average=___3___;
for(i=0;i<n;i++)
if(a[i]<average)
{
if(i%5==0)
printf("\n");
printf("%d,",a[i]);
}
}
main()
{
int a[1000];
int i=0;
printf("\nPlease enter datas(end with 0):");
do
{
scanf("%d",&a[i]);
}while(a[i++]!=0);
fun(a,i-1);
}
【答案】
(1) int a[] (2)count+=a[i]或count=count+a[i] (3)count/n
2.程序修改题
给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值:
y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)
例如:若m中的值为5,则应输出1.463611。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun(int m)
{
double y=1.0;
int I;
/**********found**********/
for(i=2;i<m;i++)
/**********found**********/
y+=1/(i*i);
return(y);
}
main()
{
int n=5;
printf("\nThe result is %lf\n", fun(n));
}
【答案】
(1)将for(i=2;i<m;i++) 改为:
for(i=2;i<=m;i++)
(2)将y+=1/(i*i); 改为:y +=1.0/(i*i);
3.程序设计题
函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG 123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应是“246”。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun(char *s, char t[])
{
}
main()
{
char s[100],t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s,t);
printf("\nThe result is: %s\n",t);
}
【答案】
void fun(char *s,char t[])
{
int k,n=0;
for(k=0;k<strlen(s);k++)
if(k%2==0 && s[k]%2==0)
t[n++]=s[k];
t[n]= '\0';
}
1.程序填空题
给定程序中,函数fun的功能是:出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 4
void fun(int(*a)[N],int *b)
{
int I,j;
for(i=0; i<N; i++)
{
/**********found**********/
b[i]=___1___;
for(j=1;j<N;j++)
/**********found**********/
if(b[i]___2___a[j][i])
b[i]= a[j][i];
}
}
main()
{
int x[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],I,j;
printf("\nThe matrix :\n");
for(i=0;i<N;i++)
{
for(j=0; j<N; j++)
printf("%4d",x[i][j]);
printf("\n");
}
/**********found**********/
fun(___3___);
printf("\nThe result is:");
for(i=0; i<N; i++) printf("%3d",y[i]);
printf("\n");
}
【答案】
(1)a[0][i] (2) <=或< (3)x, y
2.程序修改题
给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未到信息not be found!。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <string.h>
char *fun(char *s,char *t)
{
char *p,*r,*a;
/**********found**********/
a=Null;
while(*s)
{
p=s;r=t;
while(*r)
/**********found**********/
if(r==p)
{r++;p++;}
else break;
if(*r=='\0') a=s;
s++;
}
return a ;
}
main()
c语言二维数组表示方法{
char s[100],t[100],*p;
printf("\nPlease enter string S :");
scanf("%s",s);
printf("\nPlease enter substring t :");
scanf("%s",t);
p=fun(s,t);
if(p) printf("\nThe result is :%s\n",p);
else printf("\nNot found !\n");
}
【答案】
(1)将a=Null; 改为:a=NULL;
(2)将if(r==p) 改为:if(*r==*p)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论