求助几道c语言的填空题谢谢半忙

1下面程序的功能是多次输入x与y的值,并求x与y之积,请填空完善程序。intmul(inta,intb){;c=a+b;;}voidmain(){intx,y,z;sca... 1下面程序的功能是多次输入x与y的值,并求x与y之积,请填空完善程序。
int mul(int a,int b)
{ ;c=a+b;
;
}
void main()
{ int x,y,z;
scanf("%d%d",&x,&y);
while(x!=0)
{ z=mul(x,y);
printf("%d*%d=%d",x,y,z);
;
}
}
2以下程序打印如下图案,程序运行后,输入4给变量n,请填空。
*
* * *
* * * * *
* * * * * * *
#include<stdio.h>
#define S ' '
void main()
{ int n,i,j;
printf("Enter n:");scanf("%d",&n);
for(i=1;i<=n;i++)
{ for(j=1; ;j++)putchar(S);
for(j=1; ;j++)putchar('*');
;
}
}
3以下函数返回a所指数组中最小的值所在的下标值,请把程序补充完整。
fun(int , int n)
{int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])_ _ ___;
return(p);
}

4、以下程序段给数组所有的元素输入数据,输出所有元素之和。请将正确答案填入。
#include<stdio.h>
main()
{ int a[10],i=0,s=0;
while(i<10)
{ scanf("%d", ;
s=s+a[i];
;
}
printf("%d",s);
}
5、 下面程序用于计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请填空完善函数。
#include<stdio.h>
void main()
{ int total,sum,m,n;
;
for(m=1;m<=10;m++)
{ sum=0;
for(n=1;n<=m;n++)
sum=sum+n;
total= ;
}
printf("total=%d\n",total);
}
6以下程序的功能是:键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成
绩,当输入负数时结束输入.请填空.
main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while( )
{ if(x>amax) amax=x;
if( ) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
7下面程序将一个已知字符串第n个字符开始的剩余字符复制到另一个字符串中。请填空完善程序。
#include"string.h"
#include<stdio.h>
main()
{char a[80],b[80],*p,*q;
int n,k;
gets(a); scanf("%d",&n);
p=a; q=b;
p+=n-1;
while(*p!= )
{*q=*p;
q++;p++;
}
;
puts(b);
}

8设以下程序段的输出结果为15,请将正确答案填入。
#include<stdio.h>
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{ int i=15, k; float j=1.5;
k=10*(MIN( i, ));
printf("%d\n",k);}
9以下程序用来统计文件中字符个数。请填空:
#include"stdio.h"
main( )
{FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r")==NULL)
{printf("Open error\n"); exit(0);}
while(_______*fp_________)
{fgetc(fp); num++;}
printf("num=%ld\n",num-1);
fclose(fp);
}
10、以下程序输入一行字符,判断其是否对称,是则输出Yes,否则输出No。
#include <stdio.h>
#include <string.h>
main()
{
char a[80]; int n, i;
gets( a );
n = ;
for ( i = 0; i < n/2; i++ )
if ( )
break;
if ( )
printf( "No\n" );
else
printf( "Yes\n" );
}
展开
 我来答
公主燕茜
2011-03-04 · TA获得超过507个赞
知道小有建树答主
回答量:697
采纳率:0%
帮助的人:0
展开全部
2,返回值是1;

所以当K>2时,函数会递归调用;

如果实在不能理解,可以进行有效代码替换来看一下递归调用的过程;

首先fun(6,&x);
等价于:

fun(5,&x);
fun(4,&x);
x=a+b;

然后进一步替换fun(5,&x);
又等价于:

{
fun(4,&x);
fun(3,&x);
x=a+b;
}

fun(4,&x);
x=a+b;

继续:

{
{
fun(3,&a);
fun(2,&b);
x=a+b;
}
fun(3,&x);
x=a+b;
}

fun(4,&x);
x=a+b;

继续:

{
{
{
fun(2,&a);
fun(1,&b);
x=a+b; //x 就是fun(3,*p) ,*p的值
}
fun(2,&b);
x=a+b; //表达式中的x为fun(3,*p)的*p值+fun(2,*p)的*p值 为3
}//下面一次调用返回,这就是递归执行的过程,不一一代入了,可以自己代入看看结果是8
fun(3,&x);
x=a+b;
}

fun(4,&x);
x=a+b;

以上是从函数调用过程分析的结果,另外还可以这样理解:
首先理解一下fun(k,*p)这个函数的内容;
不难发现,fun(1,*p)和fun(2,*p)执行后*p =1;
而如果k值不为1或者2时,函数会一直调到k =1 或者k=2位置才会返回;

既然是k=6 ,可以简单推一下;

fun(3,p3)时,
函数调用变成了
fun(2,p1)
fun(1,p2)
p3= p1+p2 =2

fun(4,p4)时,
函数调用变成了
fun(3,p3)
fun(2,p2)
p4=p2+p3 = 1+2 =3

fun(5,p5)时,
函数调用变成了
fun(4,p4)
fun(3,p3)
p5=p3+p4= 2+3 =5

fun(6,p6)时,
函数调用变成了
fun(5,p5)
fun(4,p4)
p6=p4+p5= 3+5=8

……

总结可以发现这个函数实际实现了一个求队列中第k个元素值的作用。

而这个队列是1 1 2 3 …… n[k-2] n[k-1] n[k]= n[k-1]+n[k-2];

都是我自己敲了呀,累死我了~~~
shankangkang18
2011-03-03 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:19万
展开全部
1.int mul(int a,int b)
{ int c ;
c=a+b;
return a*b ;
}

void main(
{
int x,y,z;
scanf("%d%d",&x,&y);
while(x!=0)
{ z=mul(x,y);
printf("%d*%d=%d",x,y,z);
scanf("%d%d",&x,&y);
}
}

2.以下程序打印如下图案,程序运行后,输入4给变量n,请填空。
*
* * *
* * * * *
* * * * * * *
#include<stdio.h>
#define S ' '
void main()
{ int n,i,j;
printf("Enter n:");scanf("%d",&n);
for(i=1;i<=n;i++)
{ for(j=1; j<=n-i ;j++)putchar(S);
for(j=1; j<=i*2-1 ;j++)putchar('*');
printf("\n") ;
}
}
3以下函数返回a所指数组中最小的值所在的下标值,请把程序补充完整。
fun(int *a , int n)
{int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])p=i;
return(p);
}

4、以下程序段给数组所有的元素输入数据,输出所有元素之和。请将正确答案填入。
#include<stdio.h>
main()
{ int a[10],i=0,s=0;
while(i<10)
{ scanf("%d", &a[i] ) ;
s=s+a[i];
i++ ;
}
printf("%d",s);
}

5、 下面程序用于计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请填空完善函数。
#include<stdio.h>
void main()
{ int total,sum,m,n;
total=0 ;
for(m=1;m<=10;m++)
{ sum=0;
for(n=1;n<=m;n++)
sum=sum+n;
total= total+sum ;
}
printf("total=%d\n",total);
}
6以下程序的功能是:键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成
绩,当输入负数时结束输入.请填空.
main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while( x>=0 )
{ if(x>amax) amax=x;
if( x<amin ) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
7下面程序将一个已知字符串第n个字符开始的剩余字符复制到另一个字符串中。请填空完善程序。
#include"string.h"
#include<stdio.h>
main()
{char a[80],b[80],*p,*q;
int n,k;
gets(a); scanf("%d",&n);
p=a; q=b;
p+=n-1;
while(*p!= '\0')
{*q=*p;
q++;p++;
}
*p='\0' ;
puts(b);
}

8设以下程序段的输出结果为15,请将正确答案填入。
#include<stdio.h>
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{ int i=15, k; float j=1.5;
k=10*(MIN( i, j ));
printf("%d\n",k);}
9以下程序用来统计文件中字符个数。请填空:
#include"stdio.h"
main( )
{FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r")==NULL)
{printf("Open error\n"); exit(0);}
while(_______*fp_________)
{fgetc(fp); num++;}
printf("num=%ld\n",num-1);
fclose(fp);
}
10、以下程序输入一行字符,判断其是否对称,是则输出Yes,否则输出No。
#include <stdio.h>
#include <string.h>
main()
{
char a[80]; int n, i;
gets( a );
n = strlen(a) ;
for ( i = 0; i < n/2; i++ )
if ( a[i]!=a[n-i-1] )
break;
if ( i < n/2 )
printf( "No\n" );
else
printf( "Yes\n" );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式