和它们类型的大小是一致的。而4个形式参数i,j,f,e的地址间隔和它们类型的大小不一致,试分析不一致的原因。
运行结果为:
第1题
[函数2.1说明]
将一个正整数分解质因数。例如:输入90,打印出90=2×3×3×5。
[函数2.1]
fun 1 ( int n )
{
int i;
for ( i=2;i<=n; i++)
{
while (((1))
{
if (n %i==0 )
{ printf ( "%d*",i );
(2)
}
else
break;
}
}
printf ( "%d",n ) ;}
[函数2.2说明]
下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第3、第4、第5只猴子都是这样做的,问海滩上原来最少有多少个桃子?
[函数2.2]
main ( )
{int i, m, j, k, count;
for ( i=4;i<10000;i+=4 )
{ count=0;
(3);
for ( k=0;k<5;k++ )
{
(4);
i=j;
if ( j%4==0 )
(5);
else
break;
}
i=m;
if ( count==4 )
{printf ( "%d\n", count) ;
break;}
}
}
第2题
例如,字符串中的内容为:******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为;*******A*BC*DEF*G****。n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容。仅在函数fun的花括号中填入你编写的若干语句。
第3题
有下列程序:
int fun(int x[],int n)
{ static int sum=0,i:
for(i=0;i<n;i++) sum+=x[i];
return sum;
}
main
{ int a[]={1,2,3,4,5),b[]={6,7,8,9),s=0:
s=fun(a,5)+fun(b,4);printf("%d\n",s):
}
程序执行后的输出结果是( )。
A.45
B.50
C.60
D.55
【我提交的答案】: A |
【参考答案与解析】: 正确答案:C |
在函数int fun(int xE],int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x[],int n)的功能是求出数组X[]各个元素的和,所以在j三函数中,调用函数fun(a,5)后,变量sum =1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum= 15+6+7+8+9=45,所以S=l5+45=60。
两个Fun函数中sum值为什么是一样的啊?不是每一次调用的时候都对Sum初始化了吗?
第4题
【函数2.1说明】
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
【函数2.1】
Fun1 (int n)
{
int i;
for(i=2;i<=n;i++)
{
while ((1))
{
if (n%i==0)
{
printf("%d*",i);
(2);
}
else
break;
}
}
printf("%d",\n);
}
【函数2.2说明】
下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第 3、4、5只猴子都是这样做的,问海滩上原来最少有多少个猴子?
【函数2.2】
main()
{
int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{
count=0;
(3);
for(k=0;k<5;k++)
{
(4);
i=j;
if(j%4==0)
(5);
else
break;
}
i=m;
if(count==4)
{
printf("%d\n",count);
break;
}
}
}
第5题
有下列程序:
int fun(int x[],int n)
{ static int sum=0,i;
for(i=0;i<n;i++)
sum+=x[i];
return sum;}
main
{ int a[]={1,2,3,4,5),b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf("%d\n",s);}
程序执行后的输出结果是( )。
A.45
B.50
C.60
D.55
【我提交的答案】: |
【参考答案与解析】: 正确答案:C |
在函数int fun(int xE],int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x[],int n)的功能是求出数组X[]各个元素的和,所以在j三函数中,调用函数fun(a,5)后,变量sum =1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum= 15+6+7+8+9=45,所以S=l5+45=60。
#include<stdio.h>
int fun(int x[],int n)
{
static int sum=0,i;
for(i=0;i<n;i++)
sum+=x[i];
return sum;
}
void main()
{
int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf("%d\n",s);
}
第6题
例如,字符串中的内容为****A*BC*DEF*G*******,若 n的值为2,删除后,字符串中的内容则应当是 **A*BC*DEF*G*******;若n的值为4,则字符串中的内容仍为****A*BC*DEF*G******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序:
include <stdio.h>
include <conio.h>
void fun (char Aa, int n)
{
}
main ()
{ char s[81];int n;
printf ("Enter a string : \n") ;gets (s);
printf ("Enter n : "); scanf ("%d", &n);
fun( s,n );
printf("The string after deleted :\n");
puts (s);
}
第7题
有以下程序
#include<stdio.h>
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{int t,i,j;
for(i=0;i<n-1;j++)
for(j=i+l;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main
{int c[10]={1,2,3,4,5,6,7,8,9,0),i;
fun(c+4,6);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序运行的结果是( )。
A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
【我提交的答案】: C |
【参考答案与解析】: 正确答案:D |
fun函数的功能是对数组a[]的元素从大到小进行排序。
有以下程序#includevoid fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/{int t,i,j;for(i=0;ifor(j=i+l;jif(a[i]}main{int c[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是( )。A.1,2,3,4,5,6,7,8,9,0,B.0,9,8,7,6,5,1,2,3,4,C.0,9,8,7,6,5,4,3,2,1,D.1,2,3,4,9,8,7,6,5,0, 答案为什么选D
第8题
有以下程序
#include<stdio.h>
int fun(char s[])
{int n=0;
while(*s<='9'&&*s>='0'){n=10*n+*s-'o';s++;)
return(n);
}
main
{char s[10]={'6','1','*','4','*','9','*',' 0','*');
printf("%d",fun(s));
}
程序运行的结果是( )。
A.9
B.61490
C.61
D.5
【我提交的答案】: |
【参考答案与解析】: 正确答案:C |
在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。
第9题
有以下程序
#include<stdio.h>
int fun(char s[])
{int n=0;
while(*s<='9'&&*s>='0'){n=10*n+*s-'o';s++;)
return(n);
}
main
{char s[10]={'6','1','*','4','*','9','*',' 0','*');
printf("%d",fun(s));
}
程序运行的结果是( )。
A.9
B.61490
C.61
D.5
【我提交的答案】: B |
【参考答案与解析】: 正确答案:C |
在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。
为什么后面的数字不输出了呢?
第10题
有以下程序
#include<stdio.h>
#define N 4
void fun(int a[][N],int b[])
{ int i;
for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];
}
main()
{ int x[N][N]:{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;
fun(x,y);
for(i=0;i<N;i++) prinff("%d,",y[i]);printf("\n");
}
程序运行后的输出结果是A.-12,-3,0,0,
B.-3,-1,1,3,
C.0,1,2,3,
D.-3,-3,-3,-3,
【我提交的答案】: A |
【参考答案与解析】: 正确答案:B |
解析:从程序中看出,执行函数fun时,当i从0到3时,a[i][i]分别为1、6、11、16,a[i][N-1-i]分别为4、7、10、13,y[i]的值分别为两个数组对应值相减,所以答案为B)。
完全不懂
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!