有以下程序:#include<stdio.h>#include<string.h>typedef struct{char name[9];char sex;float s

题目
有以下程序:includeincludetypedef struct{char name[9];char sex;float s

有以下程序: #include <stdio.h> #include <string.h> typedef struct{char name[9];char sex;float score[2]}STU; STU f(STU A) {STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.namC) ; a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; return a; } main() {STU c={"Qian",'f',95.0,92.0},d; d=f(C) ; pintf("%s,%c,%2.of.%2.of\n",d.name,d.sex,d.score[0],&score[1]); } 程序的运行结果是( )。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,C95,92

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

第1题:

有以下程序:includeincludeincludevoid f(char*s,char*t){char k;k=*s; *

有以下程序: #include<stdio.h> #include<string.h> #include void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++;t--; if(*s)f(s,t): } main() {char str[10]="abcdefg",*P; P=str+strlen(str)/2+1: f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是( )。

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg


正确答案:B

第2题:

有以下程序 include int fun(char s[]) { int n=O; whil

有以下程序 #include <stdio.h> int fun(char s[]) { int n=O; while(*s<='9'&&*s>='0') { n=10*n+*s-'0'; s++; } return (n); } main() { char s[10]={ '6', '1', '*', '4', '*', '9', '*', '0', '*'}; printf("%d\n",fun(s)); }

A.9

B.61490

C.61

D.5


正确答案:C
解析:题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式11=10*n+*s-'0';。其中。s-'0'的作用是将相应的数字字符转换为数值,例如字符'8'减去字符'0'后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为'2',那么执行了n=10*n+*s-'0,;语句后,n的值变为12,如果接下来再来一个'8'字符,执行n=10*n+*s-'0';语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。

第3题:

有以下程序includeincludetypedef strtlct{char name[9];char sex;floatsc

有以下程序 #include <stdio.h> #include <string.h> typedef strtlct{ char name[9]; char sex;floatscore[2]; }STU; void f(STU A)

{ STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,f,95,92

D.Zhao,m,85,90


正确答案:A
解析: 本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。

第4题:

下列程序的运行结果为【】。 include include {int a; char b[10]; double c;};

下列程序的运行结果为【 】。

include<stdio.h>

include<string.h>

{ int a; char b[10]; double c; };

void f (struct A *t);

main()

{ struct A a={1001,"ZhangDa",1098.0};

f(&a) ; printf("%d,%s,%6.lf\n",a.a,a.b,a.C);

}

void f(struct A*t)

{ strcpy(t->b, "ChangRong");}


正确答案:1001ChangRong1098.0
1001,ChangRong,1098.0 解析:本题主要考查结构体变量赋初值,刚一开始给a赋值1001,b数组什"zhangDa",c赋值1098.0,由于被调函数中引用了结构体成员b,因此在使用strcpy时,strcpy(字符数组1,字符串2),作用是将字符串2复制到字符数组1中, b数组变成了"ChangRong",所以在最后输出时,结果为:1001,ChangRong,1098.0。

第5题:

下列程序的运行结果是()。 include include main() {char*s1="abDuj"; char

下列程序的运行结果是( )。

#include<stdio.h>

#include<string.h>

main()

{ char*s1="abDuj";

char*s2="ABdUG";

int t;

t=strcmp(s1,s2) ;

printf("%d",t);

}

A.正数

B.负数

C.零

D.不确定的值


正确答案:A
解析:本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。② strcmp(s1,s2)的返回值,当str1str2时,返回值0:当 str1=str2时,返回值为0;当str1>str2,返回值>0。

第6题:

有以下程序includestruct STU{char name[10];int num;};void f(char*name, intnum){s

有以下程序 #include <string.h> struct STU { char name[10]; int num; }; void f(char *name, int num) { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p; p=&s[1]; f(p->name,p->num); printf("%s %d\n",p->name,p->num); } 程序运行后的输出结果是

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:题目中定义的函数f()包含两个参数,一个字符指针,—个整型变量。当修改参数指针所指向的内容的时候,实参所指的内容也被修改,即传址调用;但只是修改参数变量的内容,则实奉不受影响,即传值调用。因此,主函数调用f()函数后,第1个参数被修改成函数中s[0]的name成员,第2个参数不受影响,还是主函数中s[1]的num成员。故最终输出SunDan20042。应该选择A。

第7题:

有以下程序: include struct STU (char name[10]; int num; };

有以下程序: #include <string.h> struct STU (char name[10]; int num; }; void f(char *name, int num) {struct STU s[2]={{"SunDan",20044}.{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {struct STU s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1]; f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序运行后的输出结果是 ______。

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041


正确答案:A
解析:本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。

第8题:

有下列程序:includeinclude "string.h"typedef struct{char name[9]; char sex;float

有下列程序: #include <stdio.h> #include "string.h" typedef struct{char name[9]; char sex;float score[2];}STU; void f(STU A) { STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; } main() { STU c={"Qian",'f',95.0,92.0}; f(C) ; printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]); } 程序的运行结果是( )。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,f,95,92

D.Zhao,m, 85,90


正确答案:A
解析:本题考查在结构体中函数的实参和形参的传递,调用f(C)后,实参传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf输出的还是c中实参的值,故选项A)正确。

第9题:

有以下程序 include include typedef struct { cha

有以下程序 #include <stdio.h> #include <string.h> typedef struct { char name[9]; char sex; float score[2]; } STU; STU f(STU a) { STU b={"Zhao", 'm', 85.0, 90.0}; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i<2; i++) a.score[i] = b.score[i]; return a; } main() { STU c={"Qian", T, 95.0, 92.0}, d; d=f(c); printf("%s,%c,%2.0f,%2.0f\n", d.name, &sex, &score[O], d.score[1]); } 程序的运行结果是

A.Qian, f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92


正确答案:C
解析:本题的f()函数中,首先定义了一个STU结构体变量b并初始化为{"Zhao",'m',85.0,90.0},然后分别通过strcpy()库函数、赋值语句和for循环,将b中所有成员分别赋给形参a的相应成员,最后返回a。所以,无论传递给函数fun()的参数是什么,结果返回的都会是函数中定义的STU结构体b的内容{"Zhao",'m',85.0,90.0}。故最终输出结果为:Zhao,m,85,90,应该选择C。

第10题:

以下程序的输出结果是【 】。includeincludechar*fun(char*0{ char *p--t;retur

以下程序的输出结果是【 】。

include <stdio.h>

include <string.h>

char *fun(char *0

{ char *p--t;

return (p+strlen(t)/2);

}

main()

{ char *str="abcdefgh";

str=ftm(str);

puts(str);

}


正确答案:efgh
efgh 解析:本题考查的知识点是:字符指针。题目中的fun()函数,通过strlen()库函数得到形参t所指字符串的长度。然后返回t所指字符串首地址值加上该长度值的一半。所以fun()函数的作用就是返回所给字符串的中间位置。故最后通过puts()输出的字符串为"efgh"。

更多相关问题