(20)若运行以下程序时,从键盘输入 ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include <stdio.h>
main()
{char c;
int v0=1,v1=0,v2=0;
do{switch(c=getchar())
{case ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1+=1;
default:v0+=1;v2+=1; }
}while(c!=′\n′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
答案是D 题目我都不怎么理解,怎么这么多冒号?麻烦讲解一下
(25)main()
{ int x,y,z;
x=0,y=x+1;
z=x+y;}
这个程序段为什么是正确的?我觉得x=0,y=x+1;应该改为x=0;y=x+1;才对啊?
(30)以下程序的输出结果是
#include <stdio.h>
void prt (int *x, int *y, int *z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{int a=10,b=40,c=20;
prt (&a,&b,&c);
prt (&a,&b,&c);}
A)11,42, 31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
答案是B
我知道*(z++)=*z,所以第一次输出c=20,但是第二次输出时,z=z+1了,为什么还是等于20?
39)设有如下定义:
struck sk
{ int a;
float b;
} data;
int *p;
若要使P指向data中的a域,正确的赋值语句是
A)p=&a;
B)p=data.a;
C)p=&data.a;
D)*p=data.a;
答案是C 我想问问为什么D错 怎么改?
(21)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
答案是D 我想知道其他项是什么意思?我懵了
(32)若已定义:
int a〔〕={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 0≤i≤9, 则对a数组元素不正确的引用是
A)a〔p-a〕
B)*(&a〔i〕)
C)p〔i〕
D)a〔10〕
答案是D我知道,我想问问A项是什么意思?P不是指向a的首地址吗?
(35)下面程序段的运行结果是
char *format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A)for,"a+=b",ab
B)format,"a+=b"
C)a+=b,a=21,b=10
D)以上结果都不对
答案是C (format,"a+=b",a,b);是什么意思啊
(39)有以下程序:
#include <stdio.h>
union pw
{ int i;
char ch〔2〕;}a;
main()
{a.ch〔0〕=13;a.ch〔1〕=0;printf("%d\n",a.i);}
程序的输出结果是
A)13
B)14
C)208
D)209
答案是A 我实在是不会啊
(17)若有说明:int *p,m=5,n;以下正确的程序段是
A)p=&n;scanf("%d",&p);
B)p=&n;scanf("%d",*p)
C)scanf("%d",&n);*p=n;
D)p=&n;*p=m;
答案是D 我想知道为什么C不可以
(36)有以下程序
fun(int x,int y,int z)
{ z=x*y;}
main()
{int a=4,b=2,c=6;
fun(a,b,c);
printf("%d",c);
}
程序运行后的输出结果是
A)16
B)6
C)8
D)12
答案是B 为什么不是C?
不好意思问了 谢谢各位在我成长的路上给我的帮助