广州大学实验报告练习总结题.docx
《广州大学实验报告练习总结题.docx》由会员分享,可在线阅读,更多相关《广州大学实验报告练习总结题.docx(14页珍藏版)》请在冰豆网上搜索。
广州大学实验报告练习总结题
一、实验一:
预习题(选择题)
1、不正确的C程序描述是B
A.每个语句和数据定义的最后必须有个分号
B.一个C程序的书写格式要求严格,一行只能写一个语句
C.C语言的本身没有输入输出语句
D.一个C程序总是从main()函数开始执行
2、以下C语言正确结构形式的描述是C
A.main()函数必须放在程序之首
B.每一行只能写一个语句,每个语句之后必须有分号
C.C语言没有输入输出语句
D.C语言的自由度大,可以从任何函数执行
3、在C语言系统中,假设int类型数据占2个字节,则double、long、unsignedint、char类型数据所占字节数分别多少D
A.8,2,4,1B.2,8,4,1C.4,2,8,1D.8,4,2,1
4、下面叙述不正确的是B
A.C语句末尾必须有分号
B.C语言中无论是整数还是实数都能准确的表示
C.运算符“%”只能用于整数运算
D.乘除运算符优先级高于加减运算符
5、若有说明语句:
inta;floatb;,以下输入语句正确的是C
A.scanf("%f%f",&a,&b);B.scanf("%f%d",&a,&b);
C.scanf("%d,%f",&a,&b);D.scanf("%6.2f%6.2f",&a,&b);
6、下面不属于C语言的数据类型是C
A.整型B.实型C.逻辑型D.双精度实型分析
7、已知a为int型,b为double型,c为float型,d为char型,则表达式a+b*c-d/a结果的类型为C
A.int型B.float型C.double型D.char型分析
8、下面四个选项中,均是不合法的用户标识符的选项是C
A.BA、x_0、doB.float、1a0、_Y
B.C.x-y、goto、123D._123、tmp、CHAR
9、下面正确的字符常量是B
A."a"B.'\\'C."\n"D."\376"
10、已知m=48,ch='a',n=0;则表达式(m>=n&&ch<'b'&&!
n)的值是B
A.0B.1C.真D.非0
一、实验二:
预习题(选择题)
1、下面程序段
intk=2;
while(k=0){printf(“%d”,k);k--;}
则下面描述中正确的是C
A.while循环执行10次B.循环是无限循环
C.循环题语句一次也不执行D.循环体语句执行一次
2、以下程序段的循环次数是B
for(i=2;i==0;)printf(“%d”,i--);
A.无限次B.0次C.1次D.2次
3、下面程序的输出结果是B
main()
{charc=’A’;
intk=0;
do{
switch(c++){
case‘A’:
k++;break;
case‘B’:
k--;
case‘C’:
k+=2;break;
case‘D’:
k%=2;continue;
case‘E’:
k*=10;break;
default:
k/=3;
}
k++;
}while(c<’G’);
printf(“k=%d”,k);
}
A.k=3
B.k=4
C.k=2
D.k=0
4、下面程序的输出结果是B
main()
{intx=9;
for(;x>0;x--){
if(x%3==0){
printf(“%d”,--x);
continue;
}
}
}
A.741
B.852
C.963
D.875421
5、下述程序段的运行结果是C
inta=1,b=2,c=3,t;
while(a
printf(“%d,%d,%d”,a,b,c);
A.1,2,0B.2,1,0C.1,2,1D.2,1,1
6、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择A 填空。
main()
{intm=0,n=0;
charc;
while((【】)!
’\n’)
{
if(c>=’A’&&c<=’Z’)m++;
if(c>=’a’&&c<=’z’)n++;
}
}
A.c=getchar()B.getchar()C.c==getchar()D.scanf(“%c”,&c)
7、下述语句执行后,变量k的值是B
intk=1;
while(k++<10);
A.10B.11C.9D.无限循环,值不定
8、下面程序的输出结果是B
main()
{intk=0,m=0,i,j;
for(i=0;i<2;i++){
for(j=0;j<3;j++)
k++;
k-=j;
}
m=i+j;
printf(“k=%d,m=%d”,k,m);
}
A.k=0,m=3B.k=0,m=5C.k=1,m=3D.k=1,m=5
9、下面for循环语句B
inti,k;
for(i=0,k=-1;k=1;i++,k++)
printf(“***”);
A.判断循环结束的条件非法B.是无限循环
C.只循环一次D.一次也不循环
10、执行语句for(i=1;i++<4;);后变量i的值是C
A.3B.4C.5D.不定
一、实验三:
预习题(选择题)
1.以下正确的说法是B。
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义
C.系统不允许用户重新定义标准库函数
D.用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。
2.以下正确的说法是A。
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共占用一个存储单元
C.只有当实参和与其对应的形参同名时才共占用相同的存储单元
D.形参时虚拟的,不占用存储单元
3.以下正确的函数定义是A。
A.doublefun(intx,inty)
B.doublefun(intx;inty)
C.doublefun(intx,inty);
D.doublefun(intx,y)
4.若调用一个函数,且此函数中没有return语句,则正确的说法是D。
A.该函数没有返回值
B.该函数返回若干个系统默认值
C.能返回一个用户所希望的函数值
D.返回一个不确定的值
5.以下不正确的说法是B。
A.实参可以是常量,变量或表达式
B.形参可以是常量,变量或表达式
C.实参可以为任意类型
D.如果形参和实参的类型不一致,以形参类型为准
6.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是B。
A.地址传递
B.值传递
C.有实参传给形参,再由形参传给实参
D.由用户指定传递方式
7.以下程序有语法错误,有关错误原因的正确说法是C。
main()
{intG=5,k;
voidprt_char();
……
k=prt_char(G);
……
}
A.语句voidprt_char();有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
8.C语言规定,函数返回值的类型是由决定的D。
A.return语句中的表达式类型
B.调用该函数时的主调函数类型
C.调用该函数时由系统临时
D.在定义函数时所指定的函数类型
9.以下正确的描述是B。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
10.若用数组名作为函数调用的实参,传递给形参的是A。
A.数组的首地址
B.数组中第一个元素的值
C.数组中的全部元素的值
D.数组元素的个数
二、实验四:
预习题(选择题)
1.变量的指针,其含义是指该变量的B。
A)值B)地址C)名D)一个标志
2.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是B。
A)k=*ptr1+*ptr2B)ptr2=kC)ptr1=ptr2D)k=*ptr1*(*ptr2)
3.若有说明:
int*p,m=5,n;以下程序段正确的是D。
A)p=&n;B)p=&n;
scanf(“%d”,&p);scanf(“%d”,*p);
C)scanf(“%d”,&n);D)p=&n;
*p=n;*p=m;
4.已有变量定义和函数调用语句:
inta=25;print_value(&a);下面函数的输出结果是D。
voidprint_value(int*x)
{printf(“%d\n”,++*x);}
A)23B)24C)25D)26
5.若有说明:
int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是C。
A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;
C)p1=&m;p2=p1;D)p1=&m;*p1=*p2;
6.若有语句:
int*p,a=4;和p=&a;下面均代表地址的一组选项是D。
A)a,p,*&aB)&*a,&a,*pC)*&p,*p,&aD)&a,&*p,p
7.下面判断正确的是C。
A)char*a=”china”;等价于char*a;*a=”china”;
B)charstr[10]={“china”};等价于charstr[10];str[]={“china”;}
C)char*s=”china”;等价于char*s;s=”china”;
D)charc[4]=”abc”,d[4]=”abc”;等价于charc[4]=d[4]=”abc”;
8.下面程序段中,for循环的执行次数是C。
char*s="\ta\018bc";
for(;*s!
='\0';s++)
printf("*");
A)9B)7C)6D)5
9.下面能正确进行字符串赋值操作的是C。
A)chars[5]={“ABCDE”};B)chars[5]={‘A’,’B’,’C’,’D’,’E’};
C)char*s;s=”ABCDE”;D)char*s;scanf(“%s”,s);
10.下面程序段的运行结果是C。
char*s=”abcde”;
s+=2;printf(“%d”,s);
A)cdeB)字符’c’C)字符’c’的地址D)不确定
11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是B。
A)c=*p1+*p2B)p2=cC)p1=p2D)c=*p1*(*p2)
12.设有程序段:
chars[]=”china”;char*p;p=s;则下面叙述正确的是D。
A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等
D)*p与s[0]相等
13.以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是D。
A)strcpy1(char*p1,char*p2)
{while((*p1++=*p2++)!
=’\0’);}
B)strcpy2(char*p1,char*p2)
{while((*p1=*p2)!
=’\0’){p1++;p2++}}
C)strcpy3(char*p1,char*p2)
{while(*p1++=*p2++);}
D)strcpy4(char*p1,char*p2)
{while(*p2)*p1++=*p2++;}(差个’\0’)
14.下面程序段的运行结果是C。
chara[]=”language”,*p;
p=a;
while(*p!
=’u’){printf(“%c”,*p-32);p++;}
A)LANGUAGEB)languageC)LANGD)langUAGE
15.若有语句:
chars1[]=”string”,s2[8],*s3,*s4=”string2”;则库函数strcpy的错误调用是ABCD。
A)strcpy(s1,”string2”);B)strcpy(s4,”string1”);
C)strcpy(s3,”string1”);D)strcpy(s1,s2);
16.以下与库函数strcmp(char*s,char*t)功能相等的程序段是C。
A)strcmp1(char*s,char*t)
{for(;*s++=*t++;)
if(*s==’\0’)return0;
return(*s-*t);
}
B)strcmp2(char*s,char*t)
{for(;*s++=*t++;)
if(!
*s)return0;
return(*s-*t);
}
C)strcmp3(char*s,char*t)
{for(;*t==*s;)
{if(!
*t)return0;t++;s++;}
return(*s-*t);
}
D)strcmp4(char*s,char*t)
{for(;*s==*t;s++,t++)
if(!
*s)return0;
return(*t-*s);
}
17.以下说明不正确的是D。
A)chara[10]=”china”;B)chara[10],*p=a;p=”china”;
C)char*a;a=”china”;D)chara[10],*p;p=a=”china”;
18.设有说明语句:
chara[]=”Itismine”;char*p=”Itismine”;则以下不正确的叙述是D。
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
19.若已定义chars[10];则在下面表达式中不表示s[1]的地址是B。
A)s+1B)s++C)&s[0]+1D)&s[1]
20.若有定义:
inta[5],*p=a;则对a数组元素的正确引用是D。
A)*&a[5]B)a+2C)*(p+5)D)*(a+2)
21.若有定义:
inta[5],*p=a;则对a数组元素地址的正确引用是D。
A)p+5(溢出)B)*a+1C)&a+1D)&a[0]
22.若有定义:
inta[2][3];则对a数组的第i行第j列元素值的正确引用是A。
A)*(*(a+i)+j)B)(a+i)[j]C)*(a+i+j)D)*(a+i)+j
23.若有定义:
inta[2][3];则对a数组的第i行第j列元素地址的正确引用是D。
A)*(a[i]+j)B)(a+i)C)*(a+j)D)a[i]+j
24.若有程序段:
inta[2][3],(*p)[3];p=a;则对a数组元素地址的正确引用是C。
A)*(p+2)B)p[2]C)p[1]+1D)(p+1)+2
25.若有程序段:
inta[2][3],(*p)[3];p=a;则对a数组元素的正确引用是C。
A)(p+1)[0]B)*(*(p+2)+1)C)*(p[1]+1)D)p[1]+2
26.在C程序中,指针变量能够赋地址值或null值。
27.在C语言中,数组名是一个不可改变的地址,不能对它进行赋值运算。
28.若有定义语句:
inta[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是2。
29.若有定义:
inta[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是12,*(a[1]+2)的值是12。
30若有程序段:
int*p[3],a[6],i;
for(i=0;i<3;i++)
p[i]=&a[2*i];
则*p[0]引用的是a数组元素a[0],*(p[1]+1)引用的是a数组元素a[4]。
◆程序填空题
1.下面函数的功能是从输入的十个字符串中找出最大的那个串,请填
(2)空使程序完整。
voidfun(charstr[10][81],char**sp)
{inti;
*sp=【str[0]】;
for(i=1;i<10;i++)
if(strlen(*sp)【*sp=str[i]】;
}
2.下面函数的功能是将一个整数字符串转换为一个整数,例如:
”-1234”转换为1234,请填(3)空使程序完整。
intchnum(char*p)
{intnum=0,k,len,j;
len=strlen(p);
for(;【*p!
='\0'】;p++)
{
k=【*p-'0'】;
j=(--len);
while(【j-->0】)
k=k*10;
num=num+k;
}
return(num);
}
3.下面函数的功能统计子串substr在母串str中出现的次数,请填(3)空使程序完整。
intcount(char*str,char*substr)
{inti,j,k,num=0;
for(i=0;【str[i]!
='\0'】;i++)
for(【j=i】,k=0;
substr[k]==str[j];k++,j++)
if(substr[【k+1】]==’\0’){
num++;
break;
}
return(num);
}
4.下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“384”,请填
(2)空使程序完整。
voidconvert(char*a,intn)
{inti;
*a=【n%10+'0'】;
if((i=n/10)!
=0)
convert(【++a】,i);
}
5.下面函数的功能是用递归法求数组中的最大值及下标值,请填
(2)空使程序完整。
voidfindmax(int*a,intn,inti,int*pk)
{if(iif(a[i]>a[*pk])
【*pk=i;】;
findmax(【a,n,i+1,pk】);
}
}
6.下面函数的功能是将两个字符串s1和s2连接起来,请填(3)空使程序完整。
voidconj(char*s1,char*s2)
{
char*p=s1;
while(*s1)【s1++】;
while(*s2){*s1=【*s2】;s1++,s2++;}
*s1=’\0’;
【return0】;
实验五:
预习题(判断正误)
1.在PC机中,标准输入设备是指键盘(t)
2.一个C语言程序可以包含多个源程序文件(t)
3.函数是C语言的基本单位,当以指针变量作为函数参数时,参数传递就不是值传递了(f);
4.当定义一个返回指针的函数时,所返回的指针变量可以是自动变量(f)
5.数组是同类数据的一个集合,数组元素在内存中的存储不一定是连续的(f)
6.C语言中数组名同时也是一个指针变量,且该指针变量可以赋给它一个不同的值(f)
7.结构体是同类数据的集合(f)
8.共用体是同类数据的集合(f)
9.结构体是一种用户定义的数据类型,因此可以定义结构体类型的数组(t)
10.scanf(…)是一个格式化输入函数,用于从文件中读入数据(f)
一、实验六:
预习题(判断正误)
1.采用顺序、选择和循环可以实现任意复杂的程序设计(t);
2.结构化分析方法主要是指分析问题时采取自下而下、逐步求精的思想(t)
3.一个C语言程序可以包含多个源程序文件(t)
4.在C语言中,以函数作为程序的基本单元,可以确保C语言程序的模块化结构(t);
5.函数是C语言的基本单位,当以指针变量作为函数参数时,可以返回函数中经处理的数据,因此此时的函数传递不是值传递(f);
6.数组是同类数据的一个集合,数组元素在内存中的存储不一定是连续的(f)
7.结构体是同类数据的集合,结构体内部不能再出现另一结构体变量(f)
8.共用体是同类数据的集合,一个共用体变量所占的空间等于各个成员所占空间的总和(f)
9.结构体是一种用户定义的数据类型,因此可以定义结构体类型的数组(t)
10.fscanf(…)是一个格式化输入函数,用于从文件中读入数据(t)