版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计基础石河子大学智慧树知到答案2024年第一章测试
下列对C语言特点的描述中,错误的是(
)。
A:C语言编程简洁明了B:C语言移植性好C:C语言不是结构化程序设计语言D:C语言功能较强
答案:C下列关于C语言程序在结构上特点的描述中,错误的是(
)。
A:C语言程序是一个函数串B:C语言程序被执行时,通常是从第1个函数开始C:C语言程序的诸多函数中,只能有一个主函数D:C语言程序可以由一个或多个文件组成
答案:B在scanf()函数的格式说明符中,长整型数的输入格式说明符是(
)。
A:%dB:%lfC:%ldD:%x
答案:C在printf()函数的格式说明符中,双精度浮点型数的输出格式说明符是(
)。
A:%cB:%lfC:%ldD:%s
答案:B下列不是C语言特点的是?
A:语言传递参数均是以值传递(passbyvalue),另外也可以传递指针(apointerpassedbyvalue)。B:只有64个保留字(reservedkeywords),使变量、函数命名有更多弹性。C:不同的变量类型可以用结构体(struct)组合在一起。D:C语言是一个有结构化程序设计、具有变量作用域(variablescope)以及递归功能的过程式语言。
答案:B几乎没有不能用C语言实现的软件?
A:错B:对
答案:AC编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、TurboC等?
A:对B:错
答案:ADevC++是一个开源的编程软件吗?
A:错B:对
答案:B编程环境包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程对吗?
A:错B:对
答案:B任何程序都有主函数吗?
A:错B:对
答案:B
第二章测试
若i=3,j=i++;执行运算后i和j的值为?
A:i=4,j=4B:i=3,j=4C:i=3,j=3D:i=4,j=3
答案:D下列函数在屏幕上输出的结果是?#include<stdio.h>
intmain(void){
printf("学号姓名班级\n");
return0;}
A:"学号姓名班级\n"B:学号
姓名
班级C:"学号姓名班级"D:学号班级姓名
答案:B下列函数在屏幕上输出的结果是?#include<stdio.h>
intmain(void){
printf("****\n***\n**\n*\n");
return0;}
A:**********B:"****\n***\n**\n*\n"C:****\n***\n**\n*\nD:****\******
答案:A关于关系运算,下列说法正确的是?
A:关系运算符的优先级低于赋值运算符B:关系表达式的值是一个逻辑值,即“真”或“假”。C:>=和==的优先级相同。D:关系表达式“a>b”的值为“真”,表达式的值为0。
答案:B下列运算符,优先级最高的是?
A:||B:
&&C:>D:
!
答案:B关于if-else语句,下列说法错误的是?
A:else总是与它上面的,最近的,同一复合语句中的,未配对的if语句配对。B:if语句后面只能加逻辑表达式。C:当if和else数目不同时,可以加花括号来确定配对关系。D:在if语句中可嵌套一个或多个if语句。
答案:B关于scanf()函数,说法正确的是?
A:scanf()函数中“u”是用来输入有符号的十进制整数的格式字符。B:scanf()函数中“d”是用来输入无符号的十进制整数的格式字符。C:A.
scanf()函数中的“格式控制”后面应当是变量名。D:scanf()函数中“u”是用来输入无符号的十进制整数的格式字符。
答案:D语句for(i=1;i<=100;i++)sum=sum+i;的功能是?
A:1~100最大的数的值。B:1~100以内所有整数的和C:1~100以内所有奇数的和D:1~100以内所有偶数的和
答案:B关于函数,下列说法正确的是?
A:main函数和其他函数一样,可以互相调用。B:函数可以嵌套定义C:同一个函数可以被一个或多个函数调用任意多次。D:一个C程序只能由一个函数构成。
答案:C关于函数的类型,下列说法正确的是?
A:在调用被调用函数时,主调函数不向被调用函数传递数据。B:在调用无参函数时,主调函数向被调用函数传递数据。C:标准函数,即库函数。这是由用户自己定义的。D:用户可以自己定义函数。
答案:D
第三章测试
标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。
A:对B:错
答案:A下列是输出显示字符'a'的八进制ASCII码的语句,正确的是(
)。
A:printf("%s\n",'a');B:printf("%d\n",'a');C:printf("%o\n",'a');D:printf("%c\n",'a');
答案:CC语言中合法的字符常量是
。
A:110B:
nC:"n"D:'\n'
答案:D表达式1/5+3%4+4.5/5的值是
。
A:3.900000B:1.100000C:1.85D:3.9
答案:A有以下程序:
main(){int
m;m=10;printf("%d\n",(--m*3/5));
}
程序运行后的输出结果是
。
A:4B:7C:6D:5
答案:D表达式(int)(1/3+.5*3+5%3)
的计算结果为
。
A:2B:7C:1D:3
答案:D下列不正确的转义字符是
。
A:074B:\0
C:
\\D:\'
答案:A无符号基本整型的数据类型符为
,双精度实型数据类型符为
,字符型数据类型符为
。
A:
char
unsignedint
double
B:double
char
unsignedint
C:unsignedint
double
charD:
chara
unsignedint
double
答案:Cprintf("%c,%d",'a','a');的输出结果是
。
A:97
a
B:a,97C:97,aD:
a
97
答案:B下列格式符中,哪一个可以用于以八进制形式输出整数
。
A:%ldB:%oC:%dD:%8d
答案:B
第四章测试
以下运算符中,优先级最高的运算符是(
).
A:*=B:+C:(类型)D:>=
答案:C执行下列程序段后,m的值是(
).
intw=2,x=3,y=4,z=5,m;
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<z)?m:z;
A:5B:3C:4D:2
答案:D对下述程序,(
)是正确的判断.
#include<stdio.h>
voidmain()
{int
x,y;
scanf("%d,%d",&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf("%d,%d",x,y);}
A:语法错误,不能通过编译B:输入数据4和3,则输入3和4C:输入数据3和4,则输入4和5D:输入数据4和3,则输出4和4
答案:A两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是(
).
#include<stdio.h>
voidmain()
{
intx;
scanf("%d",&x);
if(x++>5)printf("%d",x);
else
printf("%d\n",x--);
}
A:7和5B:6和4C:7和4D:6和3
答案:A执行下列语句后的输出为(
).
intj=-1;
if(j<=1)
printf("****\n");
else
printf("%%%%\n");
A:%%%%B:%%%%cC:****D:有错,执行不正确
答案:C为了避免在嵌套的条件语句if···else中产生二义性,C语言规定:else子句总是与(
)配对.
A:其之后最近的ifB:缩排位置相同的ifC:其之前最近的ifD:同一行上的if
答案:CC语言的switch语句中case后(
).
A:可为任何量或表达式B:只能为常量C:只能为常量或常量表达式D:可为常量或表达式或有确定值的变量及表达式
答案:Cvoidmain(){
intx=1,a=0,b=0;
switch(x)
{
case
0:b++;
case
1:a++;
case
2:a++;b++;
}
printf("a=%d,b=%d",a,b);}该程序的输出结果是(
).
A:2,1B:2,2C:1,0D:1,1
答案:A有以下程序
main()
{
inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);}执行后输出结果是(
).
A:2B:4C:3D:编译时有错,无结果
答案:C当a=1、b=2、c=5、d=5时,执行下面的程序后,x的值是(
).
if(a<b)
if(c<d)x=1;
else
if(a<c)
if(b<d)x=2;
elsex=3;
elsex=6;
elsex=7;
A:6B:2C:3D:1
答案:B
第五章测试
对于while(!E)s;,若要执行循环体语句s,则E的数值应为
。
A:E不等于1B:E等于0C:E等于1D:E不等于0
答案:B下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。#include<stdio.h>main(){intn,sum=0;n=2345;do{sum=sum+
;n=n/10;}while(n);printf(“sum=%d”,sum);}
A:n/10B:(n%10)*(n%10)C:n%10D:(n/10)*(n/10)
答案:B对以下程序段,循环体执行的次数是
。intk=0;while(k=1)
k++;
A:执行一次B:有语法错误,不能执行C:无数次D:一次也不执行
答案:C下面程序段的执行结果是(
)。a=1;b=2;c=2;while(a<b<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);
A:2,1,0B:1,2,0C:1,2,1D:2,1,1
答案:B下列叙述中正确的是(
)。
A:do-while语句构成的循环不能用其他语句构成的循环来代替B:用do-while语句构成的循环,在while后的表达式为非零时结束循环C:do-while语句构成的循环只能用break语句退出D:用do-while语句构成的循环,在while后的表达式为零时结束循环
答案:D执行intx=-1;do{x=x*x;}while(x==0);循环时,下列说法正确的是(
)。
A:循环体将执行无限次B:循环体将执行一次C:循环体将执行两次D:系统将提示有语法错误
答案:B以下程序段的输出结果是(
)。intmain(){intnum=0,s=0;while(num<=2)
{num++;
s+=num;
}
printf("%d\n",s);}A)10
B)6
C)3
D)1
A:6
B:3C:10D:1
答案:A若S=0,执行循环语句“for(i=1;i<=10;i=i+3)s=s+i;”后,i的值为(
)。
A:11B:13C:10
D:12
答案:B与下面程序段等价的是。for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%4d”,n);}
A:for(n=100;n<=200;n++){if(n%3)printf(“%4d”,n);elsecontinue;break;}B:for(n=100;(n%3)||n<=200;n++)printf(“%4d”,n);C:
for(n=100;n<=200;n++)if(n%3!=0)printf(“%4d”,n);D:for(n=100;(n%3)&&n<=200;n++)printf(“%4d”,n);
答案:C下面程序段
。for(t=1;t<=100;t++){scanf(“%d”,&x);if(x<0)
break;printf(“%3d”,t);}
A:printf函数永远也不执行B:循环一次也不会被执行C:x>=0时什么也不输出D:当x<0时整个循环结束
答案:D
第六章测试
以下正确的函数形式是
。
A:doublefun(x,y){intx,y;doublez;z=x+y;returnz;}B:doublefun(intx,inty){doublez;z=x+y;returnz;}C:doublefun(intx,y){intz;returnz;}
D:
doublefun(intx,inty){z=x+y;returnz;}
答案:B若调用一个函数,且此函数中没有return语句,则正确的说法是。
A:该函数返回若干个系统默认值B:该函数能返回一个用户所希望的函数值C:该函数返回一个不确定的值D:该函数没有返回值
答案:C以下正确的说法是。
A:只有当实参和与其对应的形参同名时才共占用存储单元B:形参是虚拟的,不占用存储单元C:实参和与其对应的形参共占用一个存储单元D:实参和与其对应的形参各占用独立的存储单元
答案:D下面函数调用语句含有实参的个数为。func((exp1,exp2),(exp3,exp4,exp5));
A:2B:4C:5D:1
答案:A若使用一维数组名作函数实参,则以下正确的说法是。
A:实参数组名与形参数组名必须一致B:实参数组类型与形参数组类型可以不匹配C:在被调函数中,不需要考虑形参数组的大小D:必须在主调函数中说明此数组的大小
答案:C凡是函数中未指定存储类型的局部变量,其隐含的存储类别为。
A:外部(extern)B:自动(auto)C:寄存器(register)D:静态(static)
答案:B执行下列程序:#defineM(x,y)
(x*y)i=3;i=M(i,i+1)-8;变量i的值应为。
A:5B:3C:2D:4
答案:C执行下列程序,正确的输出是。intx=3,y=5;voidswap(){
inta;a=x;
x=y;
y=a;}intmain(){
intx=5,y=7;swap();printf(“%d,%d\n”,x,y);
return0;}
A:5,7B:5,3C:3,5D:7,5
答案:A以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。sub(intk,intn){inta1,a2;a2=
;a1=k-a2*10;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){printf(“%d”,k);n++;returnn;}elsereturn-1;}
int
main(){intn=0,k,m;for(k=10;k<=99;k++){m=sub(k,n);if(m!=-1)n=m;}printf(“\nn=%d”,n);return0;}
A:k/10B:k%10C:k*10%10D:k*10
答案:A有以下程序:#include<stdio.h>intfun(intx){
intp;if(x==0||x==1)
return3;p=x-fun(x-2);returnp;}intmain(){
printf(“%d\n”,fun(9));
return0;}正确的输出是。
A:4B:9C:7D:5
答案:C
第七章测试
下列数组定义语句中,正确的是(
)。
A:staticinta[][]={{1,2,3},{4,5,6}};B:inta[][]={1,2,3,4,5,6};
C:inta[][3]={1,2,3,4,5,6};D:chara[2]「3]='a','b';
答案:C设有下列数据定义语句,则数组元素x[i]的值是(
)。
inti=3,x[4]={1,2,3};
A:3B:2C:0
D:1
答案:C运行下列程序的输出结果是(
)
main(){inta[]={1,2,3,4,5},i;for(i=1;i<5;i++)
printf("%d",a[i]-a[i-1]);}
A:1111
B:111
C:222D:11111
答案:A若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(
).
A:4B:2
C:3D:无确定值
答案:C程序运行后的输出结果是(
)。
#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;
printf(“%d,%d\n”,strlen(a),sizeof(a));}
A:8,8
B:7,4
C:10,10D:4,10
答案:D程序运行后的输出结果是(
)。#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2};inti,j,t=1;for(i=0;i<3;i++)
for(j=i;j<=i;j++)
t+=b[i][b[j][i]];
printf("%d\n",t);}
A:3B:1C:4D:9
答案:C下面是对s的初始化,其中不正确的是。
A:chars[5]=“”;B:chars[5]={“abc”};C:chars[5]={‘a’,‘b’,‘c’};
D:chars[5]=“abcdef”;
答案:D下面程序段的运行结果是。charc[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);
A:‘a’‘b’B:abC:cab
D:abc
答案:B对两个数组a和b进行如下初始化chara[]=“ABCDEF”;charb[]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};则以下叙述正确的是。
A:a与b长度相同B:a数组比b数组长度长C:a和b中都存放字符串D:a与b数组完全相同
答案:B有两个字符数组a、b,则以下正确的输入格式是。
A:scanf(“%s%s”,a,b);B:gets(a,b);C:scanf(“%s%s”,&a,&b);D:gets(“a”),get(“b”);
答案:A
第八章测试
以下程序有错,错误原因是_。int
main()
{int*p,i;char*q,ch;p=&i;
q=&ch;
*p=40;
*p=*q;
┆}
A:q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;
语句
B:q没有指向具体的存储单元,所以*q没有实际意义C:p和q的类型不一致,不能执行*p=*q;语句D:
*p中存放的是地址值,因此不能执行*p=40;语句
答案:C已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是
。
voidprint_value(int*x)
{printf(“%d\n”,++*x);
}
A:23B:26C:24D:25
答案:B下面程序的运行结果是。
#include<stdio.h>int
main(){staticchara[]=”Language”,b[]=”programe”;
char*p1,*p2;
intk;
p1=a;
p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))
printf(“%c”,*(p1+k));
}
A:LanguageB:有语法错C:gaeD:ga
答案:C下面程序的运行结果是。#include<stdio.h>#include<string.h>main(){char*p1,*p2,str[50]=”abc”;
p1=”abc”;p2=”abc”;
strcpy(str+1,strcat(p1,p2));
printf(“%s\n”,str);}
A:cabcabcB:aabcabcC:abcabcabcD:bcabcabc
答案:B若有说明:char*language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式*language[1]>*language[3]比较的是。
A:字符F和字符PB:字符串BASIC和字符串JAVAC:字符串FORTRAN和字符串PASCALD:字符B和字符J
答案:B若有说明语句chara[]=”Itismine”;
char*p=”Itismine”;则以下不正确的叙述是_。
A:p变量中存放的地址值可以改变B:a+1表示的是字符t的地址C:a中只能存放10个字符D:p指向另外的字符串时,字符串的长度不受限制
答案:C以下程序调用fun函数求数组中最大值所在元素的下标。#include<stdio.h>voidfun(int*s,intn,int*k){
inti;for(i=0,*k=i;i<n;i++)
if(s[i]>s[*k])
_}intmain(){
inta[5]={1,8,3,6,9},k;fun(a,5,&k);printf(“%d,%d\n”,k,a[k]);return0;}
A:k=i-s;B:*k=i;C:*k=i-s;D:k=i;
答案:B有以下程序:#include<stdio.h>voidfun(int*p,int*q){
int
*t;t=p;
p=q;
q=t;}intmain(){
inta=0,b=9;fun(&a,&b);printf(“%d,%d\n”,a,b);return0;}程序的输出结果是。
A:9,0B:0,0C:0,9D:9,9
答案:C以下正确的定义语句和赋值语句是_。
A:
intb[10],*q;
char*s;
q=b;
s=b;B:
doubleb[3][5],s[5][3],*q;
q=b;
s=q;C:intb[3][5],(*p)[3],(*q)[5];
p=b;
q=b;D:charb[3][5],*p[3];
p[0]=b[0];
p[2]=*b+4;
答案:D
A:p1=p2;B:p1=*p2;C:*p1=p2;D:*p1=*p2;
答案:A
第九章测试
有以下结构体定义:structexample{intx;inty;}v1;则正确的引用或定义是(
)
。
A:structexamplev2={10};B:examplev2;v2.x=10;C:
v1.x=10;D:structv2;v2.x=10;
答案:C对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是(
)。structdate{intyear,month,day;
};structworklist{charname[20];
charsex;
structdatebirth;}person;
A:person.year=1976B:person.birth.year=1976
C:
year=1976
D:birth.year=1976
答案:B根据下述定义,可以输出字符'A'的语句是(
)。structperson{charname[11];struct
{charname[11];
intage;}other;};structpersonman[10]={{"Jone",{"Paul",20}},{"Paul",{"Mary",18}},{"Mary",{"Adam",23}},{"Adam",{"Jone",22}}};
A:printf("%c",man[3].name);B:printf("%c",[0]);C:printf("%c",man[2].(*other[0]));D:printf("%c",man[2].[0]);
答案:D若有以下程序段:structst{intn;structst*next;};structsta[3]={5,&a[1],7,&a[2],9,'\0'},*p=a;则值为6的表达式为(
)。
A:p++->n
B:++p->nC:p->n++
D:
(*p).n++
答案:B运行下列程序段,输出结果是(
)
。
structcountry
{intnum;
charname[10];
}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};
structcountry*p;
p=x+2;
printf("%d,%c",p->num,(*p).name[2]);
A:2,USAB:4,g
C:3,aD:
5,Spanish
答案:C定义以下结构体数组
structc
{intx;
inty;
}s[2]={1,3,2,7};语句printf("%d",s[0].x*s[1].x)的输出结果为(
)
A:
6B:21C:2D:14
答案:C定义以下结构体类型struct
student{char
name[10];float
score[50];double
average;}stud1;则stud1占用内存的字节数是(
)。
A:228B:64C:218D:7
答案:C能在一个存储区内处理不同的类型的数据叫结构体。
A:错B:对
答案:A在编译时对结构体类型不分配空间,只能对结构体变量分配空间。
A:对B:错
答案:A结构体一旦定义,系统就给它分配所需的内存单元。
A:对B:错
答案:B
第十章测试
以下叙述中错误的是(
)。
A:C语言中,随机文件以二进制代码形式存储数据
B:C语言中的文本文件以ASCII码形式存储数据C:C语言中对二进制文件的访问速度比文本文件快D:语句FILE
fp;定义了一个名为fp的文件指针
答案:D有以下程序
#include
<stdio.h>
main()
{FILE
*fp;
int
i,k,n;
fp=fopen("data.dat","w+");
for(i=1;i<6;i++)
{
fprintf(fp,"%d
",i);
if(i%3==0)
fprintf(fp,"\n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是
(
)。
A:1
2B:1
4
C:123
45
D:0
0
答案:A以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是(
)。
A:feof(fp)B:fgetc(fp)C:ftell(fp)D:rewind(fp)
答案:D以下程序
#include
"stdio.h"
voidWriteStr(char
*fn,char
*str)
{
FILE
*fp;
fp=fopen(fn,"W");
fputs(str,fp);
fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是(
)。
A:endB:sta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论