软件水平考试(初级)程序员下午(应用技术)模拟试卷27
-
阅读以下说明和Java代码,将应填入(n)处的语句写在对应栏内。
【说明】
进行两个整数之间的比较,由考生通过输入窗口分别输入两个整数,程序比较出结果。例如:先后输入的两个数分别为25和36。
比较结果显示:
25!=36
25<36
25<=36
【Java代码】
import javax.swing.JOptionPane;
public class Java3
{
public static void main(String args[])
{
String (1) // 用户输入第1个字符串
secondNumber, // 用户输入第2个字符串
result; // 包含输出
int number1, // 比较的第1个数
number2; // 比较的第2个数
// 用户输入的第1个字符串
firstNumber =
JOptionPane. (2) ("Enter first integer:");
//读用户输入的第2个字符串
secondNumber =
JOptionPane.showlnputDialog("Enter second integer:");
将字符串类型转换成整数类型
number1= Integer. (3) (firstNumber);
number2= Integer.parselnt(secondNumber);
result= "":
if ((4))
result=number1+"=="+number2;
if (number1 != number2)
result=number1+"!="+number2;
if (number1<number2)
result=result+"\n"+number1+"<"+ number2;
if (number1>number2)
result=result+"\n"+number1+">"+number2;
if (number1<=number2)
result=result+"\n"+number1+"<="+number2;
if (numbed>=number2)
result=result+"\n"+number1+">="+number2;
//显示结果
JOptionPane.(5).(
null, result, "Comparison Results",
JOptionPane. INFORMATION_MESSAGE);
//程序正常退出
System.exit(0);
}
}
-
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】
字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。
【程序】
#include <iostream.h>
#include <stdio.h>
#include <string.h>
class string
{
int length;
char *data;
public:
int get_length() {return length;}
char *get_data() {return data;}
~string() {delete data;}
int set data(int in_length, char *in_data);
int set_data(char *data);
void print() {cout<<data<<endl;}
};
class edit_string: public string
{
int cursor;
public:
int get_cursor() {return cursor;}
void move_cursor(int dis) {cursor=dis;}
int add_data(string *new_data);
void delete_data(int num);
};
int string::set_data(int in_length,char *in_data)
{
length=in_length;
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int string::set data(char *in_data)
{
(2)
if(!data)
delete data;
(1)
strcpy(data,in_data);
return length;
}
int edit_string::add_data(string *new_data)
{
int n,k,m;
char *cp,*pt;
n=new_data->get_length();
pt=new_data->get_data();
cp=this->get_data();
m=this->get_length();
char *news=new char[n+m+1];
for(int i=0; i<cursor; i++)
news[i]=cp[i];
k=i;
for(int j=0; j<n; i++,j++)
news[i]=pt[j];
cursor=i;
for(j=k; j<m; j++,i++)
(3)
news[i]='\0';
(4)
delete news;
return cursor;
}
void edit string::delete_data( int num)
{
int m;
char *cp;
cp=this->get_data();
m=this->get_length();
for(int i=cursor; i<m; i++)
(5)
cp[i]='\0';
}
-
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
共有7种划分。这种划分的程序如下所示。
【程序】
#include <stdio.h>
int n[1000],m,k;
void output sum()
{
int j;
for(j=0;n[j]!=0;j++)
printf("%d\t",n[j]);
printf("\n");
}
void sum(int i)
if(m-n[i]<n[i])
{ m=m-n[i];
(1)
i++;
n[i+1]=0;
}
else
{
(2)
m-=n[i];
i++;
}
if(m!=n[i])
sum(i);
else
output_sum();
if(n[i]>1)
{
n[i]--;
(3)
}
else
{
while((n[i]==1)&&(i>O))
{
i--;
(4)
}
if(i!=0)
{
(5)
sum(i);
}
}
}
void main()
{
int i;
scanf("%d",&n[0]);
m=k=n[0];
for(i=1;i<=k;i++)
n[i]=0;
while(n[0]!=1)
{
n[0]--;
i=0;
sum(0);
m=k;
}
}
-
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:
其中填自然数的思想如下;
(1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。
(2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。
【程序】
#include <stdio.h>
#define size 10
int a[3][size];
void main()
{
int i,k,m,n;
printf("imput the n:");
scanf("%d",&n);
k=1;
for(i=0; i<=n/2; i++)
{
a[1][2*i]=k; k++;
if((i==n/2)&& (1) ||(i<n/2))
{
a[0][2*i+1]=k;
k++;
(2)
k++;
}
}
if(n%2==1)
{
(3)
k++;
m=n;
}
else
(4)
for(i=0; i<n/2; i++)
{
a[1][m-2*i]=k; k++;
(5)
k++;
a[2][m-2*i-1]=k; k++;
}
a[1][1]=k;
printf("\n");
printf(" ");
for(i=1; i<=n; i++)
printf("%6d",a[0][i]);
printf("\n\n");
for(i=0; i<=n+1; i++)
printf("%6d",a[1][i]);
printf("\n\n");
printf(" ");
for(i=1; i<=n; i++)
printf("%6d",a[2][i]);
printf("\n");
}
-
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【程序2.1说明】
求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。
【程序2.1】
void main()
{
int i, j,n,s;
for(i=100;i<=999;i++)
{
n=i;
j=n/11;
s=0;
while((1))
{
(2)
n/=10;
}
if((3))
printf("%d\t",i);
}
}
【程序2.2说明】
本程序输入一字符串,将其中的大写字母改变成小写字母。
【程序2.2】
void main()
{
int i=0;
char s[120];
scanf("%s",s);
while((4))
{
if((5))
s[i]=s[i]- 'A'+'a';
i++;
}
printf("%s\n",s);
}
-
阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。
【说明】
在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:
int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};
可用以下数组a来表示:
int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};
其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。
下面的流程图描述了稀疏矩阵转换的过程。
【流程图】