上机填空题4952.docx

上传人:b****7 文档编号:10026531 上传时间:2023-02-08 格式:DOCX 页数:15 大小:18.44KB
下载 相关 举报
上机填空题4952.docx_第1页
第1页 / 共15页
上机填空题4952.docx_第2页
第2页 / 共15页
上机填空题4952.docx_第3页
第3页 / 共15页
上机填空题4952.docx_第4页
第4页 / 共15页
上机填空题4952.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

上机填空题4952.docx

《上机填空题4952.docx》由会员分享,可在线阅读,更多相关《上机填空题4952.docx(15页珍藏版)》请在冰豆网上搜索。

上机填空题4952.docx

上机填空题4952

上机填空题49-52.txt7温暖是飘飘洒洒的春雨;温暖是写在脸上的笑影;温暖是义无反顾的响应;温暖是一丝不苟的配合。

8尊重是一缕春风,一泓清泉,一颗给人温暖的舒心丸,一剂催人奋进的强心剂49

题目:

请补充main函数,该函数的功能是求方程a*x*x+b*x+c=0的两个实数根。

方程的系数a,b,c从键盘输入,如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a,b,c的值。

例如:

当a=1,b=2,c=1时,方程的两个根分别是:

x1=-1.00,x2=-1.00。

注意:

部分源程序如blank.c给出。

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。

#include

#include

main()

{

floata,b,c,disc,x1,x2;

clrscr();

do

{

printf("Inputa,b,c:

");

scanf("%f,%f,%f",&a,&b,&c);

disc=b*b-4*a*c;

if(disc<0)

printf("disc=%f\nInputagain!

\n",disc);

}while(___1___);

printf("*******theresult*******\n");

x1=___2___;

x2=___3___;

printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);

}

50

题目:

请补充fun函数,该函数的功能是在字符串的最前端加入n个*号,形成新串,并且覆盖。

注意:

字符串的长度最长允许为79。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#include

#include

voidfun(chars[],intn)

{

chara[80],*p;

inti;

p=___1___;

for(i=0;i

a[i]='*';

do

{

a[i]=___2___;

i++;

}while(___3___);

a[i]=0;

strcpy(s,a);

}

main()

{

intn;

chars[80];

clrscr();

printf("\nEnterastring:

");

gets(s);

printf("\nThestring\"%s\"\n",s);

printf("\nEntern(numberof*):

");

scanf("%d",&n);

fun(s,n);

printf("\nThestringafterinsert:

\"%s\"\n",s);

}

51

题目:

请补充fun函数,该函数的功能是把从键盘输入的3个整数按从小到大输出。

例如:

输入233214,结果输出142332。

注意:

部分源程序如blank.c给出。

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。

#include

#include

main()

{

intx,y,z,t;

clrscr();

printf("Inputx,y,z\n");

scanf("%d%d%d",&x,&y,&z);

if(___1___)

{

t=x;

x=y;

y=t;

}

if(___2___)

{

t=z;

z=x;

x=t;

}

if(___3___)

{

t=y;

y=z;

z=t;

}

printf("******theresult*******\n");

printf("fromsmalltobig:

%d%d%d\n",x,y,z);

}

52

题目:

请补充main函数,该函数的功能是:

先以只写方式打开文件"out52.dat",再把字符串str中的字符保存到这个磁盘文件中。

注意:

部分源程序如blank.c给出。

仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。

#include

#include

#defineN80

main()

{

FILE*fp;

inti=0;

charch;

charstr[N]="I'mastudents!

";

clrscr();

if((fp=fopen(___1___))==NULL)

{

printf("cannotopenout52.dat\n");

exit(0);

}

while(str[i])

{

ch=str[i];

___2___;

putchar(ch);

i++;

}

___3___;

}

 

梦里有的,这里就有

 

 

解答

49

分析:

程序首先要求用户输入方程a*x*x+b*x+c=0中的a、b、c的值。

如果b*b-4*a*c小于0,则要求用户重新输入,直至根据输入的a、b、c计算得到的b*b-4*a*c大于等于0为止。

输入完成之后,程序根据二次方程a*x*x+b*x+c=0的求根公式计算方程的两个解。

求根公式是(-b+sqrt(b*b-4*a*c))/(2*a)和(-b-sqrt(b*b-4*a*c))/(2*a)。

程序注解如下:

#include

main()

{

floata,b,c,disc,x1,x2;

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

/*clrscr函数定义在conio.h中,所以需要#include*/

clrscr();

/*如果判别式(disc=b*b-4*a*c)小于0,则要求重新输入a,b,c的值*/

do

{

printf("Inputa,b,c:

");

/*从键盘输入a、b、c*/

scanf("%f,%f,%f",&a,&b,&c);

disc=b*b-4*a*c;

/*如果disc小于0,则提示再次输入*/

if(disc<0)

printf("disc=%f\nInputagain!

\n",disc);

}

/*如果disc小于0,则反复让用户重新输入*/

while(disc<0);

printf("*******theresult*******\n");

/*sqrt函数的作用是计算参数的平方根*/

/*sqrt函数定义在math.h中,所以需要#include*/

/*使用二次方程的求根公式计算两个解x1、x2的值*/

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);

}

50

分析:

题目要求在fun函数中在字符串s的最前端加入n个*号,形成新串,并且覆盖s本身。

注意:

字符串的长度最长允许为79。

根据题意,程序在fun函数中首先定义了一个80长度的数组a和指向s数组第一个成员的p指针,然后在a数组第一个成员开始填入n个*号。

填写*号完成之后,程序从p指针所指向的s数组逐个地将字符拷贝到a数组中,最后在a数组最后一个位置设置字符串结束标记'\0',从而形成一个最前端有n个*号的新串。

由于题目要求要将得到新字符串覆盖s字符串本身,所以程序使用strcpy函数将a数组的内容拷贝覆盖s数组。

程序注解如下:

#include

#include

#include

/*s是要处理的字符串,n为加入*号的个数*/

voidfun(chars[],intn)

{

chara[80],*p;

inti;

/*p指针指向s字符串的第一个字符,准备通过p指针拷贝s字符串中的字符*/

p=s;

/*将自己定义的a数组前n个成员设置为*号*/

for(i=0;i

a[i]='*';

/*将p指针所指向的字符拷贝到a数组中,然后p指针往后移动*/

do

{

/*a[i]=*p++;相当于a[i]=*p;p++;*/

a[i]=*p++;

/*i指示放入a数组的位置,所以此时i需要加一,指示下一个存放位置*/

i++;

}

/*while(*(p))是while(*(p)!

='\0')的简写方式*/

/*只有p指针不移动到结束标记'\0'该循环就反复执行*/

while(*(p));

/*在a数组最后一个位置设置0,即为字符串结束标记'\0'*/

a[i]=0;

/*strcpy函数可以将第二个参数拷贝覆盖第一个参数*/

/*strcpy函数定义在string.h中,所以需要#include*/

/*将a数组的内容覆盖s数组,使s字符串的内容符合题目的要求*/

strcpy(s,a);

}

main()

{

intn;

chars[80];

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

/*clrscr函数定义在conio.h中,所以需要#include*/

clrscr();

printf("\nEnterastring:

");

/*gets函数的作用接收从键盘上输入的字符串放入参数s*/

/*gets函数定义在stdio.h中,所以需要#include*/

gets(s);

printf("\nThestring\"%s\"\n",s);

printf("\nEntern(numberof*):

");

scanf("%d",&n);

fun(s,n);

printf("\nThestringafterinsert:

\"%s\"\n",s);

}

51

分析:

题目要求把从键盘输入的3个整数按从小到大输出。

为了实现以上要求,程序约定从小到大排列的顺序是x、y、z,所以需要将三个数字中最小的数字移至x,最大的数字移至z,中间大小的数字移至y即可。

为了实现以上思路,程序采取以下做法:

(1)首先将x的当前值分别与y的当前值比较大小,如果x的当前值大于y的当前值就交换两者,即将较小的值移动至x变量中保存。

(2)然后将x的值再与z进行比较大小。

同样,如果x的值大于z的值就交换两者,即将较小的值移动至x变量中保存。

(3)经过以上两个步骤之后,x变量保存的值就是原先三个数字中最小的一个。

只要将剩下的两个数字按照大小排列就可以到达要求了。

所以第三步将y的值再与z进行比较大小,如果y的当前值大于z的当前值就交换两者,即将较小的值移动至y变量中保存。

经过以上过程,变量x、y、z的值就是按照从小到大的顺序排列的。

程序注解如下:

#include

#include

main()

{

intx,y,z,t;

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

/*clrscr函数定义在conio.h中,所以需要#include*/

clrscr();

printf("Inputx,y,z\n");

/*输入x、y、z三个整数*/

scanf("%d%d%d",&x,&y,&z);

/*先把作为最小值的x变量中的数字确定下来*/

if(x>y)

{

/*交换x,y的值*/

t=x;

x=y;

y=t;

}

if(x>z)

{

/*交换x,z的值*/

t=z;

z=x;

x=t;

}

/*作为最小值的x变量中的数字确定之后,再把剩下的两个数字排列顺序*/

if(y>z)

{

/*交换z,y的值*/

t=y;

y=z;

z=t;

}

printf("******theresult*******\n");

/*输出经过大小排列的x、y、z*/

printf("fromsmalltobig:

%d%d%d\n",x,y,z);

}

52

分析:

题目要求先以只写方式打开文件"out52.dat",再把字符串str中的字符保存到这个磁盘文件中。

此题涉及文件操作的内容,题目中的程序首先使用fopen函数打开要操作的文件out52.dat,然后在while循环中逐一地将str字符串中的字符通过fputc函数写入out52.dat文件。

str字符串中所有字符处理结束之后则使用fclose函数关闭out52.dat文件。

程序注解如下:

#include

#include

#defineN80

main()

{

/*定义文件指针*/

FILE*fp;

inti=0;

charch;

/*str为要写入文件的字符串*/

charstr[N]="I'mastudents!

";

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

/*clrscr函数定义在conio.h中,所以需要#include*/

clrscr();

/*fopen函数的作用是打开文件以便进行文件的操作*/

/*fopen函数定义在stdio.h中,所以需要#include*/

/*fopen函数第一个参数代表打开的文件名,第二个参数代表以只写方式打开*/

if((fp=fopen("out52.dat","w"))==NULL)

{

/*如果打开文件失败则输出提示信息*/

printf("cannotopenout52.dat\n");

/*exit函数作用是退出程序,即结束本程序的运行*/

exit(0);

}

/*while(str[i])是while(str[i]!

='\0')的简写形式*/

/*while循环逐一提取str数组中的每一个字符,然后保存到文件中*/

while(str[i])

{

ch=str[i];

/*fputc函数的作用是将ch参数写入fp参数指向的文件中*/

/*fputc函数定义在stdio.h中,所以需要#include*/

fputc(ch,fp);

/*putchar函数的作用是将ch参数显示在输出窗口*/

/*putchar函数定义在stdio.h中,所以需要#include*/

putchar(ch);

/*准备写入下一个字符*/

i++;

}

/*关闭fp指向的文件out52.dat*/

fclose(fp);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1