更多"已知C源程序如下:
/*Input today’s d"的相关试题:
[简答题]已知C源程序如下:
/*Input today’s date,output tomorrow’s date*/
/*version 2*/
#include<stdio.h>
struct ydate
int day;int month;int year;;
int leap(struct ydate d)
if((d.year%4==0&&d.year%100!=0)||(d.year%400==0))
return 1;
else
return 0;
int numdays(struct ydate d)
int day;
static int daytab[]=
31,28,31,30,31,30,31,31,30,31,30,31);
if(leap(d)&&d.month==2)
day=29;
else
day=daytab[d.month-1];
return day;
int main(void)
struct ydate today,tomorrow;
printf("format of date is:year,month,day 输入的年、月、日之间应用逗号隔开/n");
printf("today is:");
scanf("%d,%d,%d",&today.year,&today.month,&today.day);
while(0>=today.year
|| today.year>65535 || 0>=today.month || today.month>12) ||
0>=today.day || today.day>numdays(today))
printf("input date error!reenter the day!/n");
printf("today is:");
scanf("
[简答题]
已知C源程序如下:
/*Input today’s date,output tomorrow’s date * /
/* version 2 * /
#include<stdio. h>
struct ydate
int day; int month; int year;;
int leap(struct ydate d)
if((d. year%4==0&&d. year%100 ! =0)||(d. year%400==0))
return 1;
else
return 0;
int numdays(struct ydate d)
int day;
static int daytab[]=
31,28,31,30,31,30,3l,31,30,31,30,31;
if(1eap(d)&&d. month==2)
day=29;
else
day=daytabEd. month-1];
return day;
int main(void)
struct ydate today,tomorrow;printf("format of date is:year,month,day输入的年、月、日之间应用逗号隔开/n);
printf(" today is:");
scanf(“%d,%d.%",&today.year,&today.month,&today.day);
while(0>=today. year
|| today. year>65535||0>=today. month||today. month>12)||
0>=today. day||today. day>numdays(today))
printf("input date error!reenter the day!/n");<
[简答题]
已知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;
}
/ *
[简答题]
已知C源程序如下:
/*A simple mailing list example using an array of
structures. */
# include<stdion.h>
#
include<stdlib.h>
define MAX 4
struct
addr{
char name[30];
char
street[40];
char city[20];
unsigned long
int zip;
}addr_list[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 initlist(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. ;
[简答题]
已知C源程序如下:
#include #include void reverse(char s[]){ int c,i,j; for(i=0,j=strlen(s)-1;i0){ 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 number; int i=0; char s[50]; printf("%s","please input number://n"); scanf("%d",&number); getHex(number,s); i=0; while(s[i]) printf("%c",s[i++]); return 0; }
画出程序中所有函数的控制流程图;
[简答题]
针对以下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=&ptr;
int choose, location, i;
printf("you should create
a link first:/n");
prt=create( );
//*ptr 指向链表的第一个结点*/
print(ptr);
//根据用户的不同选择进行相应的操作;
printf("input number 0, you c
[简答题]针对一下C语言程序,请按要求回答问题。
已知weekday. c源程序如下:
#include<stidio. h>
#include<conio. h>
/ *主函数* /
Int main( )
{
Char letter;
Printf("please input the first letter,"Y’to exit!/n");
While((letter=getch( ))!="Y")//当输入字母为Y时结束
{
Switch(letter)
{
Case’S’:
Printf("%c/n",letter);
Printf("please input second letter/n");//输入第二个字母
If((letter=getch( ))==’a’)
Printf("Saturday/n");
Else if(letter==’u’)
Printf("Sunday/n");
Else printf(’data error/n);
Break;
Case’F’:
Printf("fridaykn");
Break;
Case ’M’:
Printf("mondayha");
Break;
Case ’T’:
Printf("%c/n",letter);
Printf("please input second letter/a");//输入第二个字母
If((letter=getch( ))==’u’)
Printf("Tuesday/n"):
Else if(letter==’h’)
Printf("Thursday/n");
Break;
Case ’W’:
Printf("Wednesday/n");
}
}
Return 0;
}
(1) 画出主函数main的控制流程图;
(2) 设计一组测试用例,使main函数的语句覆盖率尽量达到100%;
(3) Main函数的语句覆盖率能否达到100%如果认为无法达到,需说明原因。
[简答题]
针对以下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=&ptr;
int choose,location,i;
printf("you should create a link first:/n");
//建立一个单向链表
prt=create( ); //ptr指向链表的第一个结点
print(p
[简答题]
已知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", &number);
getHex(number,
s);
i=0;
while(s[i])
printf("%c", s[i++]);
[简答题]论述题3:
已知C源程序如下:
/*longIntAdd*/
#include<stdio.h>
#include<string.h>
#define LENGTH 81
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;
81[i]=tmp%10+’0’;
c=tmp/10;
i++;
}
while(si[1]!=’/0’&&c){
tmp=s1[i]-’0’+c;
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;
}
}
设计一组测试用例,使该程序addLInt函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该函数的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
[简答题]
已知C源程序如下:
/*分数运算 fsys.c*/
#include<stdio.h>
int main( )
long int a,b,c,d,i,x,y,z;
char op;
printf("两分数b/a,d/c作+、-、*、/四则运算。结果为分数。/n");
printf("请输入分数运算式:b/a op d/c/n");
scanf("%ld/%ld%c%ld%ld",&b,&a,&op,&d,&C) ;
if(a==0||c==0)
printf("分母为0,输入错误!/n");
return(0);
if(op==’+’)
y=b*c+d*a;
x=a*c; /*运算结果均为y/x*/
if(op==’-’)
y=b*c-d*a;
x=a*c;
if(op==’*’)
y=b*d;
x=a*c;
if(op==’/’)
y=b*c;
x=a*d;
z=x;
if(x>y)z=y;
i=z;
while(i>1)
if(x%i==0&&y%i==0)x=x/i;y=y/i;continue;;
i——;
printf("%ld/%ld%c%ld/%ld=%ld/%ld./n",b,a,op,d,c,y,x);
return 0;