A.输出字符串:Hello
B.输出字符串:World!
C.输出字符串:Hello,World!
D.输入字符串
第1题
intmain(){
printf("HelloWorld\n");
fork();
printf("HelloWorld\n");}
在UNIX操作系统中正确编译链接后,其正确的运行结果是
A.共打印出2行HelloWorld
B.共打印出3行HelloWorld
C.共打印出4行HelloWorld
D.共打印出5行HelloWorld
第2题
A.共打印出2行Hello World
B.共打印出3行Hello World
C.共打印出4行Hello World
D.共打印出5行Hello World
第3题
A.I am the child process, x=2
B.I am the parent process, x=0
C.I am the parent process, x=2
D.I am the child process, x=0
第4题
A.线程th_f运行后主动退出
B.线程th_f运行后等待一个特定的线程退出
C.线程th_f运行后主动释放CPU给其他线程
D.线程th_f运行后进入等待态
第5题
A.线程th_f运行后主动退出
B.线程th_f运行后等待一个特定的线程退出
C.线程th_f运行后主动释放CPU给其他线程
D.线程th_f运行后进入等待态
第6题
A.线程th_f运行后主动退出
B.线程th_f运行后等待一个特定的线程退出
C.线程th_f运行后主动释放CPU给其他线程
D.线程th_f运行后进入死循环
第7题
A.3
B.0
C.4
D.1
第8题
有以下程序
#include<stdio.h>
int f(int m)
{ static int n=0;
n+=m:
return n;
}
main()
{ int n=0;
printf("%d,",f(++n));
printf("%d\n",f(n++));
}
程序运行后的输出结果是A.1,2
B.1,1
C.2,3
D.3,3
【我提交的答案】: |
【参考答案与解析】: 正确答案:A |
解析:static变量用于局部变量中有记忆功能和全局生存期。函数中的静态变量的特点是每次调用函数,静态变量的值是上次调用完该函数后的静态变量值,所以在此题中,第一调用函数,返回1,此时函数中的静态变量n的值为l,所以第二次调用函数时,返回值为2。
第二次函数调用时 形参n++的值不是0吗,怎么会是1呢?
第9题
【说明】
以字符流形式读入一个文件,从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或'\t'、'\n'结束的字符串。其中6种关键字在程序中已经给出。
【程序】
include <stdio.h>
include <stdlib.h>
FILE *cp;
char fname[20], buf[100];
int NUM;
struct key
{ char word[10];
int count;
}keyword[]={ "if", 0, "char", 0, "int", 0,
"else", 0, "while", 0, "return", 0};
char *getword (FILE *fp)
{ int i=0;
char c;
while((c=getc(fp))!= EOF &&(1));
if(c==EOF)
return (NULL);
else
buf[i++]=c;
while((c=fgetc(fp))!=EOF && c!="&& c!='\t' && c!='\n' )
buf[i++]=c;
buf[i]='\0';
return(buf);
}
void lookup(char *p)
{ int i;
char *q, *s;
for(i=0; i<NUM; i++)
{ q=(2);
s=p;
while(*s && (*s==*q))
{ (3))
if((4))
{ keyword[i].count++;
break;
}
}
return;
}
void main()
{ int i;
char *word;
printf("lnput file name:");
scanf("%s", fname);
if((cp=fopen(fname, "r"))==NULL)
{ printf("File open error: %s\n", fname);
exit(0);
}
NUM=sizeof(keyword)/sizeof(struct key);
while((5))
lookup(word);
fclose(cp);
for(i=0;i<NUM;i++)
printf("keyword:%-20s count=%d\n",keyword[i].word,keyword[i].count);
}
第10题
已知 link.c 源程序如下:
/*link.c 程序对单向链表进行操作 , 首先建立一个单向链表 , 然后根据用户的选择可以对其进行插入节点 、
删除节点和链表反转操作 */
#include
#include
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 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");
// 建立一个单向链表:
ptr=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 your choice\n");
scanf("%d", &choose);
while(choose!=0){
switch(choose){
case 1:
printf("you will insert a node to the link\n");
printf("please input the location of the node:\n");
scanf("%d", &location);
node = ptr;
i = 1;
while(i<location){
node = node->link;
i++;
}
insert(p, node); /* p 为指向 ptr 的指针 */
print(ptr);
break;
case 2:
printf("you will delete a node from the link\n");
printf("please input the location of the node:\n");
scanf("%d", &location);
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 your choice\n");
scanf("%d", &choose);
}
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\n", 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 = 0; i
scanf("%d", ¤ t);
p1->data = current;
p2->link = p1;
p2 = p1;
p1 = (list_pointer) malloc(sizeof(list_node));
}
p2->link = NULL;
return head;
}
……
( 1 )画出主函数 main 的控制流程图。( 10 分)
( 2 ) 设计一组测试用例 , 尽量使 main 函数的语句覆盖率能达到 100% 。 如果认为该函数的语句覆盖率无法达到 100% ,需说明原因。( 8 分)
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!