问答题一个网站后台登录系统由用户名和密码两部分数据组成,登录操作对两个输入数据进行检查,具体要求如下: (1)要求用户名中只能包含字母、数字和下划线(字母不区分大小写),密码可以包含任何字符。 (2)用户名和密码都不能为空且长度都应在16位以内。 (3)当用户名或密码为空时,则登录失败并提示对应的出错信息。 (4)当用户名不正确或用户名不存在或密码错误时,则登录失败并提示以下三种相应的出错信息:用户名不合法(即包含非字母、非数字字符、非下划线),或用户名不存在,或密码错误,当用户名和密码都正确时,显示登录成功,完成登录。 假设正确的用户名是admin_001,密码是001。 请用等价类方法为上述规格说明设计等价类表。
问答题以下是某C语言程序段,其功能为计算1到所输人数字的逐步累加和,请仔细阅读程序并完成要求。
#include int sum(int n) {
int i, ret_slum; ret_sum=0; for (i=1;
i<=n; i++) ret_sum+=i; return
ret_sum; } void main()
{ int j, n; printf("/1:Please input value
here==>"); scanf("%", &n); for(j=1; j<=n;
j++) printf("/2:from 1 to % d is % d/n",j,sum(j));
}
问答题为下列程序确定最小的测试用例数,程序流程图如下右图所示。
问答题已知C源程序如下: #include<stdio.h>
#include<string.h> void reverse(char s[]){
int C, i, J; for(i=0, j=strlen(s)-1; i<j;
i++, j++){ c=s[i];
s[i]=s[j]; s[j]=c;
} } void getHex(int number, char
s[]){ int I; i=0;
while(number>0){
if(number%16<10)
s[i++]=number%16+'0'; else
switch(number%16){ case
10: s[i++]='A'; break; case 11:
s[i++]='B'; break; case 12: s[i++]='C';
break; case 13: s[i++]='D'; break;
case 14: s[i++]='E'; break;
case 15: s[i++]=;F'; break;
default: printf("Error"); break;
} number/=16;
} s[i]='/0'; reverse(S);
} int main(){ unsigned
int nmnber; int i=0; char s[50];
printf("%s", "please input number: /n");
scanf("%d", getHex(number,
s); i=0; while(s[i])
printf("%c", s[i++]); return 0;
}
问答题以下是某C语言程序段,其功能是计算输入数据是否为水仙花数,请仔细阅读程序并完成要求。 #include void main() int i,a,b,c; scanf("%d",&i); a=i/100; b=i/10%10: C=i%10: if(i==a*a*a+b*b*b+c*c*c) printf("%d/n",i);
问答题已知C源程序如下: /* longIntAdd */
#include <stdio.h> #include <string.h> #define
LENGTH81 void addLInt(char s1[], char s2[]);
void reverse(char s[]); int main() {
char intstr1[LENGTH], intstr2[LENGTH];
printf("请输入超长整数的被加数和加数:/n"); scanf("% s % s", intstr1,
intstr2); addLInt(intstr1, intstr2);
printf("超长整数和为:% s", intstr1); return 0;
} void addLInt(char s1[], char s2[])
{ int i=0, tmp, c=0; char s[LENGTH];
if(strlen(s1)<strlen(s2)) { strcpy(s, s1);
strcpy(s1, s2); strcpy(s2, s);
reverse(s1); reverse(s2); while(s2[i]!="/0") {
tmp=s1[i]-'0'+s2[i]-'0'+c; s1[i]=tmp % 10+'0';
c=tmp/10; i++; }
while(s1[i]!='/0'
s1[i]=tmp % 10+'0'; c=tmp/10;
i++; } if(c){
s1[i++]=c+'0'; s1[i]='/0'; }
reverse(s1); } void reverse(char
s[]) { int i, j, c; for(i=0,
j=strlen(s)-1, i<j; i++, j--){ c=s[i];
s[i]=s[j]; s[j]=c; } }
问答题下图为对4个已知数字进行排序的程序流程图。问题:
问答题针对以下C语言程序,请按要求回答问题。
已知link.c源程序如下:
/*link.c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/
#include<stdio.h>
#include<stdlib.h>
typedef struct list_node *list_pointer; //定义链表指针
typedef struct list_node{ //定义链表结构
int data;
list_pointer link;
list node;
//用到的操作函数
list_pointer create(); //建立一个单向链表
void insert(list_pointer *p_ptr, list_pointer node);
//在node后加入一个新的节点
void delete_node(list_pointer *p_ptr, list_pointer trail, list_pointer node);
//删除前一个节点是trail的当前节点node
void print(list_pointer *p_ptr); //打印链表节点中的值
list_pointer invert(list_pointer lead); //反转链表
int main()
{
list_pointer ptr=NULL;
list_pointer node, trail;
list_pointer *p=
int choose, location, i;
printf("you should create a link first: /n");
//建立一个单向链表
prt=create(); /*ptr指向链表的第一个节点*/
print(ptr);
//根据用户的不同选择进行相应的操作
printf("input number 0, you can quit the program/n");
printf("input number 1, you can insert a new node to link/n");
printf("input number 2, you can delete a node from the link/n");
printf("input number 3, you can invert the link/n");
printf("please input you choice/n");
scanf("%d",
while(choose!=0){
switch(choose){
case 1:
i=1;
while(i<location){
node=node->link;
i++;
}
insert(p, node); /*p为指向ptr的指针*/
print(ptr);
break;
case 2;
printf("you wiii delete a node from the link/n");
printf("please input the location of the node:/n");
scanf("%d",
node=ptr;
if(location==1)
trail=NULL;
trail=ptr;
i=1;
while(i<location){
trail=trail->link;
i++;
}
node=trail->link;
delete_node(p, trail, node);
print(ptr);
break;
case 3:
printf("you will invert the link/n");
ptr=invert(ptr);
print(ptr);
break;
default:
break;
return-1;
}
printf("please input you choice/n");
scanf("%d",
}
return 0;
//根据用户的输入值建立一个新的单向链表
list pointer create()
{
int i, current, length;
list_pointer p1, p2, head;
printf("please input the node number of the link:/n");
scanf("%d", %length);
printf("the number of the link is: %d", length);
printf("please input the data for the link node:/n");
i=0;
p1=p2=(list pointer)malloc(sizeof(list_node));
head=p1;
for(i=1; i<length; i++){
scanf("%d",
p1->data=current;
p2->link=p1;
p2=p1;
p1=(list pointer)malloc(sizeof(list node));
}
p2->link=NULL;
return head;
}
...
问答题设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
问答题已知C源程序如下: / * A simple mailing list example
using an array of structures. */ #include<stdion.
h> #include<stdlib. h> define MAX 4
struct adck { char name[30]; char
street[40]; char city[20]; unsigned long int
zip; )addr_l ist[MAX]; void
init_list(void),enter(void); void
deleteAddr(void),list(void); int
menu_select(void),find_free(void); int main(void)
{ char choice; init_list();/ * initialize
the structure array * / for(;;){
choice=menu_select(); switch(choice){ case
1:enter(); break; case 2:deleteAddr();
break; case 3:list(); break;
case 4:exit(0); } } return
0; } / * Initialize the list. */
void init list(void) { register int
t; for(t=0;t<MAX;++t)addr_list[t],name[0]=/0;
} / * Get a menu selection. * / Int
menu_select(void) { char s[80];
int c; printf("1. Enter a namekn");
printf("2. Delete a name/n"): printf("3. List the
file/n"); printf("4. Quitkn"): do{
printf("/nEnter your choice:"); gets(S);
c=atoi(s): }while(c<1 || c>4); return
c; } / * Input addresses into the list. *
/ void enter(void) { int
slot; char s[80]; slot=find_free();
if(slot==-1){ printf("/nList Full"):
return; } printf("Enter name:");
gets(addr_list[slot]. name); printf("Enter
street:"); gets(addr_list[slot]. street);
printf("Enter city:"); gets(addr_list[slot].
city); printf("Enter zip:"); gets(s);
addr_list[slot]. zip=strtoul(s,/0,10); } /
* Find an unused structure. * / int find_free(void)
{ register int t; for(t=0;addr_list[t].
name[0]&&t<MAX;++t); if(t==MAX)return-1:/ * no slots free*
/ return t; } / * Delete an
address. * / void deleteAddr(void) {
register int slot; char s[80];
printf("enter record# :"); gets(s);
slot=atoi(s): if(slot>=0&&slot<MAX)
addr_list[slot]. name[0]=/0; } /*Display
the list on the screen. */ void list(void)
{ register int t:
for(t=0;t<MAX;++t){ if(addr_list[t]. name[0]){
printf("%s/n",addr_list[t]. name);
printf("%s/n",addr_list[t]. street);
printf("%s/n",addr_list[t]. city);
printf("%lu/n",addir_list[t]. zip); }
} printf("/n/n"); }
问答题为NextDate函数设计边界值分析测试用例。在NextDate函数中,隐含规定了变量month和变量day的取值范围为1≤month≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050。
问答题以下是QESuite Web Version 1.0用户手册的相关内容,请仔细阅读并按要求回答问题。
问答题以下是一软件规格说明,请按照要求回答问题。
软件规格说明:某学校的学生公寓有14栋楼,用A~N这14个大写字母的其中一个代表楼号。每栋楼的层数为6层,代号为1~6。每层楼有40个房间,编号为01~40。具体表示一个宿舍房间时,用一个字母加3位数字表示,例如:“C527”表示C楼第五层的27室。软件运行时,如果输入的房间号不在上述范围内,将不予接受,并显示输入无效。
问答题以下是QESuite web Version 1.0用户手册的内容,请按要求回答问题。
问答题在QESuite Web Version 1.0中,已知Version 1.0 FTP系统测试项目的部分信息如下: (1)测试版本共有两个,按日期排序为V1.0,V1.1。 (2)功能分类视图部分待测区域及人员分配定义如下表所示: 功能区域 功能区域 测试人员 开发人员 安全 Test1 Developerl FTP系统 文件管理 Test2 Developer2 上传文件 Test2 Developer2 …… …… …… 下载文件 Test2 Developer2 性能 并发处理能力 Test5 Developer3 …… …… …… …… 已知在功能区域“性能/并发处理能力”下,有一个软件问题处于“打开/修复失败”状态,下表中是该软件问题当前的部分操作历史信息,请依据QESuite Web Version 1.0的软件问题生命周期定义和题中提供的相关人员分配和测试版本信息,填写表中空缺的操作历史信息。 操作序号 操作者 执行操作 操作后的问题状态 测试版本 1 新建 V1.0 2 打开/再现 3 修复/修复 4 打开/修复失败 V1.1
问答题以下是班级成绩处理平台的程序流程图,请仔细阅读程序并完成要求。 该平台允许最多输入100个学生的成绩,以-1作为输入结束标志。N2存放输入的学生成绩个数,N1存放输入成绩中有效成绩的个数,sum存放成绩总和。初始化N2=N1=0,sum=0.计算其中有效的学生分数的个数、总分数和平均值。请针对该程序流程图进行基本路径覆盖测试用例设计。
问答题输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定是否构成三角形以及所构成的三角形的类型,分别输出“非三角形”、“一般三角形”、“等腰三角形”或“等边三角形”。用等价类划分方法为该程序设计测试用例。
问答题三角形问题的边界值分析测试用例。
问答题以下是某“象棋中走马事件”应用程序的走马规则,请按要求回答问题。
以下是中国象棋中走马事件中的走马规则: 1)如果落点在棋盘外,则不移动棋子;
2)如果落点与起点不构成日字形,则不移动棋子; 3)如果落点处有己方棋子,则不移动棋子;
4)如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;
5)如果不属于1)~4)条,且落点处无棋子,则移动棋子。
6)如果不属于1)~4)条,且落点处为对方棋子(非老将),则移动棋子并除去对方棋子;
7)如果不属于1)~4)条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
问答题以下是某“象棋中走马事件”应用程序的走马规则,请按要求回答问题。 以下是中国象棋中走马事件中的走马原则: (1)如果落点在棋盘外,则不移动棋子。 (2)如果落点与起点不构成日字型,则不移动棋子。 (3)如果落点处有己方棋子,则不移动棋子。 (4)如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子。 (5)如果不属于(1)~(4)条,且落点处无棋子,则移动棋子。 (6)如果不属于(1)~(4)条,且落点处为对方棋子(非老将),则移动棋子并除去对方棋子。 (7)如果小属于(1)~(4)条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
