C程序期末复习3.docx
《C程序期末复习3.docx》由会员分享,可在线阅读,更多相关《C程序期末复习3.docx(19页珍藏版)》请在冰豆网上搜索。
C程序期末复习3
C期末复习3
一、填空题
1.C语言中基本的数据类型有:
整型 、 实型 、 字符型 。
2.有如下语句:
char A[]={”Iamastudent”};该字符串的长度是 14 ,A[3]= m 。
3.符号”a”和’a’的区别是 “a”是字符串常量,’a’是字符常量 。
4.表达式7+8>2&&25%5的结果是_________0___________。
5.数组int a[3][4];共定义了___12_________个数组元素。
6.设有下列数据定义语句,则数组元素x[i]的值是______0____________。
inti=3,x[4]={1,2,3};
7.在C语言中,二维数组元素在内存中的存放顺序是按行存放。
8.二维数组A中元素A[1][2]的值是5。
A[4][5]={{2,2,4},{4,6,5,6},{0},{0}};
9.若有以下定义:
inta[8]则数组元素下标的上限为___7____,下限为____0______。
10.写一个定义字符数组a的语句,其长度为20,并为其赋初值:
“Goodmorning”
chara[20]=“GoodMorning”;
11.对二维数组a初始化如下:
inta[3][4]={{5,10},{3,6,9,12},{0}};
则数组元素a[0][1]的值是___10_______,a[2][1]的值是___0_________。
12.能正确表示逻辑关系:
“a≥=10或a≤0”的C语言表达式是(D)
A.a>=10ora<=0B.a>=0|a<=10C.a>=10&&a<=0D.a>=10‖a<=0
13.若有以下的数组定义:
chara[]="abcde";
charb[]={'a','b','c','d','e'};
则正确的描述是:
(B)
A.a数组和b数组长度相同B.a数组长度大于b数组长度
C.a数组长度小于b数组长度D.两个数组中存放相同的内容
14.写出数学计算式
的C语言表达式:
sqrt(cos(30*3.1416/180)/fabs(1-x))
二、选择题
1.以下程序的输出结果是( D )。
charstr[15]=”hello!
”;
printf(“%d\n”,strlen(str));
A.15 B.14 C.7 D.6
2.定义如下变量和数组:
inti;intx[3][3]={1,2,3,4,5,6,7,8,9};
则语句for(i=0;i<3;i++) printf("%d ",x[i][2-i]);的输出结果是( C )。
A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9
3.不能把字符串:
Hello!
赋给数组b的语句是( B )。
A.charb[10]={'H','e','l','l','o','!
'}; B.charb[10]; b="Hello!
";
C.charb[10]; strcpy(b,"Hello!
"); D.charb[10]="Hello!
";
4.设有数组定义:
chararray[]=”China”;则数组所占的空间是___C_____。
A.4个字节 B.5个字节 C.6个字节 D.7个字节
5.数组a和b中已分别存放字符串,则正确的输出形式是B。
A.puts(a,b);B.printf(“%s,%s”,a,b);
C.putchar(a,b);D.puts(‘a','b');
6.在C语言中,要求参加运算的数必须是整数的运算符是A。
A.%B./C.!
D.*
7.设inta=1,则执行完循环while(a++<5);a的值是____A_______。
A.6B.5C.1D.-264
8.有以下程序
main()
{charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));
};
程序运行后的输出结果是
A.44B.33C.34D.43
【答案】C
9.有定义语句:
intb;charc[10];则正确的输入语句是______。
A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);D.scanf("%d%s",b,&c);
【答案】B
10.有以下程序B
main()
{
intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是______。
A.42B.45C.56D.60
【答案】B
11.有以下程序
main()
{
chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序运行后的输出结果是______。
A.22B.76C.72D.62
【答案】C
12.以下能正确定义一维数组的选项是______。
A.inta[5]={0,1,2,3,4,5};B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};D.inta[5]="0123";
【答案】B
13.以下程序的输出结果是
main()
{charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A."AAAA"B."BBB"C."BBBCC"D."CC"
【答案】B
14.有以下程序
main()
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0
for(i=0;i<4;i++)s+=aa[i][1];
printf(“%d\n”,s);
}
程序运行后的输出结果是
A.11B.19C.13D.20
【答案】B
15.以下程序的输出结果是______。
main()
{inti,k,a[10],p[3];k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A.20B.21C.22D.23
【答案】B
17.下面程序的运行结果是______。
main()
{charch[7]={"65ab21"};
inti,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';
printf("%d\n",s);}
A.12ba56B.6521C.6D.62
【答案】C
18.当执行下面的程序时,如果输入ABC,则输出结果是
#include“stdio.h”
#include“string.h”
main()
{charss[10]=“1,2,3,4,5”;
gets(ss);strcat(ss,“6789”);printf(“%s\n”,ss);
}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
【答案】A
19.下列程序执行后的输出结果是
main()
{chararr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A)you&meB)youC)meD)err
【答案】A
20.下列程序段正确的是
A.#includeB.#include;
main()main()
{{
inti,j;}
int(i)=j;
}
C.includeD.#include
main()main()
{{
inti,j;}
}
【答案】D.
21.以下符合语法规则的用户标识符是(D)
(A)break(B)7ab(C)maxyu(D)max
三、读程序,写结果
1.#include
m
n
yo
main()
{
chars[6];
inti=0;
for(;i<6;s[i]=getchar(),i++);
for(i=0;i<6;putchar(s[i]),i++);
}
在运行时分别输入:
m<回车>
n<回车>
your<回车>
2.程序
#include
#include
/*输入:
Hello_my_name_is_ricky.*/
输出:
Hlom_aei_ik.
Hlmnesiy
main()
{
charstr[81],a[81],b[81];
intn,i,j=0,k=0;
gets(str);
n=strlen(str);
for(i=0;i{
if(i%2==0)a[j++]=str[i];
if(i%3==0)b[k++]=str[i];
}
a[j]=b[k]='\0';
puts(a);
puts(b);
}
3.程序
#include
#defineN5
main()
{
inta[N],max,min,sum,i;
for(i=0;iscanf("%d",&a[i]);
sum=max=min=a[0];
for(i=1;i{
sum+=a[i];
if(a[i]>max)max=a[i];
if(a[i]}
printf("max=%d\nmin=%d\nsum=%d\naver=%4.2f\n",
max,min,sum,(float)(sum-max-min)/(N-2));
}
输入:
203058540
输出:
max=85
min=5
sum=180
aver=30.00
3.main()
{inta[4][5]={1,2,4,5,-4,-9,3,10,-3,2,7,8,4};
inti,j,n;
n=8;
i=n/5;
j=n-i*5-1;
printf(“a[%d][%d]=%d”,i,j,a[i][j]);
}
程序的运行结果:
___a[1][2]=10____________________。
四、改错题。
阅读以下程序,在有行号标注的部分圈出有错的语句行并在其后写上正确的语句。
1、以下程序输入一个整数n,计算累加和(1+2+3+…+n)并输出。
本程序有错误,请找出错误并改正。
main()
{
/*1*/inti,n,sum=0;
/*2*/scanf("%d",&n);
/*3*/for(i=1;i<=n;i++)
/*4*/sum+=i;
/*5*/printf("%d",sum);
}
main()
{
/*1*/inti,n,sum;
/*2*/scanf(“%d”,&n);
/*3*/for(i=0;i/*4*/sum+=n;
/*5*/printf(“%d”,sum);
}
2、以下程序查找100至999之间所有符合以下条件的数:
是另一数的平方;至少有两位数是相同的。
如数144,它是12的平方,其中有两位4。
本程序有三个错误,请找出错误并改正。
main()
{
/*1*/intn,m,a,b,c;
/*2*/for(n=10;n<=31;n++)
/*3*/{
/*4*/m=n*n;
/*5*/a=m%10;
/*6*/b=m/10%10;
/*7*/c=m/100;
/*8*/if(a==b||b==c||a==c)
/*9*/printf("%d",m);
}
}
main()
{
/*1*/intn,m,a,b,c;
/*2*/for(n=10;n<=31;n++)
/*3*/{
/*4*/m=n*n;
/*5*/a=m/10;
/*6*/b=m/10%10;
/*7*/c=m/100%10;
/*8*/if(a==b&&b==c&&a==c)
/*9*/printf("%d",n);
}
}
3、下列程序的功能有:
(1)输入若干个学生成绩,若输入数据大于100或小于0(除-999外),则不作记录,重新输入;当输入–999,则输入结束。
(2)统计所有输入成绩的最大值、最小值、成绩个数、平均值,并输出之。
该程序中有八个错误,请找出错误并改正。
main()
/*1*/{intmark,n=0,sum=0;
/*2*/intmax=0,min=100;
/*3*/for(;;);
/*4*/{scanf("%d",mark);
/*5*/if(mark=-999)break;
/*6*/if(mark>100)
/*7*/{printf("mark>100,Reinput!
\n");
/*8*/break;}
/*9*/n++;sum+=mark;
/*10*/if(mark>max)max=mark
/*11*/elsemin=mark;
/*12*/}
/*13*/sum%=n;
/*14*/printf("%d,%d,%d,%d\n",max,min,n,sum);
}
#include"stdio.h"
main()
/*1*/{intmark,n=0,sum=0;
/*2*/intmax=0,min=100;
/*3*/for(;;)
/*4*/{scanf("%d",&mark);
/*5*/if(mark==-999)break;
/*6*/if(mark>100||mark<0)
/*7*/{printf("mark>100or<0,Reinput!
\n");
/*8*/continue;}
/*9*/n++;sum+=mark;
/*10*/if(mark>max)max=mark;
/*11*/if(mark/*12*/}
/*13*/sum/=n;
/*14*/printf("%d,%d,%d,%d\n",max,min,n,sum);
}
4、下列程序是为指定的数组输入10个数据,并求它们的和。
请修改错误。
#include
voidmain()
/*1*/{intn=10,i,sum=0;
/*2*/inta[10];
/*3*/for(i=0;i<10;i++)
{
/*4*/scanf("%d",&a[i]);
/*5*/sum=sum+a[i];
}
/*6*/printf("sum=%d\n",sum);
}
#include
voidmain()
/*1*/{intn=10,i,sum=0;
/*2*/inta[n];
/*3*/for(i=0;i<10;i++)
{
/*4*/scanf("%d",a[i]);
/*5*/sum=sum+a[i];
}
/*6*/printf("sum=%d\n",sum);
}
6、下列程序的功能为:
输入一个字符串,并将其中的字符’a’用字符串’shu’替代后输出。
如输入为“123abcaHello”,则输出为“123shubcshuHello”。
请修改错误。
#01#include
#02voidmain()
#03{
#04inti;charline[81];
#05scanf(“%s”,&line);
#06for(i=0;line[i]!
=’\n’;i++)
#07if(line[i]==’a’)
#08printf(“shu”);
#09else
#10printf(“%s”,line[i]);
#11}
#include
voidmain()
{
inti;charline[81];
scanf("%s",line);
for(i=0;line[i]!
='\0';i++)
if(line[i]=='a')
printf("shu");
else
printf("%c",line[i]);
}
五、程序填空题(略)
复习实验报告中的程序填空题
六、编程题
1.编写一个程序实现如下功能:
计算1~100之间所有含8的数之和。
#include
main()
{
inti,sum=0;
for(i=1;i<=100;i++)
if(i%10==8||i/10==8)
sum+=i;
printf("sum=%d\n",sum);
}
2.从键盘输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include
voidmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("字母数:
%d\n空格数:
%d\n数字数:
%d\n其它字符数:
%d\n",letters,space,digit,other);
}
3.编一个程序,输入20个整数,统计并输出其中正数、负数和零的个数。
#include
voidmain()
{
intn,i,z=0,f=0,l=0;
printf("请输入20个数:
\n");
for(i=0;i<20;i++)
{scanf("%d",&n);
if(n>0)
z++;
elseif(n<0)
f++;
else
l++;
}
printf("正数:
%d\n负数:
%d\n零数:
%d\n",z,f,l);
}
4.编程求1!
+2!
+3!
+……+10!
#include
voidmain()
{doubles=0,t=1;
intn;
for(n=1;n<=10;n++)
{
t=t*n;
s=s+t;
}
printf("1!
+2!
+...+10!
=%f\n",s);
}
5.从键盘输入20个整数,存放在数组中,找出其中最大数并指出其所在的位置。
#include
main()
{intmax,i,j,a[20];
printf("Enter20integers:
\n");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<20;i++)
if(max{max=a[i];
j=i;
}
printf("%d,%d",max,j);
}
6.从键盘输入两个正整数m和n,要求m中放大的值,n中放小的值,求它们的最大公约数和最小公倍数。
#include
voidmain()
{
intp,r,n,m,temp;
printf("请输入两个正整数n,m:
");
scanf("%d,%d,",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:
%d\n",n);
printf("它们的最小公约数为:
%d\n",p/n);
}
7.从键盘输入一个3×3二维数组,输出该矩阵,再将其转置后输出。
所谓转置即行列互换。
voidmain()
{inta[3][3],b[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)