A)17B)22C)16D)21
30.以下程序的输出结果是()。
strucSTU{charname[10];intnum;};
voidf1(structSTUc)
{structSTUb={“LiSiGuo”,2042};c=b;}
voidf2(structSTU*c)
{structSTUb={“SunDan”,2044};*c=b;}
main()
{structSTUa={“YangSan”,2041},b={“WangYin”,2043};
f1(a);f2(&b);
cout<执行后的输出结果是
A)20412044B)20412043C)20422044D)20422043
二、填空题
1.若想输出b数组的十个元素,下面存在错误的程序行是。
(每个程序行前面的数字代表行号)
1intmain()
2{intb[10]={1,3,5,7,9,2,4,6,8,10},k;
3for(k=0;k<10;k++,b++)
4
cout<<*b;
5
}
2.若有定义语句
intx[10],*p=x;在程序中引用数据元素
x[i]的四种形是:
,
,
和x[i](假设i已正确说明并赋值)。
.
精品文档
3.C++语言中,数组名是一个不可改变的,不能对它进行赋值运算;数组在内存中占用一段连续的存
储空间,它的首地址由表示。
4.在C++语言中,形参的缺省存储类是。
三、读程序写结果。
1.#include
inti=1;
test()
{inti;
cout<
i=2;
return(i);
}
intmain()
{cout<
i=test();cout<
}
2.下面程序的运行结果是。
#include
intmain()
{intx[]={0,1,2,3,4,5,6,7,8,9};ints,i,*p;
s=0;
p=&x[0];
for(i=1;i<10;i+=2)s+=*(p+i);
cout<<“sum=”<
return0;
}
3.下面程序的运行结果是。
#include
intmain()
{intx[4]={1,3,5,7};int*p;
p=x;
Cout<<(++*p);
return0;
}
.
精品文档
四、程序填空。
1.以下程序对数组a中的数据进行降序排序,请填空。
#defineN10
intmain()
{inta[N],i,j,k=N;
cout<<“Enter“<for(i=0;i>*(a+i);
for(k=0;;k++)for(i=0;iif(*(a+i)<*(a+i+1))
{j=*(a+i);*(a+i)=*();*()=j;}
for(i=0;ireturn0;
}
2.下面程序的功能是将两个字符串s1和s2连接起来,请填空。
#include
intmain()
{chars1[80],s2[80];
gets(s1);gets(s2);conj(s1,s2);
puts(s1);return0;
}
voidconj(char*p1,char*p2)//此函数实现把字符串p2连接在p1的后面。
{while((*p1)!
=‘\0’);
while((*p2)!
=‘\0’)
{*p1=;
p1++;p2++;
}
}
3.下面程序的功能是比较2个字符串的大小,请填空。
#include
intmain()
{chars1[80],s2[80];
gets(s1);gets(s2);
Cout<<“Resultis:
”<return0;
.
精品文档
}
//以下函数实现比较2个字符串的大小,若p1比p2大,返回数值1,否则返回数值-1,
intcomp(char*p1,char*p2)
{
while((*p1!
='\0')&&(*p2!
='\0'))
{
if(*p1!
=*p2);
p1++;;
}
if()return1;
elsereturn-1;
}
五、编程题。
1.
编写程序,把一个从键盘输入字符串间隔的输出,请用指针完成。
例如:
输入字符串:
hello,输出:
hlo
2.
编写程序,把一个字符串中的第
m个字符开始的全部字符复制生成另一个字符串。
要求从键盘输入字符串及
m
的值并输出生成的字符串。
3.
请编写一个函数,它的功能是:
对一个数组进行从小到大的排序。
函数首部为
voidsort(inta[],int
n),
其中a为数组名,n为数组元素的个数。
主函数如下,请把子函数补充完整。
#include
#defineN10
intmain()
{intnum[N],i=0;
for(i=0;i>num[i];//输入数据
sort(num,N);//调用子函数,对数组的元素进行排序。
printf("\n排序之后:
");
for(i=0;ireturn0;
}
//以下为子函数部分。
.
精品文档
一选择题
1
2
3
4
5
6
7
8
9
10
C
B
A
B
D
D
C
C
C
D
11
12
13
14
15
16
17
18
19
20
B
A
B
A
A
D
C
A
C
D
21
22
23
24
25
26
27
28
29
30
A
C
B
A
C
B
A
A
B
A
二填空题
第1题3
第2题*(x+i)*(p+i)p[i]
第3题地址常量数组名
第4题auto
三读程序写结果。
1.1,随机数,0,2.Sum=25
3.2
四程序填空。
1.k
2P1++*p2*p1='\0';
3.breakp2++*p1>*p2
五编程题
第一题:
思路
#defineN100
intmain()
{
charstr[N];
voidfun(char*s);//子函数说明
gets(str);//读入字符串
fun(str);//函数调用
return0;
}
/*
以下为子函数,请补充完整
把参数字符串间隔输出
要求使用指针,在这里,参数是指针,满足要求
在子函数中,使用一个while循环,使得指针每次递增2,输出它所指向的字符即可。
.
精品文档
也就是说,子函数只需要一个while语句。
*/
voidfun(char*s){。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
}
第二题:
思路
#defineN100
intmain()
{
charstr1[N],str2[N];
intm;
voidfun(char*s1,char*s2,intn);//函数声明
gets(str1);
Cin>>m;
fun(str1,str2,m);//函数调用
puts(str2);
return0;
}
/*以下为子函数部分
要求实现把字符串s1中从第n个字符开始的所有数据复制到字符串s2中
例如s1为“students”,n为4,则运算之后,s2应该是“dents”*/
voidfun(char*s1,char*s2,intn)
{
参考算法,
1、找到s1的第n个字符
2、开始复制:
从当前s1所对应的字符开始,逐个复制到s2里面
}
第三题:
思路
intn=10;//数组的成员个数
intmain()
{
inta[N];
int*p=a;
//三个函数,分别是输入,输出,处理数组函数
voidscan(int*),print(int*),pro(int*);
scan(p);//调用函数,给数组输入数据
cout<<"\n原始数据为:
\n";
print(p);//调用函数,输出数组
pro(p);//调用函数,对数组进行处理
cout<<"\n交换之后的数据为:
\n";
.
精品文档
print(p);//调用函数,输出数组
}
voidscan(int*p)//给数组输入数据,数组成员个数为全部变量n
{。
。
。
。
。
。
。
。
。
}
voidprint(int*p)//输出数组,数组成员个数为全部变量n
{。
。
。
。
。
。
。
。
}
/*以下为子函数,处理函数,按照要求对数组进行处理,数组的成员个数为全局变量n*/
voidpro(int*p)
{
intmax=0,min=0;
inti,temp;
//以下循环求出数组的最大值放在max变量中
for(
//以下循环求出数组的最小值放在min变量中
for(
/*以下为交换语句
最小的数和第一个数对换
把最大的数和最后一个对换。
*/
}
.