上机填空题7376.docx

上传人:b****8 文档编号:28424362 上传时间:2023-07-13 格式:DOCX 页数:14 大小:18.13KB
下载 相关 举报
上机填空题7376.docx_第1页
第1页 / 共14页
上机填空题7376.docx_第2页
第2页 / 共14页
上机填空题7376.docx_第3页
第3页 / 共14页
上机填空题7376.docx_第4页
第4页 / 共14页
上机填空题7376.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

上机填空题7376.docx

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

上机填空题7376.docx

上机填空题7376

73

题目:

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

输出一个N*N矩阵,要求非对角线上的元素赋值0,对角线元素赋值1。

注意:

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

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

#include

#defineN10

main()

{

intbb[N][N];

inti,j,n;

clrscr();

printf("\nInputn:

\n");

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

___1___;

if(i==j)

bb[i][j]=___2___;

if(___3___)

bb[i][j]=1;

}

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

for(i=0;i

{

printf("\n\n");

for(j=0;j

printf("%4d",bb[i][j]);

}

printf("\n");

}

74

题目:

给定程序中,函数fun的功能是:

将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

注意:

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

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

#include

typedefstruct

{

charname[10];

intage;

}STD;

STDfun(STDstd[],intn)

{

STDmax;

inti;

max=___1___;

for(i=1;i

if(max.age<___2___)

max=std[i];

returnmax;

}

main()

{

STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15};

STDmax;

max=fun(std,5);

printf("\nTheresult:

\n");

printf("\nName:

%s,Age:

%d\n",___3___,max.age);

}

75

题目:

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

求1+2!

+3!

+…+N!

的和。

例如,1+2!

+3!

+…+5!

的和为153。

注意:

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

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

#include

main()

{

inti,n;

longs=0,t=1;

clrscr();

printf("\nInputn:

\n");

scanf("%d",___1___);

for(i=1;i<=n;i++)

{

t=___2___;

s=___3___;

}

printf("1!

+2!

+3!

...+%d!

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

}

76

题目:

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

把字符串str中的字符按字符的ASCII码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。

例如,如果输入"abcde",则输出"edcba"。

注意:

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

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

#include

#defineN80

voidfun(chars[],intn)

{

inti,j;

charch;

for(i=0;i

for(j=___1___;j

if(s[i]

{

ch=s[j];

___2___;

s[i]=ch;

}

}

main()

{

inti=0,strlen=0;

charstr[N];

clrscr();

printf("\nInputastring:

\n");

gets(str);

while(str[i]!

='\0')

{

strlen++;

i++;

}

fun(str,strlen);

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

puts(str);

}

最优质的服务,最合适的价位,最满意服务等着你,淘宝网!

 

解答

73

分析:

题目要求输出一个N*N矩阵,要求非对角线上的元素赋值0,对角线元素赋值1。

此题关键的地方就是要正确表达对角线元素的下标。

对角线存在正对角线和反对角线两个,例如以下矩阵,正对角线元素是:

1、7、13、19、25。

反对角线元素是:

5、9、13、17、21。

12345

678910

1112131415

1617181920

2122232425

正对角线元素下标的特征是行、列值相等,例如19的行列下标都是3,注意表示矩阵的二维数组行、列下标都是从0开始的。

反对角线元素下标的特征是总行数-行下标-1就等于列数。

例如17的行下标为3,列下标为1,即5-3-1=1。

程序注解如下:

#include

#defineN10

main()

{

intbb[N][N];

inti,j,n;

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

clrscr();

printf("\nInputn:

\n");

scanf("%d",&n);

/*逐个处理每一行*/

for(i=0;i

/*处理第i行的所有列*/

for(j=0;j

{

/*先将元素统统先作为非对角线元素设置为0*/

bb[i][j]=0;

/*正对角线元素设置为1*/

if(i==j)

bb[i][j]=1;

/*反对角线元素设置为1*/

if(j==n-1-i)

bb[i][j]=1;

}

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

/*输出处理之后的矩阵*/

for(i=0;i

{

printf("\n\n");

for(j=0;j

printf("%4d",bb[i][j]);

}

printf("\n");

}

74

分析:

题目要求在fun函数中将形参std所指结构体数组中年龄最大者的数据作为函数值返回。

为了实现以上要求,程序约定max变量存放数组中年龄最大者的数据,然后先将std数组的第一个元素std[0],也就是*std先放入max变量。

然后使用for循环将std数组中每一个元素的age成员与max变量的age成员进行比较大小,如果比max变量的age成员更加大,则将这个更大的数组元素覆盖max变量中的原有值。

当循环结束的时候,max变量中就保存了题目要求寻找的std所指结构体数组中年龄最大者的数据。

最后将max返回即可。

程序注解如下:

#include

typedefstruct

{

charname[10];

intage;

}STD;

STDfun(STDstd[],intn)

{

STDmax;

inti;

/*max=*std语句将std第一个元素放入max*/

/*因为std是数组名,数组名在C语言中就是指针名*/

/*通过取指针内容的运算符(*)可以取得std[0]的值,所以*std就是std[0]*/

max=*std;

/*逐个检查std数组中每一个元素的age成员与max中age成员的大小*/

for(i=1;i

if(max.age

/*将更大的值保存在max中,确保max保存了年龄最大值*/

max=std[i];

returnmax;

}

main()

{

STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15};

STDmax;

max=fun(std,5);

printf("\nTheresult:

\n");

printf("\nName:

%s,Age:

%d\n",max.name,max.age);

}

75

分析:

题目要求在fun函数中求1+2!

+3!

+…+N!

的和。

为了实现题目要求,我们必须知道n!

即n的阶乘的计算公式,即n!

的计算公式是n!

=n*(n-1)*(n-2)*(n-3)*……*3*2*1。

程序首先设置t初始值为1,将t作为每一项阶乘的乘积。

设置s初始值为0,将s作为整个1+2!

+3!

+…+N!

的总和。

然后计算t=t*i=1*1=1,然后计算s=s+t=0+1=1,这样就将1+2!

+3!

+…+N!

中的第一项1计算完成。

然后计算t=t*i=1*2=2,然后计算s=s+t=1+2=3,这样就将1+2!

+3!

+…+N!

中的第二项2!

计算完成。

然后计算t=t*i=2*3=6,然后计算s=s+t=3+6=9,这样就将1+2!

+3!

+…+N!

中的第二项3!

计算完成。

反复进行以上计算过程。

最终s的值就是1+2!

+3!

+…+N!

的总和。

程序注解如下:

#include

main()

{

inti,n;

longs=0,t=1;

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

clrscr();

printf("\nInputn:

\n");

/*输入n变量的值*/

scanf("%d",&n);

/*从1至n进行计算每一项阶乘t和合计值s*/

for(i=1;i<=n;i++)

{

/*计算阶乘i!

的值,将其存入t变量*/

t=t*i;

/*计算1+2!

+3!

+…+i!

总和,将其存入s变量*/

s=s+t;

}

printf("1!

+2!

+3!

...+%d!

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

}

76

分析:

题目要求在fun函数中把参数字符串s中的字符按字符的ASCII码降序排列,处理后的字符串仍然保存在原串中,字符串及其长度作为函数参数传入。

要实现字符串s中的字符按字符的ASCII码降序排列,需要将字符的ASCII码进行比较大小,而如何实现比较字符的ASCII码呢?

根据C语言的语法,两个char类型的变量进行比较大小就是比较两者的ASCII码。

例如'd'>'b'表达式比较的是'd'和'b'两个字符的ASCII码,由于'd'和'b'的ASCII码分别是100和98,所以'd'的ASCII码大于'b'的ASCII码,所以'd'>'b'表达式成立。

为了实现题目要求,程序使用了以下思路:

假设s数组中存在内容"baedc",首先寻找"baedc"中ASCII码最大的字符放入第一个字符位置。

方法是使用循环将"b"字符即s[0]作为最大值分别与后面其余字符比较大小,如果发现ASCII码比s[0]更大的字符则交换该字符和s[0]的位置。

当循环结束的时候,s[0]存放的位置必然是s数组所有字符中ASCII码最大的字符。

这一次循环结束的时候,s数组中的内容为:

"eabdc"。

然后从s[1]开始重复以上过程,将s[1]作为ASCII码最大的字符。

然后使用循环将s[1]分别与后面其余字符比较大小,如果发现ASCII码比s[1]更大的字符则交换该字符和s[1]的位置。

当循环结束的时候,s[1]存放的位置必然是s数组除了s[0]以外所有字符中ASCII码最大的字符。

这一次循环结束的时候,s数组中的内容为:

"edabc"。

重复以上过程直至整个字符串数组s都按降序排列。

程序注解如下:

#include

#defineN80

voidfun(chars[],intn)

{

inti,j;

charch;

/*逐个确定每一段的ASCII码最大的字符*/

for(i=0;i

/*找出第i个字符至最后一个字符之间ASCII码最大的字符放入s[i]*/

for(j=i;j

/*如果发现比作为最大值的s[i]更大的字符则交换两者*/

/*确保s[i]存放s[i]至最后一个字符之间ASCII码最大的字符*/

if(s[i]

{

/*以下三句作用是交换s[j]与s[i]*/

/*将s[j]预先保存在ch中,防止丢失数据*/

ch=s[j];

/*将s[i]移动到s[j]中进行保存*/

s[j]=s[i];

/*将预先保存在ch中的原来s[j]的值移动到s[i]进行保存*/

s[i]=ch;

}

}

main()

{

inti=0,strlen=0;

charstr[N];

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

clrscr();

printf("\nInputastring:

\n");

/*gets函数的作用是接收键盘输入的字符串,将其放入str参数中*/

gets(str);

/*统计str字符串的长度,将其放入i变量中*/

while(str[i]!

='\0')

{

strlen++;

i++;

}

fun(str,strlen);

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

/*puts函数的作用是输出str参数的内容*/

puts(str);

}

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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