上机填空题8184.docx
《上机填空题8184.docx》由会员分享,可在线阅读,更多相关《上机填空题8184.docx(9页珍藏版)》请在冰豆网上搜索。
![上机填空题8184.docx](https://file1.bdocx.com/fileroot1/2022-11/16/dab2a539-b1e5-4e69-8211-a663684d701e/dab2a539-b1e5-4e69-8211-a663684d701e1.gif)
上机填空题8184
81
题目:
给定程序中,函数fun的功能是:
计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
注意:
要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:
123
456
789
fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。
注意:
部分源程序如blank.c给出。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include
#defineN4
fun(intt[][N],intn)
{
inti,sum;
___1___;
for(i=0;isum+=___2___;
for(i=0;isum+=t[i][n-i-___3___];
returnsum;
}
main()
{
intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nTheoriginaldata:
\n");
for(i=0;i{
for(j=0;jprintf("%4d",t[i][j]);
printf("\n");
}
printf("Theresultis:
%d\n",fun(t,N));
}
82
题目:
请补充main函数,该函数的功能是:
打印出1至1000中满足个位数字的立方等于其本身的所有数。
本题的结果为:
164125216729。
注意:
部分源程序如blank.c给出。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。
#include
main()
{
inti,g;
clrscr();
for(i=1;i<1000;i++)
{
g=___1___;
if(___2___)
printf("%4d",i);
}
printf("\n");
}
83
题目:
请补充main函数,该函数的功能是:
从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。
结果仍然保存在原串中。
例如,输入"abcdef",指定字符为'c',则输出"ab"。
注意:
部分源程序如blank.c给出。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。
#include
#defineN80
main()
{
inti=0;
charstr[N];
charch;
clrscr();
printf("\nInputastring:
\n");
gets(str);
printf("\nInputacharator:
\n");
scanf("%c",&ch);
while(str[i]!
='\0')
{
if(str[i]==ch)
___1___;
___2___;
}
str[i]=___3___;
printf("\n*********displaystring*********\n");
puts(str);
}
84
题目:
请补充main函数,该函数的功能是:
输出方程组A+B=52,A+2B=60的一组正整数解。
本题的结果是:
A=44,B=8。
注意:
部分源程序如blank.c给出。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其它任何内容。
#include
main()
{
inti,j,k;
clrscr();
for(i=0;i<100;i++)
for(j=0;j<100;j++)
if(___1___)
printf("A=%2d,B=%2d",___2___);
printf("\n");
}
来吧,来吧,淘宝网上可以淘金的!
解答
81
分析:
题目要求计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
注意:
要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。
在程序中定义了t二维数组表示矩阵:
intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10};
对应的矩阵情况如下:
2121324
25164738
29113254
4221310
主对角线元素为21、16、32、10,反向对角线元素为24、47、11、42。
程序注解如下:
#include
#defineN4
fun(intt[][N],intn)
{
inti,sum;
/*将保存总和的sum变量初始化为0,准备用于累加元素*/
sum=0;
/*计算主对角线元素之和,t[i][i]为主对角线元素表示方法*/
for(i=0;isum+=t[i][i];
/*计算反向对角线元素之和,t[i][n-i-1]为反向对角线元素表示方法*/
for(i=0;isum+=t[i][n-i-1];
returnsum;
}
main()
{
/*表示矩阵的二维数组*/
intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nTheoriginaldata:
\n");
/*输出表示矩阵的二维数组,按照每一行N个元素的格式输出*/
for(i=0;i{
for(j=0;jprintf("%4d",t[i][j]);
printf("\n");
}
printf("Theresultis:
%d\n",fun(t,N));
}
82
分析:
题目要求打印出1至1000中满足个位数字的立方等于其本身的所有数。
所以需要使用循环遍历1至1000中所有的整数,检查这些整数的个位数字的立方是否等于其本身。
另外,取得整数i的个位数字可以使用取模运算(%)。
例如123%10便得到个位上的数字3。
程序注解如下:
#include
main()
{
inti,g;
/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/
clrscr();
/*逐一检查1至1000之间的整数是否满足条件*/
for(i=1;i<1000;i++)
{
/*取得当前检查的整数的个位数字g*/
g=i%10;
/*判断当前检查的整数i是否满足个位数字g的立方等于其本身*/
if(g*g*g==i)
/*输出符合条件的整数i*/
printf("%4d",i);
}
printf("\n");
}
83
分析:
题目要求从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。
为了实现以上要求,程序使用while循环逐个遍历str数组中每一个字符,将这些字符逐个地与指定字符ch比较。
如果相同,则记录该字符下标退出循环。
按照题意需要把这个字符及其后面的所有字符全部删除,所以程序将这个字符后面一个位置设置为字符串结束标记'\0'即可实现删除后面字符的目的。
程序注解如下:
#include
#defineN80
main()
{
inti=0;
charstr[N];
charch;
/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/
clrscr();
printf("\nInputastring:
\n");
/*gets函数的作用是接收键盘输入的字符串,将其放入str数组中*/
gets(str);
printf("\nInputacharator:
\n");
/*接收键盘上输入的单个字符放入ch中,作为指定字符*/
scanf("%c",&ch);
/*逐个将str数组中每一个字符与指定字符ch比较*/
while(str[i]!
='\0')
{
if(str[i]==ch)
/*找到与指定字符ch相同的字符则退出该循环*/
break;
i++;
}
/*为了删除后面的所有字符,只要在与ch相同的字符后面设置结束标记即可*/
str[i]='\0';
printf("\n*********displaystring*********\n");
/*puts函数的作用是输出str字符串的内容*/
puts(str);
}
84
分析:
题目要求输出方程组A+B=52,A+2B=60的一组正整数解。
为了实现题目要求,程序使用了最"笨"的方法,那就是一个一个数字代入方程组试验,如果某一个数字能够满足方程组则就是解,则输出。
程序注解如下:
#include
main()
{
inti,j,k;
/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/
clrscr();
/*将整数一个一个代入方程组进行测试是否符合*/
for(i=0;i<100;i++)
for(j=0;j<100;j++)
/*判断当前代入的i、j是否满足方程组,满足则输出解*/
if(i+j==52&&i+2*j==60)
printf("A=%2d,B=%2d",i,j);
printf("\n");
}