c语言Word下载.docx
《c语言Word下载.docx》由会员分享,可在线阅读,更多相关《c语言Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
i,int
j)
t;
if(i<
t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
a[]={1,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;
i<
6;
i++)
%d"
a[i]);
执行后的输出结果是
6
5
4
3
2
1
51
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
地址传递
单向值传递
由实参传给形参,再由形参传回实参
传递方式由用户指定
52
以下函数值的类型是
fun
(
float
x
y;
y=
3*x-4;
不确定
53
设有以下函数:
f
a)
b=0;
static
c
=
3;
b++;
c++;
return(a+b+c);
如果在下面的程序中调用该函数,则输出结果是
a
2,
i;
%d\n"
f(a));
9
13
54
以下程序的输出结果是
a,
b;
fun()
a=100;
b=200;
a=5,
b=7;
fun();
%d%d
\n"
a,b);
100200
57
200100
75
55
以下所列的各函数首部中,正确的是
play(var
:
Integer,var
b:
Integer)
play(int
a,b)
a,int
b)
Sub
play(a
as
integer,b
integer)
56
以下叙述中正确的是
全局变量的作用域一定比局部变量的作用域范围大
静态(static)类别变量的生存期贯穿于整个程序的运行期间
函数的形参都属于全局变量
未在定义语句中赋初值的auto变量和static变量的初值都是随机值
若调用一个函数,且此函数中没有return语句,则正确的说法是:
该函数
没有返回值
返回若干个系统默认值
能返回一个用户所希望的值
返回一个不确定的值
58
f()
i=0;
s=1;
s+=i;
i++;
s;
i,a=0;
5;
a+=f();
a);
20
24
25
15
59
若有以下程序
#include
<
stdio.h>
f(int
n);
f(5);
n)
n);
则以下叙述中不正确的是
若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
函数f无返回值,所以可用void将其类型定义为无值型
60
以下程序调用findmax函数返回数组中的最大值
findmax(int
*p,*s;
for(p=a,s=a;
p-a<
n;
p++)
if
s=p;
return(*s);
x[5]={12,21,13,6,18};
findmax(x,5));
在下划线处应填入的是
p>
s
*p>
*s
a[p]>
a[s]
p-a>
p-s
61
在C语言中,形参的缺省存储类是
auto
register
extern
62
不合法的main函数命令行参数表示形式是
main(int
a,char
*c[])
arc,char
**arv)
argc,char
*argv)
argv,char
*argc[])
63
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是
double
64
x,int
y)
return(y-x)*x;
a=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
d);
执行后输出的结果是_________。
65
以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
func(int
y,
________
z)
*z=x+y;
66
设在主函数中有以下定义和函数调用语句,且fun函数为void类型;
请写出fun函数的首部________________。
要求形参名为b。
s[10][22];
┆
fun(s);
67
以下程序的输出结果是__________
。
a=0;
a+=2;
cc;
for(cc=1;
cc<
4;
cc++)
);
68
以下程序的运行结果是
___________
k=4,
m=1,
p;
p=func(k,m);
%d,"
p);
%d
m=0,
i=2;
i+=m+1;
m=i+a+b;
m;
69
以下程序运行后的输出结果是__________
x)
if(x/2>
0)
fun(x/2);
"
x);
{fun(6);
70
以下程序运行后的输出结果是
x=x+y;
y=x-y;
x=x-y;
printf(‚%d,%d,‛,x,y);
x=2,y=3;
fun(x,y);
printf(‚%d,%d\n‛,x,y);
}
a,point,*&
*a,&
a,*point
*&
point,*point,&
a,&
*point,point
标志是输入函数SCANF中的求地址运算符,所输出的结果是&
所指向的地址值;
*是指针变量的说明符,说明该变量只能存放所定义类型变量的地址。
本题中D选项中的第一和第三项所表达的是同样的意思,应为正确答案。
若有说明:
*p,m=5,n;
以下正确的程序段是
D
p=&
scanf("
&
p);
*p)
*p=n;
*p=m;
‚&
‛标志是输入函数SCANF中的求地址运算符,所输出的结果是‚&
‛所指向的地址值;
‚*‛是指针变量的说明符,说明该变量只能存放所定义类型变量的地址。
本题中D选项中‚p=&
n‛表示取n的地址值,‚*p=m‛表示指针变量的地址值为m变量的值,应视为正确答案。
有如下程序段
*p,a=10,b=1;
a;
a=*p+b;
执行该程序段后,a的值为
B
12
编译出错
首先声明指针变量p
a,将变量a的地址赋给指针变量p
a=*p+b
将指针变量p所对应的值与b的和赋给a。
*p1,*p2,m=5,n;
以下均是正确赋值语句的选项是
C
p1=&
p2=&
p1
*p1=*p2;
p2=p1;
*p2=*p1;
下面判断正确的是
*a="
china"
等价于
*a;
str[10]={"
};
等价于char
str[10];
str[]={"
*s="
*s;
s="
c[4]="
abc"
d[4]="
c[4]=d[4]="
(1)‚*‛是指针变量的说明符,说明该变量只能存放所定义类型变量的地址。
(2).答案A错在*a="
,应将其改为a="
;
答案D错在char
答案B错在char
,应将其改为char
*str[10];
C为本题正确答案。
设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是
c=*p1+*p2;
p2=c;
p1=p2;
c=*p1*(*p2);
本题B项错在c是一个字符变量,而p2所指向的地址值是一个字符串,两者不相匹配,因而无法进行附值运算。
下面程序段的运行结果是
str[]="
ABC"
*p=str;
*(p+3));
0
字符'
C'
的地址
abcde"
s+=2;
cde
c'
无确定的输出结果
fun(char
*a,
*b)
a=b;
(*a)++;
c1='
A'
c2='
a'
*p1,*p2;
c1;
c2;
fun(p1,p2);
%c%c\n"
c1,c2);
A
Ab
aa
Aa
Bb
在fun函数中指针a原指向c1,b原指向c2,由于赋值,a也指向c2,所以(*a)++;
也就是c2++,而c1的值保持不变。
下面程序应能对两个整型变量的值进行交换。
以下正确的说法是
{int
a=10,b=20;
(1)a=%d,b=%d\n"
a,b);
swap(&
b);
(2)a=%d,b=%d\n"
swap(int
p,int
q)
t=p;
p=q;
q=t;
该程序完全正确
该程序有错,只要将语句swap(&
中的参数改为a,b即可
该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
以上说法都不对
(1)在函数调用时,a的值传给p,b的值传给q。
执行完swap函数后,p和q的地址是互换了,但main函数中的a和b并未互换。
也就是说由于‚单向传送‛的‚值传递‛方式,形参值的改变无法传给实参。
(2)如果将语句swap(&
中的参数改为a,b,则将a的值传递给p,b的值传递给q。
但执行完swap后,p和q的值是互换了,但main函数中的a和b并未互换。
也就是说由于‚单向传送‛的‚值传递‛方式,形参值的改
变无法传给实参。
(3)如果将swap()函数中的形参p和q以及t均定义为指针(执行语句不变),执行swap函数时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后由指针变量t互换p的q的地址。
并没有改变a和b的值。
(4)本题应该把swap()函数改成这样:
*p,int
*q)
t=*p;
*p=*q;
*q=t;
这时执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后,将*p的值(即a的值)传递给t,将*q的值(即b的值)传递给*P(即a),将t的值(即*p的值)传递给*q(即b),从而将a和b互换。
编程题:
一、以三种基本控制结构、数组、字符串编程为主。
样题1:
从键盘输入一个字符串。
对该字符串进行变换后输出,要求将字符串中的大写字母变成小写字母,其他字符不变。
例如:
从键盘输入字符串‚AcfDe‛
则:
输出为‚acfde‛
stdio.h"
scanf(‚%s‛,str);
while
(str[i]!
='
\0'
if(str[i]>
str[i]<
Z'
str[i]+=32;
printf(‚%s‛,str);
样题2:
从键盘输入一个不超过20个字符的字符串,存储到一个字符数组中。
将下标为奇数位臵上的字符按顺序复制到另外一个字符数组中并输出。
如:
输入‚abcdefg‛,则输出‛bdf‛。
i,j;
str1[21],str2[11];
gets(str1);
for(i=1,j=0;
str1[i]!
if(i%2!
=0)
str2[j]=str1[i];
j++;
str2[j]='
puts(str1);
puts(str2);
样题3:
输入一个N*N矩阵,求该矩阵对角线元素之和。
要求N用#define
进行定义
#define
N
a[N][N]={1,2,3,4,5,6,7,8,9};
i,jsum=0;
for(j=0;
j<
j++)
if(i==j||i+j==2)
sum=+a[i][j];
对角线元素和为:
sum);
样题4:
输入一个3×
3矩阵,找出该矩阵中值最小的元素,按行、列输出该矩阵以及最小元素。
a[3][3]={9,8,7,6,5,4,3,2,1};
i,j,min=a[0][0];
if(a[i][j]<
min)
min=a[i][j];
%5d"
a[i][j]);
矩阵中值最小的元素:
min);
样题5:
输入10个整数到一个一维数组中,按逆序重新存放,并输出。
二、以函数的编程为主,算法则相对简单,但是要求学生一定要用自定义函数实现。
样题1:
写一函数max,计算三个数中最大数
在主函数中输入三个数,调用该函数求出其中最大数并输出。
(要求:
三个数为实数)
编写一个函数,其功能是;
检验一个输入的四位数字是否是闰年,如果是闰年则返回1,否则返回0。
在主函数中从键盘输入一个四位数XXXX,调用该函数进行判断,如果是则输出‛
yes‛,否则输出‛no‛(提示:
如果该四位数能被4整除但不能被100整除,则是闰年;
如果该四位数能被400整除,则是闰年)
if((x%4==0&
x%100!
=0)||(x%400==0))
1;
else
0;
year;
请输入4位数的年份:
year);
if(fun(year))
YES\n"
NO\n"
编写函数打印以下图形,将图形中的行数作为函数的形参。
在main()函数中输入行数n,调用该函数打印行数为n的图形。
(如:
输入5,则打印出5行的三角形)
*
**
***
****
*****