首页 > 软考
题目内容 (请给出正确答案)
[主观题]

阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。 【说明】 喜迎2008年北京奥运会!

阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。

【说明】

喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。

图1-15是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的{0,1}序列:

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

如果把它看做一个字的16个位,“会”字的第1行可以用十六进制数0100来表示。同理,“会”字的第2行可以用十六进制数0240表示,第3行可以用十六进制数0420表示……依此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图1-15的左半部分所示。

将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……依此类推来形成一个旋转后的点阵字形。图1-15的右半部分就是将“会”字逆时针旋转90°后的点阵数据和字形(提示:读者可将书本顺时针旋转90°,以查看旋转90°后的点阵字形)。

在【C程序】中,数组old存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90°,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图1-15所示。

阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。 【说明】 喜迎2008年北

【C程序】

include <stdio.h>

define EMPTY '.'

define NONEMPTY 'x'

define LEFT 0

define RIGHT 1

main ()

{ static unsigned old[16]=

{ 0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,

0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,

0xl000,0x2004,0x7ffe,0x0001

};

unsigned new[16];

turnleft (old, new);

display (old,new);

}

turnleft (old,new)

unsigned old[],new[];

{ int row, k;

for (row=0;row<16;row++)

for ((1);k<16;k++)

new[row]|=((old[k]>>(2))&1) <<(3);

}

display (old, new)

unsigned *old,*new;

{ char out[2] [17],letter[2];

int row, col;

letter[O] = EMPTY;

letter[1] = NONEMPTY;

out[LEFT] [16]=out[RIGHT] [16]=(4);

for (row = 0;row<16;row++,old++,new++)

{ for (col = 0;co1<16;++col)

{ out[LEFT] [col] = letter[ ((5)) &1];

out[RIGHT] [col] = letter[ ((6)) &1];

}

printf("\n %4x %s",*old,&out[LEFT] [0]);

printf("%4x %s",*new,&out[RIGHT] [0]);

}

}

查看答案
答案
收藏
如果结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能还需要:
您的账号:
发送账号密码至手机
发送
安装优题宝APP,拍照搜题省时又省心!
更多“阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语…”相关的问题
第1题
●试题八 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 以下程

●试题八

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。

【程序】

#include<stdio.h>

main()

{FILE*fp;

charstr[100];inti=0;

if((fp=fopen("text.txt" (1) ))==NULL)

{printf("can't open this file.\n");exit(0);}

printf("input astring:\n");gest(str);

while(str[i])

{if(str[i]>=′a′ && str[i]<=′z′)

str[i]= (2) ;

fputc(str[i], (3) );

i++;

}

fclose(fp);

fp=fopen("test.txt", (4) );

fgets(str,100,fp);

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

(5) ;

}

点击查看答案
第2题
阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。 [说明] 已知以下C++程序运行时的输出

阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。

[说明]

已知以下C++程序运行时的输出结果如下。

1:1

1:1

1:1

[C++程序]

01 include <iostream>

02 using namespace std;

03 class Stock{

04 protect:

05 (1) { };

06 Stock(int n, int pr=1) {

07 shares = n; share_val=pr;

08 };

09 void ~Stock() { };

10 public:

11 //成员函数

12 void output() {

13 (2)<< shares << ":" << share_val << endl;

14 }

15 private:

16 //成员变量

17 int shares;

18 int share_val;

19 };

20

21 void main() {

22 Stock a(1); a.output

23 Stock b; b.output

24 Stock c = Stock (); c.output

25 }

请根据C++程序运行时的输出结果,将代码中(1)、(2)空缺处的内容补充完整。

点击查看答案
第3题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 下面一段程序从给定的数组b中

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【说明】

下面一段程序从给定的数组b中找出值最小的元素,并输出该元素的数组下标、内存地址minaddr以及元素值本身。函数findmin负责在给定的数组中查找最小值,并返回最小值所在的内存地址,函数有三个参数:array是所要处理的数组;size是数组的大小;index负责从函数返回具有最大值的元素在数组中的数组下标。请填充空白,使其成为一个合乎要求的完整程序。

【程序】

//程序开始

include<iostream.h>

int *findmin(int *array, int size, int &index);

void main()

{

/****** 变量定义部分 ***********/

int b[10] = {34, 34, 23, 89, 1, 2, 13, 42, 5, 54};

(1);

int idx;

/******* 寻找最小值 ************/

minaddr = findmin(b, sizeof(b)/sizeof(int), idx);

/******* 输出最小值的有关信息 ************/

cout << "Min value index: "<<idx<<end1

<<"Min value address: "<<minaddr<<end1

<<"Min value: "<<(2)<<end1;

}

/******* 函数findmin的定义部分 ************

int *findmin(int *array, int size, int &index)

{

int min = 0;//max 是当前具有最小值的数组元素下标值

for(int i = 1;(3); i++)

{

if(array[i]<(4))

min = i;

}

(5);

return array + min;//返回最小值所在内存地址

}

点击查看答案
第4题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。[函数2.1说明] 函数void find(int *a

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。

[函数2.1说明]

函数void find(int *a, int n, int * max, int * min)的功能是在长度为n的整型数组a中,查找最大元素和最小元素的下标。main()中给出了调用find函数的一个实例。

[函数2.1]

include<stdio.h>

void find(int *a, int n,int *max,int * min)

{ int i;

*max =* min=0;

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

if(a[i]>a[* max]) (1);

else if(a[i]<a[*min]) (2);

return;

main()

{ int a[]={4,6,8,9,0,6},max,min;

find(a,6,(3));

printf("%5d%5d\n", max,min);

}

[函数2.2说明]

以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串前端的公共部分。例如:输入的两个字符串分别是abcdefg和abceef,则输出为abc。

[函数2.2]

include <stdio.h>

main()

{ char str1[100],str2[100],str[100],c;

int i=0,s;

printf("\nInput string 1:");gets(str1);

printf("\nInput string 2:");gets(str2);

while(((4))&&(str1[i]!='\0')&&(str2[i]!='\0')){

(5);

i++;

}

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

}

点击查看答案
第5题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明2.1】 以下C语言函数用二分插

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

void fun1 (int a[])

{ int i,j,k,r,x,m;

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

{ (1);

k=1;r=i-1;

while(k<=r)

{ m=(k+r)/2;

if(x<a[m])r=m-1;

else (2);

}

for(j=i-1;j>=k;j--)

a[j+l]=a[j];

(3);

}

}

【说明2.2】

以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。

【程序2.2】

include<stdio.h>

main()

{ charb[16]={'0','l','2','3 ,4,'5','6','7','8','9','A','B','C','D','E','F'};

int c[64],d,i=0,base;

long n;

printf("enter a number:\n");

scanf("%1d",&n);

printf("enter new basc:\n");

scanf("%d", &base);

do

{ c[i]=(4);

i++; n=n/base;

} while(n!=0);

printf("transmite new base:\n");

for(--i;i>=0;--i)

{ d=c[i];

printf("%c",(5));

}

}

点击查看答案
第6题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 下面的程序构造一棵以二叉链

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【说明】

下面的程序构造一棵以二叉链表为存储结构的二叉树算法。

【函数】

BTCHINALR *createbt (BTCHINALR *bt )

{

BTCHINALR *q;

struct node1 *s [30];

int j,i;

char x;

printf ("i,x =" ); scanf ("%d,%c",&i,&x );

while (i!=0 && x!='$')

{ q = (BTCHINALR* malloc (sizeof (BTCHINALR )); //生成一个结点

(1);

q->1child = NULL;

q->rchild = NULL;

(2);

if((3);)

{j=i/2 //j为i的双亲结点

if(i%2==0

(4) //i为j的左孩子

else

(5) //i为j的右孩子

}

printf ("i,x =" ); scanf ("%d,%c",&i,&x ); }

return s[1]

}

点击查看答案
第7题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 将A,B,C,D,E,F这6个变量排成

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【说明】

将A,B,C,D,E,F这6个变量排成如图(a)所示的三角形,这6个变量分别取[1,6]中的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。图(b)就是一个解。

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 将A,B,C,D,E,F这6

程序引入变量a,b,c,d,e,f,并让它们分别顺序取1~6的整数,在它们互不相同的条件下,测试由它们排列成的如图(a)所示的三角形三条边上的变量之和是否相等,如果相等即为一种符合要求的排列,就输出它们。

【程序】

void main()

{ int a, b, c, d, e, f;

for(a=1;a<=6;a++)

for(b=1;b<=6;b++) {

if((1)) continue;

for(c==1;c<=6;c++) {

if((2))continue;

for(d=1;d<=6;d++) {

if((3)) continue;

for(e=1;e<=6;e++) {

if((4)) continue;

f=21-(a+b+c+d+e);

if((5)){

printf("%6d",a);

printf("%4d%4d",b,f);

printf("%2d%4d%4d",c,d,e);

scanf("%*c"); /*按回车键,继续找解*/

}

}

}

}

}

}

点击查看答案
第8题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 本程序实现对指定文件

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。

[C程序]

include <stdio.h>

include <ctype.h>

include <string.h>

define MAXWORD 100

struct node {

char*word;

int count;

struct node*left;

struct node*right;

}

struct node*addtree(struct node*P,char*w)

{ int cond;

if(p==NULL){ /*向树中插入结点*/

P=(struct node*)malloc(sizeof(struct node));

P->word=strdup(w);

P->count=1;

(1) ;

}

elseif((oond=strcmp(w,p->word))==0) (2) ;

else if(cond<0)p->left=(3);

else p->right=(4);

return p;

}

main()

{ Struct node*root;

char word[MAXWORD];

root=NULL;

filename="example.dat";

while(getword(filename,word)!=EOF))

root=(5);

}

点击查看答案
第9题
阅读以下说明和C++代码,将解答写入对应栏内。 [说明] 类Stock的定义中有三处错误,分别在代码的

阅读以下说明和C++代码,将解答写入对应栏内。

[说明]

类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺(1)~(3),修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。

[C++程序]

01 include<iostream.h>

02 using namespace std;

03 class Stock{

04 protected:

05 Stock(){shares=0; share_val=0.0;Output();}

06 Stock(int n=0,double pr=3.5): (1) {//初始化shares值为n

07 share_val=pr;

08 Output();

09 };

10 void~Stock(){};

11 void Output()(cout<<shares<<';'<<share val<<endl;}

12 public:

13 //成员函数

14 private:

15 //成员变量

16 int shares;

17 double share_val;

18 };

19

20 void main(){ //构造三个Stock对象a,b,C

21 Stock a(1);

22 Stock b;

23 Stock C;Stock();

24 //其他代码省略,且代码无输出

25 }

程序运行后的输出结果为:

1:3.5

(2)

(3)

点击查看答案
第10题
●试题五 阅读以下程序说明和C程序,将应填入(n)处的子句,写在答卷纸的对应栏内。 【程序说明】 函

●试题五

阅读以下程序说明和C程序,将应填入(n)处的子句,写在答卷纸的对应栏内。

【程序说明】

函数int commstr(char *str1,char *str2,int *sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。

函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。

【程序】

int strlen(char *s)

{char *t=s;

while(*++);

return t-s-1;

}

intcommstr(char)*str1,char *str2,int *sublen

{char*s1,*s2;

int count=0,len1,len2,k,j,i,p;

len1=strlen(str1);

len2=strlen(str2);

if(len1>len2)

{s1=str1;s2=str2;}

else{len2=len1;s1=str2;s2=str1;}

for(j=len2;j>0;j--)/*从可能最长子串开始寻找*

{for(k=0; (1) <=len2;k++)/*k为子串s2的开始位置*/

{for(i=0;s1[ (2) ]!='\0';i++;)/* i为子串s1的开始位置*/

{/* s1的子串与s2的子串比较*/

for(p=0;p<j)&& (3) ;p++);

if ((4) )/*如果两子串相同*/

{for(p=0);p<j;p++}/*输出子串*/

printf("%c",s2[k+p]);

printf("\n");

count++;/* 计数增1*/

}

}

}

if (count>0)break;

*sublen=(count>0)? (5) :0;

return count;

}

点击查看答案
第11题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。[说明] 函数Printprime(int UpBound)

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。

[说明]

函数Printprime(int UpBound)的功能是输出1到UpBound以内的全体素数。

[函数2.1]

void PrintPrime(int UpBound)

printf("2," );

for(i=3; i<UpBound; i+ =2) {

int k = sqrt(i);

for(j=3; j<= k;(1)) /*检查i是否有3到k以入的奇因数*/

if((2)) break;

fi((3)) printf("%d", i);

[函数2.2说明]

递归函数invert(int a[],int k),int k)的功能是将数组a中的前k个元素逆置。

[函数2.2]

void invert(int a[ ], int k)

{ int t;

if ((4)) {

invert((5));

t=a[0];

a[0] =a[k-1];

a[k-l]=t;

}

}

点击查看答案
退出 登录/注册
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改