C语言程序设计龙昭华主编习题集.docx
- 文档编号:23033165
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:47
- 大小:64.92KB
C语言程序设计龙昭华主编习题集.docx
《C语言程序设计龙昭华主编习题集.docx》由会员分享,可在线阅读,更多相关《C语言程序设计龙昭华主编习题集.docx(47页珍藏版)》请在冰豆网上搜索。
C语言程序设计龙昭华主编习题集
《C语言程序设计(龙昭华主编)》习题集
第1章计算机语言程序设计与软件开发基础概述
习题1
1.简述计算机的组成及计算机中数值的表示方法。
2.什么是程序?
它由什么组成?
3.程序设计过程的一般步骤是什么?
4.算法有些什么特性,它在程序设计中的作用?
5.描述软件的概念,简述它的分类。
6.结构化程序设计有哪些基本结构,以及它们采用什么设计方法?
7.什么是软件工程,它的出现有何意义?
8.软件生命周期及各阶段的主要任务
9.什么软件开发模型,有哪几种常见模型?
10.C语言常用哪些开发工具,你平常用是哪个?
11.C语言中有哪些关键字、标识符,应用它们时应该注意些什么?
12.什么是函数,它在程序中的作用?
13.C语言的特点有些什么?
它和其他你所知道的语言有什么不同?
补充题:
1.14分别使用自然语言、流程图、N—S图、伪代码写出求
的根的算法。
分别考虑①有两个不等的实根;②有两个相等的实根;③无实根。
1.15分别使用N—S图、伪代码写出求n!
的算法。
要求:
如果n>200,则打印“n值太大,
请重新输入n值”;否则打印出n的值和n!
的值。
1.16请参照本章例题,编写一个C程序,输出以下信息:
**************************
VeryGood!
**************************
1.17编写一个C程序,输入a,b,c三个值,输出其中最小者。
(该题请事先使用N—S图、
伪代码将其算法表示出来。
)
第2章C语言的数据类型、运算符及其表达式
习题2
一、选择题
1.下列表达式的值,哪一个等于0?
A2%5B7/5||x++C1/2.0Dsizeof(float)>sizeof(int)>sizeof(char)
2.inta,*p=&a,下列选项中表达式为变量a的地址?
A*PB*&aCpD&p
2.列选项中,在一个二进制补码数字系统中,清除了x中最右边为1的那一位,其余位不变的位运算为?
Ax&(x-1)Bx|(-1)Cx&~(x-1)Dx|~(x-1)
3.C语言中字符(char)型数据在内存中是以何种形式存放的()。
A原码B补码C反码DASCII
4.在位运算中,操作数若右移两位,其结果相当于()。
A操作数乘以2B操作数除以2C操作数乘以4D操作数除以4
5.下列不正确的转义字符是()。
A‘\\’B‘\18’C‘\O’D‘\n’
6.设在程序中的a,b,c均被定义为整型并且已赋予大于1的值,能正确表示代数式(1/abc)的表达式是()。
A1/a*b*cB1/(a*b*c)C1/a/b/(float)cD1.0/a/b/c
7.下面标识符中,不合法的用户标识符为()。
AF3BSUMCa#cDautoEdouble
8.下列表达式中的值,哪一个等于1()。
(intb=2)
A-b&bB~b||bCb^bDb>>1E3&&4
9.设a,b和c都是int型变量,且a=3,b=4,c=5,则值为0的表达式是()
A)a+b>c&&b==cB)a||b+c&&b-c
C)!
(a>b)&&!
c||1D)!
(x=a)&&(y=b)&&0E)!
(a+b)+c-1&&b+c/2
二、填空题
1.下列___________________________________常量、变量名是合法的。
ofd,0xfdj,e8,‘\\’,032_auto,_register,_258,_int_。
2.intx=5,则执行语句0||++x后,变量x的值为多少?
3.(03<<2)&&xˆx的结果为_______。
4.inta=12,则执行完语句a+=a-=a*a后,表达式的值为_____。
5.j,k为int整型变量,请写出运算表达式:
k=j=3,j+3,j++,++j*(k--)*1/6,表达式的值是_____;变量k的值是_____;变量j的值_____。
/*逗号表达式,自增运算符*/
6.x为整型变量,则表达式~x^x的值用十六进制表示为______。
7.设x为整型变量,则表达式(x&1)==(x%2)的值为______。
8.字符串“ab\034\\\x79”的长度为______。
9.x为double型变量,请写出运算表达式x=3.0,x++,x++*x++后,表达式的值是______,变量x的值是______。
10.表达式~(~1<<3)的值是_______________。
三、判断题
1.表达式18>>2的值是4。
2.运算符++,--,+=的优先级相同且运算次序从左至右。
3.表达式6.0*(1/2)的值为0。
4.C语言中一个字符可以用十进制整数表示,如:
printf(“%c”,258);是合法的。
5.若变量j已被赋值为8,则执行完语句1||j++后,j值为9。
6.printf("%d",sizeof(1234));其结果是4。
7.inta=4,b=0;则表达式~a&&!
b的值是1。
8.C语言在判断一个量是否为真时,以非0值代表“真”,以0值代表“假”。
四、写出以下程序的运行结果
1.main()
{intx=8,y,z;
y=z=x;
x=y==z;
printf(“%d”,x);
}
2.main()
{chara;
intb,e;
floatc;
doubled;
e=sizeof(a*b+c-d);
printf(“%d”,e);
}
3.main()
{doublex;
x=(int)8.4;
printf(“%f”,x);
}
4.main()
{
unsignedx=65535;
printf(“%d”,x);
}
5.main()
{intk;
doublej=6.4;
k=k+2;
k=j+=1;
printf(“%d”,k);
}
6.main()
{inta,b,c;
a=(b=(c=3)*5)*2-3;
printf(“a=%d,b=%d,c=%d”,a,b,c);
}
补充题:
2.5将以下3个整数分别赋给不同类型的变量,请画出数据在内存中的存储形式。
2.6要将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
如:
字母‘A’用‘E’代替。
因此“China”应译为“Glmre”。
请编一程序,用赋初值的方法
使c1、c2、c3、c4、c5五个变量的值分别为‘C’、’h’、’I’、’n’、’a’,经过运算,使
c1、c2、c3、c4、c5分别变成‘G’、’l’、’m’、’r’、’e’,并输出。
第3章结构化程序设计
习题3
一、选择题
3-1.若intx,y,z;则为它们输入数据的正确语句是________。
A).scanf("%D%D%D",&a,&b,&c);B).scanf("%d%d%d",&a,&b,&c);
C).scanf("%d%d%d",a,b,c);D).scanf("%d%d%d\n",&a,&b,&c);
3-2.若inta;a=68;则执行下面语句后的输出结果是________。
printf("%d,%o,%x,%c\n",a,a,a,a);
A).68,104,44,DB).104,68,44,D
C).68,104,D,44D).68,44,104,D
3-3.若intx,y;doublez;,则不合法的scanf函数调用语句是______。
A).scanf("%d%lx,%le",&x,&y,&z);
B).scanf("%2d*%d%lf"&x,&y,&z);
C).scanf("%x%*d%o",&x,&y);
D).scanf("%x%o%6.2f",&x,&y,&z);
3-4.若floatx,y;用下面的语句使x,y均为1.5,正确的输入是_____。
scanf("x=%f,y=%f",&x,&y);
A).1.25,1.25 B).1.25_1.25
C).x=1.25,y=1.25 D).x=1.25_y=1.25
3-5.if语句的控制条件______________。
A).只能用关系表达式B).只能用逻辑表达式
C).只能用关系表达式或逻辑表达式D).可以是任意表达式
3-6.若intx,y;,则执行下面的循环后,y的值是_____________。
for(y=1,x=1;y<=50;y++)
{
if(x>=10)
break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
A).2 B).4 C).6 D).8
3-7.设有下面的程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是________
A).while循环执行10次B).循环是无限循环
C).循环体语句一次也不执行D).循环体语句执行一次
3-8.若intx,y,则以下的for循环______。
for(x=0,y=0;(y!
=123)&&(x<5);x++);
A).执行4次B).执行5次
C).循环次数不确定D).是死循环
二、判断题(正确的在题后括号内划“√”,错误的划“×”)
3-9.用预定义函数putchar()可以输出整型变量的值。
()
3-10.在调用scanf函数时,可以指明输入数据的精度。
()
3-11.三种循环语句while、for和do…while都实现当型循环。
()
3-12.若inti=10,j=0;则执行完下面的语句后,i的值为11。
()
if(j=0)
i++;
else
i--;
3-13.若inti=5,j=10;则执行完下面的语句,j的值为8。
()
switch(i)
{
case4:
j++;
case5:
j--;
case6:
j++;
case7:
j-=2;
default:
;
}
三、读程序
3-14.下面程序正确的运行结果是__________。
#include
voidmain()
{longy=-43456;
printf("y=%-8ld\n",y);printf("y=%-08ld\n",y);
printf("y=%08ld\n",y);printf("y=%+8ld\n",y);
}
3-15.若有下面的程序
#include
voidmain()
{
intm,n,x,y,c;
scanf("%d%d",&m,&n);
while(m&&n)
{
c=0;
x=m>0?
m:
-m;
y=n>0?
n:
-n;
while(x>=y)
{x-=y;c++;}
printf("(%d,%d)=>%d...%d\n",m,n,c,x);
scanf("%d%d",&m,&n);
}
}
运行时分别输入:
100-15↙,-2030↙,其中“↙”表示回车符。
运行结果是_____________。
3-16.下面程序运行时的输出结果是_______。
#include
voidmain()
{
ints=1;
while(s<20||s%3!
=1)
s++;
while(s%5!
=2)
s+=3;
while(s%4!
=3)
s+=15;
printf("\nTheresultis:
%d",s);
}
3-17.下面程序运行时的输出结果是_______。
#include
voidmain()
{
intx=18,i;
for(i=2;i<9;i++)
if(x%i==0)
{
printf("%1d",i);
x=x/i--;
if(x==0)break;
}
}
四、编程题
3-18.编一程序,从输入圆的半径,输出圆的周长和面积。
3-19.编一程序,从键盘输入一个字母,输出其ASCII码。
3-20.输入三角形的三条边a,b,c,判断它们能否构成三角形,若能则指出是何种三角形:
等边三角形、等腰三角形、直角三角形、一般三角形。
3-21.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
3-22.已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:
元):
profit≤1000没有提成;
1000<profit≤2000提成10%;
2000<profit≤5000提成15%;
5000<profit≤10000提成20%;
10000<profit提成25%。
编程输入某月利润,计算并输出员工本月薪水。
3-23.编程求下面分段函数的值。
3-24.编程输出100到1000之间能被3整除但不能被5整除的数。
3-24.编程求下面数列前20项之和。
3-23.编程计算1!
+2!
+…+10!
3-24.编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值有键盘输入。
3-25.利用下面式子的前100项求π的近似值。
3-26.利用下面的公式求e的近似值,直到最后一项的绝对值小于10-6。
3-27.编程输出所有的“水仙花”数。
若一个三位整数等于其各位数字的立方和,则该数为“水仙花”数,如153=13+53+33。
3-28.找出1~100之间的全部同构数。
若一个数出现在它的平方数的右边,则该数称为同构数。
如5为同构数。
3-29.编程输出下列图案:
AAAAAAAAAAAA
BBBBBBBBBB
CCCCCCCC
DDDDDD
EEEE
FF
3-30.用一元五角人民币兑换5分、2分和1分的硬币共100枚,问共有多少种兑换方案?
每一方案中,每种硬币各多少枚?
3-31.分别用矩形法和梯形法求
3-32.求方程x3-6x-1=0的根。
第4章指针与数组
习题4
一、选择题
1.下面对数组的定义正确的是()
A)intn=10;intarray[n];
B)intarray(10);
C)intn;scanf(“%d”,&n);intarray[n];
D)intn;intarray[n];scanf(“%s”,array);
2.下面各语句行中,能正确进行赋字符串操作的语句行是()
A)chars[4][5]={"abcd"}B)chars[5]={‘a’,‘b’,‘c’,‘e’,‘f’};
C)char*s;s="abcd";D)char*s;scanf(“%s”,s);
3.正确的数组定义语句为()
A)intA[‘a’];B)intA[3,5];C)intA[][];D)int*A[3];
4.设已定义数组intarray[3][4];则对此数组正确的引用是()
A)array[1,2]B)array[1][4]C)array[1][1+2]D)array
(1)(3)
5.设二维数组array有m列,则在array[i][j]之前的元素个数为()
A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
6.若有以下说明和语句,选出哪个是对c数组元素的正确引用
intc[4][5],(*cp)[5];cp=c;
A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2)
7.判断字符串s1是否大于字符串s2,则应当使用:
()
A)if(s1>s2)B)if(strcmp(s1,s2))
C)if(strcmp(s1,s2)>0)D)if(strcmp(s2,s1)>0)
8.执行下列语句后,其输出结果为()
#include
main()
{int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}
A)运行错误B)100C)i的地址D)j的地址
9.以下程序的输出结果是()
main()
{charcf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",cf[1]);
}
A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"
10.设有如下的程序段:
charstr[]="Hello";
char*ptr;ptr=str;
执行上面的程序段后,*(ptr+5)的值为()
A)'o'B)'\0'C)不确定的值D)'o'的地址
二、填空题
1.指针包括两部分及,在指针的概念中,“*”表示的含义是,而“&”表示的含义是。
2.如果p是一个指针,那么*&p表示的含义是,而&*p表示的含义是。
3.已知数组s1为一有18个单元的整型数组,下面的语句的语句试图求出这18个单元的平均值,并用s保存这个值;请补充完整下面的语句。
intj,s=;ints1[18];
for(;;j++);
s=18;
4.下面程序段的功能是删除字符串s中出现的与字符c相同的字符;请补充完整下面的语句。
inti,j;chars[100],c;
for(i=0;;i++)
if(s[i]==c)
for()s[j]=s[j+1];
5.统计从终端输入的字符中每个大写字母的个数。
用#号作为输入结束标志,请填空。
#include
#include
main()
{intnum[26],i;charc;
for(i=0;i<26;i++)num[i]=0;
while(!
='#')/*统计从终端输入的大写字母个数*/
if(isupper(c))num[c-65]+=1;
for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/
if(num[i])printf("%c:
%d\n,i+,num[i]);
}
三、写出以下程序的运行结果
1.
main()
{inta[]={2,4,6,8},*p=a,i;
for(i=0;i<4;i++)a[i]=*p++;
printf("%d,%d\n",a[2],*(--p));
}
2.
main()
{inta[]={2,4,6,8,10},*p,**k;
p=a;k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
}
3.
main()
{inta[3][4]={2,4,6,8,10,12,14,16,18,20,22,24};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
k+=*(*(p+i)+j);
printf("%d\n",k);
}
4.
#include
main()
{inta,b,c;
intx=4,y=6,z=8;
int*p1=&x,*p2=&y,*p3;
a=p1==&x;
b=3*(-*p1)/(*p2)+7;
c=*(p3=&z)=*p1*(*p2);
printf("%d,%d,%d\n",a,b,c);
}
5.
#include
main()
{intk=0,sign,m;
chars[]=“-12345”;
if(s[k]==‘+’||s[k]==‘-’)
sign=s[k++]==‘+’?
1:
-1;
for(m=0;s[k]>=‘0’&&s[k]<=‘9’;k++)
m=m*10+s[k]-‘0’;
printf("Result=%d\n",sign*m);
}
四、编程题
1.通过键盘输入10整数在一维数组中,并且把该数组中所有为偶数的数,放在另一个数组中。
2.对在一维数组中存放的10整数进行如下的操作:
从第3个元素开始直到最后一个元素,依次向前移动一个位置,输出移动后的结果。
3.在一个字符数组中存放“AbcDEfg”字符串,编写程序,把该字符串中的小写字母变为大写字母,把该字符串中的大写字母变为小写字母。
4.用字符指针变量,进行5个字符串的输入,字符串大小的比较,并且输出5个字符串中最小的字符串。
5.从字符串中删除指定的字符。
同一字母的大、小写按不同字符处理。
若程序执行时输入字符串为:
turbocandborlandc++从键盘上输入字符:
n,则输出后变为:
turbocadborladc++如果输入的字符在字符串中不存在,则字符串照原样输出。
6.有30个学生,三门课程,用二维数组存放该信息;对数组的信息分别进行如下的操作:
(1)输出每门课程的平均分
(2)输出每门课程的最高分、最低分(3)统计每门课程不及格人数。
第5章函数
习题5
一、选择题
1.在一个C语言程序构成中,较完整的描述是()
A)由主程序与子程序构成B)由多个主函数与多个函数构成
C)由主函数与函数构成D)由一个主函数与多个函数构成
2.C语言在程序开始执行时,其正确的描述是()
A)由编写程序语句的顺序格式执行B)在主函数main()开始处执行
C)在第一个函数处执行D)由人随机选择执行
3.下列有关函数错误的描述是()
A)C语言中允许函数嵌套定义B)C语言中允许函数递归调用
C)调用函数时,实参与形参的个数、类型需完全一致
D)C语言函数的缺省数据类型是int类型
4.在C语言中,各个函数之间具有的关系是()
A)不允许直接递归调用,也不允许间接递归调用
B)允许直接递归调用,不允许间接递归调用
C)不允许直接递归调用,允许间接递归调用
D)允许直接递归调用,也允许间接递归调用
5.在C语言中,函数的返回值的类型是由()
A)C语言的编译程序,在程序编译时决定
B)由调用该函数的主调函数所决定
C)由return语句的表达式的类型所决定
D)由定义该函数时指定的函数类型所决定
6.当调用函数时,如果实参是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 龙昭华 主编 习题集