对于如下C语言程序 int main() { printf("Hello World\n"); fork(); printf("Hello World\n"); }

题目

对于如下C语言程序 int main() { printf("Hello World\n"); fork(); printf("Hello World\n"); } 在UNIX操作系统中正确编译链接后,其正确的运行结果是

A.共打印出2行Hello World

B.共打印出3行Hello World

C.共打印出4行Hello World

D.共打印出5行Hello World

参考答案和解析
正确答案:B
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序 include main() { int n,*p=NULL; *p=&n; printf("

有以下程序 #include <stdio.h> main() { int n,*p=NULL; *p=&n; printf("Input n:");scanf("%d",&p);printf("output n:");printf("%d\n",p); } 该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

A.int n,*p=NULL;

B.*p=&n;

C.scanf("%d",&p)

D.printf("%d\n",p);


正确答案:A
解析:指针变量在定义时需要加星号,而在赋值时则不用,故选项B)错误。本题中,scanf()函数和printf()函数都是要对指针变量p指向的地址处的数据进行访问,不是变量本身。选项C)中多了取地址运算符,选项D)中少了指针运算符。

第2题:

分析下列程序。 int main() { printf("Hello") ; fork(); printf("Hello") ; fork(); printf("Hello") ; fork(); printf("Hello") ;} 不考虑其他因素,程序正常运行后共打印出多少个"Hello"?

A.15

B.11

C.7

D.4


正确答案:A

第3题:

假设在UNIX操作系统环境下执行以下程序: main() { printf("Hello World\n"); fork(); printf("Hello World\n"); } 若程序正常运行,子进程创建成功,那么,屏幕上得到输出的有

A.1个Hello World

B.2个Hello World

C.3个Hello World

D.4个Hello World


正确答案:C

第4题:

先有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件 如下: include<stdio.h> include"myfun.C" main() {fun();printf("\n");} //myfun.c文件如下: void fun() { char s[80],c;int n=0; while((c=getchar())!='\n') s[n++]=c; n--; while(n>=0)printf("%c",s[n--]); } 当编译连接通过后,运行程序T18时,输入Hello!则输出结果是( )。


正确答案:!olleH
!olleH

第5题:

有以下程序:includemain(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",s

有以下程序: #include <string.h> main() { char str[][20]={"Hello","Beijing"}*p=str; printf("%\n",strlen(p+20)); } 程序运行后的输出结果是

A.0

B.5

C.7

D.20


正确答案:C
解析:本题考核的知识点是二维数组的初始化及库函数strlen()的应用。主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]="Hello",str[1]="Beijing",然后定义一个字符指针变量p并让它指向数组的首地址,即指向str[0],而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(P+20);返回的是str[1]中的字符串的长度,即Beijing的长度为7,所以最后输出的值为7,所以,4个选项中选项C符合题意。

第6题:

有以下程序: includemain(){ char str[][20]={"Hello","Beijing"},*p=str;printf("%

有以下程序: # include<string.h> main() { char str[][20]={"Hello","Beijing"},*p=str; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是 ______。

A.0

B.5

C.7

D.20


正确答案:C
解析:本题中定义了一个2×20的二维字符数组str,并且初始化为str[0]="Hello",str[1]="Beijing",p是指向 char型的指针变量,并指向str数组的首地址,strlen(p+20)=strlen(str[1])=7。

第7题:

下列程序的输出结果是______。includeusing namespace std;int main() {char a []="He

下列程序的输出结果是______。 #include<iostream> using namespace std; int main() { char a []="Hello, World"; char *ptr=a; while (* ptr) { if(*ptr)= 'a'&& *ptr' <= 'z') cout << char(*ptr+'A'-'a'); else cout << *ptr; ptr++; } return 0; }

A.HELLO,WORLD

B.Hello,World

C.hELLO, wORLD

D.hello,world


正确答案:A
解析:对于str的每个字母,如果是大写字母或者是非字母,就直接打印出来。如果是小写字母,就转化成大写字母,然后打印。‘A’-‘a’正是大小写字母的ASCII码之差。

第8题:

运行下面程序时,从键盘输入字母H,则输出结果是

#include<stdio.h>

main()

{ char ch;

ch=getchar();

switch(ch)

{case ′H′:printf("Hello!\n");

case ′G′:printf("Good morning!\n");

default:printf("Bye_Bye!\n");

}

}

A.Hello!

B.Hello! Good Moring!

C.Hello! Good morning! Bye_Bye!

D.Hello! Bye_Bye!


正确答案:C
解析:本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。本题中ch为字符'H',所以case 'H'条件中的语句将被执行,由于没有break语句,所以case 'G'后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。

第9题:

有如下程序void func1(int st[],int i){ printf("%c",st[i]); if(i}void func2(int st[],int i){ printf("%c",st[i]); if(i}main(){ char st[ ]="hello,friend! "; int i=0;func1(st,i); printf("\n");}程序执行后输出的结果是A.hello B.hel C.hlo D.编译出错


正确答案:D
本题主要考查全局变量的作用域。在本题中,程序首先声明两个无返回值函数func1和func2。func1函数带有两个形参,一个是需要输出的数字,一个是输出数组元素的下标。在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。
从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。
在主函数中首先定义了一个字符数组,并赋了初值,然后定义一个变量i并赋值为0,如果数组st是一个全局数组,那么调用函数func1,根据我们对函数func1的分析可知,此时能输出st[0]即字符’h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,但由于数组只是一个局部数组,局部数组的作用域是定义它的函数或者程序段,调用函数func1时,数组有效,当再调用函数func2时,已经超出了数组的作用域。因此,系统在编译时会报错。本题答案选D。

第10题:

有以下程序: #include<stdio.h> void func(int n) { int i; for(i=0;i<=n;i++)printf("*"): printf("#"); } main( ) {func(3);printf("????");func(4);printf("n\"); 程序运行后的输出结果( )。

A.****#????***#

B.***#????****#

C.**#????****#

D.****#????*****#


正确答案:D
本题考查简单的for循环,func(3)由于i是从0开始,所以会输出四个“*”和一个“#”,然后打印四个“?”func(4),会输出五个“*”和一个“#”,所以答案选择D。

更多相关问题