c语言.docx
- 文档编号:28947369
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:23KB
c语言.docx
《c语言.docx》由会员分享,可在线阅读,更多相关《c语言.docx(20页珍藏版)》请在冰豆网上搜索。
c语言
1.根据C语言的特点以下选项中不正确的选项是______
(A)习惯用小写字母,大小写字母有区别。
(B)C语言主要由语句构成,语句是C程序的基本单位。
(C)C语言本身没有输入输出语句。
(D)用C语言写的程序可移植性好。
2.C语言中运算对象必须是整型数据的运算符是______
(A)%(B)/(C)!
(D)&&
3.若变量已正确定义并赋值,符合C语言语法的表达式正确的是______
(A)a=a+7;(B)a=7+b+c,a++(C)int(12.3%4)(D)a=a+7=c+b
4.下列可以正确表示字符型常量的是______
(A)"a"(B)'\t'(C)'\028'(D)'xy'
5.已知intx=1,y=2,z;执行语句z=x>y?
++x:
++y;后,z的值是______
(A)1(B)2(C)3(D)4
6.若变量已正确定义,要将a和b中的数据进行交换,下面选项中不正确的是______
(A)a=a+b,b=a-b,a=a-b;(B)t=a,a=b,b=t;
(C)a=t;t=b;b=a;(D)t=b;b=a;a=t;
7.已知intx=6;则执行x+=x-=x*x;语句后,x的值为______
(A)36(B)-60(C)60(D)-24
8.以下程序的输出结果是______
(A)0(B)1(C)2(D)3
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf("%d\n",c);
}
9.已知a,b,c的值均为1,且均为int类型变量,则执行++a||++b&&++c;语句后,a,b,c的值分别为______
(A)2,2,1(B)2,1,1(C)2,2,2(D)2,1,2
10.若变量已正确定义,以下语句的输出结果是______
(A)%#(B)*%$(C)%(D)%$*
x=0;y=2;z=3;
switch(x)
{case0:
switch(y)
{case1:
printf("*");break;
case2:
printf("%");break;
}
case1:
switch(z)
{case1:
printf("$");
case2:
printf("*");break;
default:
printf("#");
}
}
11.若有以下宏定义
#defineN2
#defineY(n)((N+1)*n)
则执行语句z=2*(N+Y(5));后的结果为______
(A)语句有错误(B)z=34(C)z=70(D)z值不确定
12.以下不是死循环的语句为______
(A)for(;;x+=i);
(B)while
(1){x++;}
(C)for(i=10;;i--)sum+=i
(D)for(;(c=getchar())!
='\n';)printf("%c",c);
13.以下程序段的输出结果是______
(A)9(B)1(C)11(D)10
intk,j,s;
for(k=2;k<6;k++,k++
{
s=1;
for(j=k;j<6;j++
s+=j;
}
printf("%d\n",s;
14.已知:
inta[3][4];则对数组元素引用正确的是______
(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a
(2)
(1)
15.已知:
charstr[]="ab\n\018\\\"";则执行语句:
printf("%d\n",strlen(str));的结果是
(A)3(B)7(C)6(D)12
16.以下不能对二维数组a进行正确初始化的语句是______
(A)inta[2][3]={0};(B)inta[][3]={{1,2}{0}};
(C)inta[2][3]={{1,2},{3,4},{5,6}};(D)inta[][3]={1,2,3,4,5,6};
17.下面对C语言的描述中,正确的是_______
(A)在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参。
(B)C语言函数既可以嵌套定义又可以递归调用。
(C)函数必须有返回值,否则不能使用函数。
(D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中。
18.已知int*p();这里的p是______
(A)指向int类型的指针变量。
(B)int类型的指针数组。
(C)一个函数,该函数的返回值是指向int类型的指针变量。
(D)一个指向函数的指针变量,该函数的返回值是int类型。
19.已知inta[3][4],*p=a;p+=6;那么*p和_______的值相同。
(A)*(a+6)(B)*(&a[0]+6)
(C)*(a[1]+3)(D)*(&a[0][0]+6)
20.已知函数定义如下:
abcd(char*s1,char*s2)
{
while(*s2++=*s1++);
}
函数abcd的功能是______
(A)串复制(B)求串长(C)串比较(D)串反向
21.标准库函数fgets(s,n,f)的功能是______
(A)从文件f中读取长度为n的字符串存入指针s所指的内存
(B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
(C)从文件f中读取n个字符串存入指针s所指的内存
(D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
22.以下程序的输出结果是______
(A)100(B)160(C)120(D)64
main()
{
charx=040;
printf("%d\n",x=x<<1);
}
23.已知:
union
{inti;
charc;
floata;
}test;
则sizeof(test)的值是______
(A)1(B)2(C)4(D)7
24.下列程序的输出结果是______
(A)c(B)d(C)e(D)f
#include
char*p="abcdefghijklmnopq";
main()
{
while(*p++!
='e');
printf("%c\n",*p);
}
25.以下程序的输出结果是______
(A)GFEDCBA(B)AGADAGA
(C)AGAAGAG(D)GAGGAGA
#include
#include
voidfun(char*w,intm)
{
chars,*p1,*p2;
p1=w;p2=w+m-1;
while(p1
{s=*p1++;*p1=*p2--;*p2=s;
}
}
main()
{
chara[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
26.程序读入20个整数,统计非负数个数,并计算非负数之和。
请填空完成。
#include
voidmain()
{
inti,a[20],s,count;
s=count=0;
for(i=0;i<20;i++)
scanf("%d",____________);
for(i=0;i<20;i++)
{if(a[i]<0)
_____________;
s+=a[i];
count++;
}
printf("s=%d\tcount=%d\n",s,count);
}
27.下面程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。
请填空完成。
#include
main()
{
charstr[81],*sptr;
inti;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]=='\n')break;
}
str[i]=_____________;
sptr=str;
while(*sptr)
putchar(*sptr______________);
}
28.下面给定的程序的功能是:
读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行,(这里的“单词”是指由空格隔开的字符串)。
例如,若输入Iamastudenttotaketheexamination,则应输出IAmAStudentToTakeTheExamination。
请填空完成。
#include
#include
#include
upfst(char*p)
{
intk=0;
for(;*p;____________)
if(k)
{
if(*p==____________)k=0;}
elseif(*p!
='')
{k=1;*p=toupper(*p);}
}
main()
{
charchrstr[81];
printf("\nPleaseenteranEnglishtextline:
");
gets(chrstr);
printf("\n\nBeforechanging:
\n%s",chrstr);
upfst(chrstr);
printf("\nAterchanging:
\n%s\n",chrstr);
}
29.以下fun函数的功能是:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
请填空完成。
#include
#defineN20
voidfun(inta[],intn)
{
inti,j,k,t;
for(i=0;i
{
____________;
for(j=i+1;j
if(____________)
k=j;
t=a[k];a[k]=a[i];a[i]=t;
}
}
main()
{
inta[N]={9,6,8,3,-1},i,m=5;
for(i=0;i
fun(a,m);
for(i=0;i
}
30.以下是将两个字符串连接起来的程序,请填空完成。
main()
{chars1[80],s2[40];
inti=0,j=0;
printf("\nInputstring1:
");scanf("%s",s1);
printf("\nInputstring2:
");scanf("%s",s2);
while(s1[i]!
='\0')
___________;
while(s2[j]!
='\0')
____________;
s1[i]='\0';
printf("Thenewstringis%s\n",s1);
}
三、请改正下列程序中的错误,使之能得出正确的结果。
注意:
不要改动main函数,不得增行或减行,也不得更改程序的结构!
31.给定程序中函数fun的功能是:
判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
/*********found*********/
voidfun(charstr,charch)
{while(*str&&*str!
=ch)
str++;
/**********found**********/
if(*str==ch)
{str[0]=ch;
/**********found**********/
str[1]='0';
}
}
main()
{chars[81],c;
printf("\nPleaseenterastring:
\n");
gets(s);
printf("\nPleaseenterthecharactertosearch:
");
c=getchar();
fun(s,c);
printf("\nTheresultis%s\n",s);
}
32.给定程序中函数fun的功能是:
求广义菲玻那契级数的第n项。
广义菲玻那契级数的前n项为:
1,1,1,3,5,9,17,31,……项值通过函数返回main()函数。
例如,若n=15,则应输出:
2209。
#include
longfun(intn)
{longa=1,b=1,c=1,d=1,k;
/**********found*********/
for(k=4;k<=n;k++)
{d=a+b+c;
/**********found*********/
a=b;b=c;c=d
}
returnd;
}
main()
{intn=15;
printf("thevalueis:
%d\n",fun(n));
}
四、程序设计(共2题,第一题5分,第二题10分,共15分)
33.求1-3+5-7+……-99+101的值。
(5分)
34.请编写一个函数fun,它的功能是:
求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
(10分)。
#defineM4
#include
fun(inta[][M])
{
}
main()
{intarr[2][M]={5,8,3,45,76,-4,12,82};
printf("max=%d\n",fun(arr));
}
C语言程序设计试卷(A卷)标准答案及评分标准
一、单项选择题(每题2分,共50分)
1.B2.A3.B4.B5.C
6.C7.B8.C9.B10.A
11.B12.D13.D14.C15.B
16.C17.A18.C19.D20.A
21.B22.D23.C24.D25.C
二、程序填空题(每空2分,共20分)
26.&a[i]continue
27.'\0'++
28.p++''
30.i++s1[i++]=s2[j++]
三、修改程序题(共有5处错误,每处3分,共15分)
31.将fun函数中的参数charstr改为char*str
将if语句中的*str==ch改为*str!
=ch
str[1]='0'改为str[1]='\0'
32.将For改为for
在c=d后面加;
四、程序设计题(共2题,第一题5分,第二题10分,共15分)
注意:
编程方法不唯一,以下为参考答案。
另外,主要测试编程方法,语法错误在不影响阅读情况下可不扣分,如少写分号等。
33.
方法一:
main()
{inti,j=1,sum=0;
for(i=1;i<=101;i+=2)
{
sum+=i*j;
j*=(-1);
}
printf("sum=%d",sum);
}
方法二:
main()
{
inti,s1=0,s2=0;
for(i=1;i<=101;i+=4)
s1+=i;
for(i=-3;i>=-99;i-=4)或for(i=-99;i<=-3;i+=4)
s2+=i;
printf("sum=%d",s1+s2);
}
34.
方法一:
fun(inta[][M])
{
inti,j,max;
max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<>
if(a[i][j]>max)
max=a[i][j];
returnmax;
}
一、单项选择题。
1.以下合法的用户标识符是______
(A)456p(B)w.ww(C)p101p(D)stu-num
2.以下定义语句中正确的是______
(A)chara='A'b='B';(B)inta=b=10;
(C)inta=10,*b=&a;(D)int*a,b=&a;
3.在C语言中,字符型(char)数据在内存中存放的形式为______
(A)BCD码(B)原码(C)补码(D)ASCII码
4.C语言中,下列合法的长整型常量是______
(A)'a'(B)0.012345(C)2.134e12(D)0L
5.已知inti=0;执行语句k=(i++)+(++i);后,k的值是______
(A)2(B)0(C)3(D)5
6.设m,n,a,b,c,d的值均为0,执行(m=a==b)||(n=c==d)后,m,n的值是______
(A)0,0(B)0,1(C)1,0(D)1,1
7.设有定义:
inta=5,b;则执行下列语句后,b的值不为2的是______
(A)b=a/2;)(B)b=6-(--a;)(C)b=(a>3?
2:
4);(D)b=a%2;
8.若有定义:
inta=3,b=4,*c=&a;则执行语句*c=a+b;后,a的值为______
(A)3(B)4(C)7(D)3.0
9.用语句scanf("x=%d,y=%d",&x,&y);使x的值为5,y的值为8,则正确的输入是______
(A)5,8(B)58(C)x=5x=8(D)x=5,y=8
10.下面程序段的输出结果是______
(A)7(B)60(C)6(D)1
#defineMAX(x,y)(x)>(y)?
(x):
(y)
main()
{
inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
11.下面程序的输出结果是______
main()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
(A)a=1,b=0(B)a=2,b=1(C)a=2,b=2(D)a=0,b=1
12.表达式(int)3.6*3的值______
(A)9(B)10(C)10.8(D)18
13.以下程序的输出结果是______
main()
{
inta=1,b;
for(b=1;b<=10;b++)
{
if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
(A)3(B)4(C)5(D)6
14.若有定义:
intx,y;则循环语句for(x=0,y=0;(y!
=123)||(x<4);x++);的循环次数是______
(A)无限次(B)4次(C)0次(D)3次
15.已知:
charstr[]="ab\n\t\\\"";则函数printf("%d\n",strlen(str))的输出结果是______
(A)3(B)7(C)6(D)12
16.已知:
inta[10];则对a数组元素的正确引用是______
(A)a[10](B)a[2.5](C)a(4)(D)a[10-2]
17.在C语言中,如果对函数类型未加说明,则函数的隐含类型为______
(A)double(B)void(C)int(D)char
18.函数调用语句f((s1,s2,s3),(s4,s5,s6,s7));中参数的个数是______
(A)2(B)3(C)6(D)7
19.设inta=12;则执行语句a+=a-=a*=a;后,a的值为______
(A)144(B)0(C)12(D)24
20.下面关于字符串的说明中,错误的是______
(A)charstr[7]="FORTRAN";
(B)charstr[]="FORTRAN";
(C)char*str="FORTRAN";
(D)charstr[]={'F','O','R','T','R','A','N'}
21.设有定义:
chara[10]="ABCD",*p=a;,则*(p+4)的值是______
(A)"ABCD"(B)'D'(C)'\0'(D)不确定
22.以下程序的输出结果是______
(A)3(B)2(C)1(D)0
main()
{
inti,j,k,n[3];
for(i=0;i<3;i++)n[i]=0;
k=2;
for(i=0;i
for(j=0;j
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
23.语句strcat(srcpy(str1,str2),str3);的功能是______
(A)将字符串str1复制到字符串str2中后再连接到字符串str3之后。
(B)将字符串str1连接到字符串str2中后再复制到字符串str3之后。
(C)将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。
(D)将字符串str2连接到字符串str1中后再将字符串str3复制到字符串str1中。
24.C语言可以处理的文件类型是______
(A)文本文件和数据文件(B)文本文件和二进制文件
(C)数据文件和二进制文件(D)数据代码文件
25.若fp是指向某文件的指针,且已读到文件的末尾,则表达式feof(fp)的值为______
(A)EOF(B)0(C)非零值(D)NULL
二、程序填空题
26.下列程序的功能是把从键盘上输入的整数取绝对值后输出。
请填空完成。
#include
voidmain()
{
intx;
scanf("%d",&x);
if(x<0)
____________;
printf("%d\n",x);
}
27.下面程序的功能是:
把从键盘输入的10个整型数按相反的顺序输出。
main()
{
inti,a[10],*p=&a[9];
for(i=0;i<10;i++)
scanf("%d",___________);
for(;p>=a;p--)
printf("%3d",____________);
}
28.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依次类推。
请填空完成。
fun(intx,intb[])
{
intk=0,r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言