第一章
1.什么是程序?什么是程序设计语言?
2.C语言有什么特点?
3.什么是算法?算法的描述有哪些基本方法?
第一章主要关注两个概念:一是程序的三种结构(顺序、分支或叫选择、循环) ;二是函数,主函数main()
第二章
1.指出下列哪些是C语言合法的用户识别符。
void a3_b3 For 2a defi ne _123 _abc DO
2.指出下列哪些是C语言合法的常量。
"3'4 " " 0x1g 33 " a" E20 '\18' \0xa' 1.E-5 3.F '\0' .12 '\a'
"3'4 ""双引号内表示字符串,但要在一个串内含有单引号、双引号要用转义字符正确的是:’4\""
0x是十六进制的表示形式之一,但十六进制里没有g这个数值
\0xa'带一个单引号、0开头,无意义.这里要注意\ddd,1-3 位八进制数,\xhh,1-2位十进制数,他们都表示对应的ASCII值
E20, E表示指数形式,但两边必须都有数字。
将此题全部弄懂,所有关于常量的分基本跑不掉了。
3.指出下列定义变量语句中的错误。
int a;b=5; //同类型的两个变量,中间不能用分号。
doubel h; //double
int x,float y; //中间要用分号
float f(x); //非法符号
定义变量要注意,数据类型的关键字,还有就是变量名称必须是合法标识符
4.写出能表示数学式子1/(2a + 1/2a)的C语言表达式
1.0/(2*a+1/(2*a)) 5.⑴#include
{
double x=1,y;
y=x+3/2;
prin tf("y=%f\n",y);
return 0;
}结果是:2.000000,注意3/2=1
⑵
#i nclude
int main()
{
float x=2.9,y=3.2, z;
int a=8;
z=x+a%3*(i nt)(x+y)/2;
prin tf("z=%f\n",z);
return 0;
}
结果是:8.900000,注意(int)(x+y) =6。
⑶
#i nclude
int main()
{
int a=65,b=-20;
char ch='A';
float x=12.345678f;
prin tf("abc\n\101\t\x41\\101\n");
prin tf("a=%d,%c,%o,%x\n",a,a,a,a);
prin tf("b=%d,%o,%x,%u\n",b,b,b,b);
prin tf("ch=%d,%c\n",ch,ch);
prin tf("x=%f,%.2f,%10.2f,%-10.f\n",x,x,x,x); return 0;
此题包含的内容较多,都是细节,希望对照教材仔细分析结果6程序设计。
(1)输出如下的图形。
*****
此题答案参考实验指导书。这题在这章出现,主要是练习printf(),
(2)已知铁的比重是7.86,计算并输出直径为100毫米的铁球重量
#i nclude
#defi ne PI 3.1415926
void mai n()
{ double w,r=100.0/20,p=7.86;
w=p*4.0*PI*r*r*r/3.0;
prin tf("%.2f\n",w);
}
第三章
1.写出表示变量x的值在[0,100]范围内的逻辑表达式。x>=0 && x<=100
2•写出表示整型变量x的值能被5或7整除的逻辑表达式。x%5==0||x%7==0
3•已知变量a、b、c的值分别是3、2、1,逻辑表达式a>b>c的值是多少?0
4•已知变量x,y的值分别为5,9,逻辑表达式x&&y-9)*6-!x的值是多少?0
5.已知变量m,n的值都为1,逻辑表达式m--&&n++执行后,m,n的值是多少? m=0,n=2, 逻辑表达式的值是真。
6(1): #i nclude
int main()
{
int x=2,y;
if(x) y=x;
else y=3*x-1;
prin tf("y=%d\n",y); return 0;
}
运行结果是:y=2
⑵
#i nclude
int main()
{
int a=2,b=2,c=3;
if (a==b)
if(b==c) prin tf("a==b==c\n");
else prin tf("a!=b\n");
return 0;
}
运行结果是:a!=b
⑶
#i nclude
int main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break; case 3: a++; b++;
}
prin tf("a=%d,b=%d\n ",a,b);
return 0;
}
运行结果是:a=2,b=1
⑷
#i nclude
int main()
{ int n=5;
while( n>2)
{ n--;
prin tf("%d\n", n); }
return 0; }
运行结果是:4
3
2
(5):
#i nclude
int main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if (b%3==1)
{
b+=3;
con ti nue;
}
b_=5;
}
prin tf("%d\n",a);
return 0;
}
运行结果是:8
7.程序设计
(1)从键盘输入一个字符。若该字符是小写,输出相应的大写字母;若该字符是大写字母, 输出对应的小写字母;若是其他字符,则原样输出。
#i nclude
int mai n()
{ char s;
sca nf("%c", &s);
if (s>='A'&&s <='Z')
s=s + 32;
else if (s>='a'&&s<='z')
s=s-32;
prin tf("%c\ n" , s);
return 0;
}
(2)从键盘输入3个整数,输出其中的最大值。
#i nclude
void mai n()
{ int a,b,c;
int m;
prin tf("Please in put a b c\n ”);
sca nf("%d,%d,%d", &a,&b,&c);
m=a>b?a:b;
m=m>c?m:c;
prin tf("Max is %d\n",m);
}
本题解法比较多。注意此题的逻辑关系。
(3)从键盘输入一个整数,输出分段函数 f (x)的值。
1-x A2 ( x<2)
f( x) = 1+2x-xA2 ( 2<=x<10)
1-x+xA2 (x>=10)
#i nclude
int main()
{
float x,y;
scan f("%f", &x);
if(X<2)
y=1_x*x;
else if(x<10)
y=1+2*x-x*x;
else
y=1_x+x*x;
prin tf("a=%f\n ”,y);
return 0;
}
此类题,注意数轴方向。从一边为起点。
(4 )从键盘上输入一个整数,求其中每个数位的数字之和。
#in clude
int mai n(){
int sum=O,a;
sca nf("%d",&a);
if(a<10)
sum=a;
else
{
do{
sum=sum+a%10;
a=a/10;
}while(a>0);
}
prin tf("%d\n",sum);
return 0;
}
此题答案只考虑输入的是正整数,如果输入的是小于0的整数,加个判读,用绝对值函数处理下即可。
(5)将100元换成1元,5元,10元的零钱有多少种换法?
#in clude
int mai n()
{int x,y, z,i=0;
for(x=0;x<=10;x++)
for(y=0;y<=20;y++)
for(z=0;z<=100;z++)
{if(x*10+5*y+z==100)
{pri ntf("%5d,%5d,%5d\n",x,y,z);
i++;}}
prin tf("There are %d ways.\n",i);
return 0;
}
(6 )计算方程X A2+Y A2=1989的所有整数解。
#in clude
#in clude
void mai n()
{in t v,i,j;
v=(i nt)sqrt(1989);
for (i=0; i<=v; i++)
for (j=O;j<=v;j++)
{ if(i*i+j*j==1989)
{ pri ntf("%5d,%5d\n",i*i,j*j);}
}
}
(7)输出所有的3位水仙花数。3位水仙花数是指一个整数的每个数位上的数字的3次方
之和等于它本身,例如:1A3+5A3+3A3=153.
#in clude
void mai n()
{
int a,b,c,d;
for(a=100;a<=999;a++)
{b=a/100;
c=a%10;
d=(a/10)%10;
if(b*b*b+c*c*c+d*d*d==a) pri ntf("%5d\n",a);
}
}
(8)在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人一一宰相西萨班达依
尔。国王问他想要什么,他对国王说:“陛下,请你在这张棋盘的第1个小格里,赏给我一
粒麦子,在第二个格子里给2粒,第三格给4粒,以后每一小格都比前一小格加一一倍。陛
下啊,把这样摆满棋盘上所有64个小方格的麦粒,都赏赐给你的仆人吧!”。请帮国王计算
一下,放完整个棋盘要多少颗小麦。
#in clude
void mai n()
{ int i;
double n,s;
i=1; n=1.0; s=1.0;
for(i=2;i<=64;i++)
{n=n *2;s=s+n;
prin tf("%lf\n", n);}
prin tf("s=%lf\n",s);
getch();
}
(9)验证哥德巴赫猜想:任何充分大( >=4)的偶数都可以用2个素数之和表示,将4~100
所有偶数分别用两个素数之和的形式输出。(例如:4=2+2,100=3+97)
#in clude
#in clude
int ss(int n) /*检查n是否为素数,如果是则返回1否则返回0*/
{ int i;
for (i=2; i<=(i nt)sqrt (n); i++)
if (n %i==0) return 0;
return 1;}
int main( void)
{ int i,j,k=0; /*k用来控制打印换行*/
for (i=4;i<=100; i+=2)
for(j=2; j
{ if (ss(j)&&ss(i-j))
{ prin tf("%d=%d+%d ",i,j,i-j);
k++;
if (k%5==0) putchar('\n');
break; }
}
return 0;}
注意判断素数的3种方法。n-1,n/2,(int)sqrt(n)
(10)一球从100米高度自由落下,每次漏地后反跳回原高度的一半,求在第10次落地时,
共经过多少米?第10次反弹多高?
#in clude
int mai n()
{ float sn=100.0,hn=sn/ 2;
int n;
for(n=2; *=10; n++)
{ sn=sn+2*hn; /*第n次落地时共经过的米数*/
hn=hn/2; } /*第n次反跳高度*/
prin tf("the total of road is %f\n ",s n);
prin tf("the tenth is %f meter\ n",h n);
return 0;}
第4章
1.程序填空
(1) 请在横线上填空,使程序输出数组S中最大元素的下标
#i nclude
int main()
{
int k,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=0;p<6;p++)
if(s[p]>s[k]) k=p;
prin tf("%d\n",k);
return 0;
}
注意:红色部分为原题填空部分,下同。
(2)请在横线
上填空,使程序输出以下形式的图标。
I 2 3 4
6 7 8
II12
16
#i nclude
int main()
{
int
num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
for (j=i;j<4;j++ ) printf("%-5d",num[i][j]);
prin tf("\n");
}
return 0;
}
2.阅读下列程序,写出程序运行结果
(1)#inelude
{
int i,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; prin tf("%d\n",k);
return 0;
}
运行结果:21
⑵ #i nclude
int main()
{
in t p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2)
去掉一个最
输出每个选手最 k=k+p[i];
i++;
}
prin tf("%d\n",k);
return 0;
}
运行结果:24
⑶ #i nclude
int main()
{
int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
prin tf("%d ",a[2-i][i]);
return 0;
}
运行结果:7 5 3
3.程序设计。
(1)
从键盘输入10个成绩,输出最高分和最低分。 (2) 在一次评奖中有10个评委对5个参赛选手打分,选手的最终得分为: 高分、一个最低分后剩余8个分数的平均值。从键盘输入每个选手的得分,
终得分。
(3)
从键盘输入5门课程6个同学的成绩,。输出每门课程的最高分。 (4) 从键盘上输入一个 4x5的矩阵,输出矩阵个周边元素的和。 例如输入以下矩阵, 输
出:32。
1 0
2 0 3
0 4 8 9 1
70 9 7 0
80 4 5 1
第五章
1、程序填空。
(1)请在横线上填空,使fun ()函数实现Hi)2的功能
int fun (int a,int b)
{
int mul;
mul=(a+b)*(a+b);
retur n mul;
}
注意:红色部分就是原来需要填空的地方,下同
(2)请在横线上填空,使fun ()函数返回参数s所表示的数组中各元素的和,其中参数len表示数组s的长度。
double fun( double s[ ],i nt n)
{
int i;
double y=0;
for( i=0;ivn;i++)
y+=s[i];
return y;
}
2、阅读下列程序,写出程序运行结果。#i nclude
#define LEN 10
void reverse© nt a[ ],i nt n)
{
int i,t;
for(i=0;i< n;i++)
{
t=a[i]; a[i]=a [n-1-i];a[ n-1-i]=t;
}
return ;
}
int main()
{ int b[LEN]={1,2,3,4,5,6,7,8,9,10},i,s=0; reverse(b,8);
for(i=6;i<10;i++) s+=b[i]; prin tf("s=%d\n",s);
return 0;
}
运行结果:s=34
(2)#i nclude
int d=1;
void fun (int p)
{
int d=5;
d+=p++;
prin tf("%d",d); return; }
int main()
{
int a=3;
fun( a);
d+=a++;
prin tf("%d\n",d);
return 0;
}
运行结果:84
(3)#i nclude
void fun (i nt x,i nt y,i nt z) {
z二x*x+y*y;
return ;
}
int main()
{
int a=31;
fun (5,2,a);
prin tf("%d",a);
return 0;
}
运行结果:31
(4)#in elude
#define MAX(x,y) (x)>(y)?(x):(y)
int main()
{
int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,e+d)*10;
prin tf("%d\n",t);
return 0;
运行结果:7
3、程序设计。
(1)编写函数sum,计算m到n的累加和(m小于n),在主函数中
调用sum ()函数,计算并输出的值。
(2)编写函数item,计算1到n的累加和的倒数,在主函数中调用
11 1 1
item ()函数,计算并输出+ + +山+ 的值。
1 1+
2 1-F2+
3 III 1+2+3+-+11
(3)一个正整数如果等于它的因子(包括1,但不包括自身)之和,则称为“完数”(例如6是一个“完数”,6=1+2+3)。编写函数fun,计算n的因子之和(不包括n),在主函数中调用fun ()函数,输出
1000以内的所有完数。
(4)已知数列的递归关系如下,编写函数fun,计算数列的第n项,
在主函数中调用fun ()函数,输出该数列的前20项。
flO (n = 1) f(n)=l/(n -1) + 2 (n>2)
第六章
1•程序填空。
(1 )请在横线上填空,使程序完成计算数组a中元素的平均值并输出。
float average(i nt *pa,i nt n)
int i,avg;
avg=O;
for(i=0;i< n;i++)
avg+=pa[i];
return (float)avg/n;
}
int main()
{
int a[5]={2,4,6,8,10};
float mean;
mean= average(a,5);
prin tf("mea n=%.2f\n",mea n);
}
注意:红色部分即为原题填空部分,下同。
2.请在横线上填空,使函数实现计算指针p所指向的字符串的长度。
int myStrle n( char *p) {
in t le n=0;
for(;*p!='\0' ;p++)
len++;
return len;
}
阅读下列程序,写出程序运行结果。
(1)#i nclude
int mai n()
{
int a=1,b=3,c=5;
int *p 仁&a,*p2=&b,*p=&c;
*p=(*p1)*(*p2);
prin tf("%d\n",c);
return 0;
}
运行结果:3
(2)#in clude
int mai n()
{
int a[3][3],*p,i;
p=& a[0][0];
for(i=0;i<9;i++)
p[i]=i+1;
prin tf("%d\n",a[1][2]);
return 0;
}
运行结果:6
(3)#in clude
int mai n()
{
int a[ ]={2,4,6,8,10},y=1,i,*p;
p=& a[1];
for(i=0;i<3;i++) y+=*(p+1);
prin tf("%d\n",y);
return 0;
}
运行结果:19
(4)
#in clude
#in clude
int mai n()
{
char p1[]="abcd",p2[]="efgh",str[50]="ABCDEFG"; strcat(str,p1);
strcat(str,p2);
prin tf("%c\ n",str);
return 0;
运行结果:ABCDEFGabcdefgh
#in clude
int mai n()
{
char str[]="1a2b3c";
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]<'0'||str[i]>'9') pri ntf("%c",str[i]); prin tf("\n");
return 0; }
运行结果:abc
3.程序设计
(1)编写函数Mystrcmp(char*str1,char*str2),该函数的功能是比较字符串strl和str2,如果相同返回0,否则返回两个字符串中第1个不相同的ASCI码值之差作为函数值返回,
要求不采用库函数strcmp()实现。
(2)编函数fun(int*a,int n,int*odd,int*even),函数的功能是分别求出形参a所指向的数组中所有奇数、偶数之和,并分别保存在Odd、even所指向的变量中形参n表示形参
a所指向的数组的长度。
(3)从键盘输入英文的星期几,输出对应的中文星期几。
(4)从键盘输入一个字符串,然后将字符串按照如下规则重新排列:字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。例如输入字符串
“a12bcd45”,则排列后的字符串为"abcd1234”.
(5)从键盘输入一个字符串,按照相反的顺序输出。
(6)从键盘输入一个英文句子,统计其中单词的个数(单词之间使用空格隔开,除子母和空格外不会出现其他符号)。
C语言基础知识课后习题答案 说明: 1、原先的少部分题目有错,请用红色的部分替换掉; 2、如果红色部分有文字“删除该行”,就直接删除该行; 第一章C语言的基础知识 第一节对C语言的初步认识 习题 1. 下列叙述中错误的是B A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始执行。B)C语言中的变量,可以先使用后定义。 C)所有的C语言语句最后都必须有一个分号 D)C程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。 第二节熟悉Visual C++ 习题 1. C语言源程序名的后缀是 B A).exe B).c C).obj D).cp 2. 下列叙述中错误的是D A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行 3. 用C语言编写的代码程序B A)可立即执行B)是一个源程序 C)经过编译即可执行D)经过编译解释才能执行 第三节标识符 习题 1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是B
A)大写字母B)连接符C)数字字符D)下划线 2. 以下选项中不合法的标识符是 C A)print B)FOR C)&a D)_00 3. 以下叙述中错误的是A A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识 4. 可在C程序中用作用户标识符的一组标识符是A A)and B)Date C)Hi D)case _2007 y-m-d Dr.T om Bigl 5. 以下不合法的用户标识符是C A)j2_KEY B)Double C)4d D)_8_ 6. 以下不能定义为用户标识符的是D A)Main B)_0 C)_int D)sizeof 7. 下列选项中,不能用作标识符的是D A)_1234_ B)_1_2 C)int_2_ D)2_int_ 8. 以下4组用户定义标识符中,全部合法的一组是A A)_main B)If C)txt D)int enclude -max REAL k_2 sin turbo 3COM _001 第四节数制转换 习题 1.十进制整数360的八进制为__________,十六进制为_____________。550 168 第五节整数和实数 习题 1.以下选项中正确的整型常量是 C
c语言程序设计课后习题及答案 C语言程序设计是计算机科学与技术专业的一门基础课程,通过学习该课程,我们可以掌握C语言的基本语法和编程技巧,培养我们的编程思维和解决问题的能力。在课程学习过程中,老师会布置一些课后习题,以巩固我们的知识和提高我们的编程水平。下面我将分享一些C语言程序设计课后习题及其答案,希望对大家有所帮助。 1. 习题一:编写一个程序,输入一个整数,判断该数是否为素数。 ```c #include
if (flag == 0) printf("%d是素数。\n", num); else printf("%d不是素数。\n", num); return 0; } ``` 2. 习题二:编写一个程序,输入一个正整数n,计算并输出1到n之间所有偶数的和。 ```c #include
printf("1到%d之间所有偶数的和为:%d\n", n, sum); return 0; } ``` 3. 习题三:编写一个程序,输入一个正整数n,计算并输出n的阶乘。```c #include
《C语言程序设计》课后习题答案高等教育 出版社 《C语言程序设计》课后习题答案 高等教育出版社 第一章:C语言概述 1. C语言的特点 C语言是一种以处理底层任务和系统编程为目标的高级编程语言。 其特点包括语法简洁、执行效率高、可移植性强等。 第二章:C语言基本数据类型 1. C语言中的基本数据类型 C语言中的基本数据类型包括整型、字符型、浮点型等。整型可以 进一步细分为有符号整型和无符号整型。 第三章:C语言运算符 1. C语言中的运算符 C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。这些运算符用于执行各种数学和逻辑操作。 第四章:C语言控制语句 1. C语言中的条件语句
C语言提供了if语句和switch语句来实现条件判断。if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。 第五章:C语言函数 1. C语言中的函数定义和调用 函数是C语言中的基本模块,用于封装可重用的代码。函数定义包括函数返回类型、函数名、参数列表和函数体等部分。 第六章:C语言数组 1. C语言中的数组定义和使用 数组是一组相同类型的数据元素的集合。C语言中可以使用数组来存储和操作大量数据。 第七章:C语言指针 1. C语言中的指针概念 指针是一种变量,它存储了内存地址。通过指针,可以直接访问和修改对应内存地址中的数据。 第八章:C语言字符串 1. C语言中的字符串操作 字符串是由一系列字符组成的数据类型。C语言通过字符数组来表示和操作字符串。
第九章:C语言结构体 1. C语言中的结构体定义和使用 结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。 第十章:C语言文件操作 1. C语言中的文件读写操作 文件操作是一种重要的数据输入和输出方式。C语言提供了一系列函数来实现文件的读写操作。 总结: 通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。希望本文对读者有所帮助。
C语言程序设计课后习题参考答案 习题一 一、单项选择题 1、C 2、B 3、B 4、C 5、D 6、A 7、C 8、A 二、填空题 1、判断条件 2、面向过程编程 3、结构化 4、程序 5、面向对象方法 6、基本功能操作、控制结构 7、有穷性 8、直到型循环结构 9、算法 10、可读性 11、模块化 12、对问题的分解和模块的划分 习题二 一、单项选择题 1、B 2、D 3、C 4、B 5、A 6、A 7、B 8、C 二、填空题 1、主 2、C编译系统 3、结构化 4、程序 5、面向对象方法 6、.OBJ 7、库函数 8、直到型循环结构 习题三 一、单项选择题 1、D 2、B 3、A 4、C 5、A 6、D 7、B 8、D 9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A 17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A 25、D 26、A 二、填空题 1、补码 2、10^-138~10^138、15~16
3、实 4、单目运算符、自右向左 5、函数调用 6、65,89 习题四 一、单项选择题 1、D 2、C 3、D 4、A 5、D 6、B 7、A 8、C 9、B 10、B 二、填空题 1、两, ; 2、5.169000 3、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车 4、a=98,b=765.000000,c=4321.000000 5、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车 6、0,0,3 7、3 8、scanf(“%lf %lf %lf”,&a,&b,&c); 9、13 13.000000 13.000000 10、c=b-a;a=b+c; 习题五 一、单项选择题 1、B 2、D 3、C 4、B 5、B 6、D 7、A 8、B 9、D 二、填空题 1、1 、0 2、k!=0 3、if(x>4||x<-4)printf(“%d”,x); else printf(“error!”); 4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0)) Printf(“%d”,x); 5、1 6、1 7、10! Right! 8、a=0 9、2,1 10、0 习题1: 一、选择题 1. C语言中的标识符只能由字母,数字和下划线组成且第一个字符( A )。 A. 必须为字母或下划线 B. 必须为下划线 C. 必须为字母 D. 可以是字母、数字或下划线中的任一个 2. C语言中,编程人员可以使用的合法标识符是( D )。 A. if B. 6e8 C. char D. print E. a+b 3. C语言程序中可以对程序进行注释,注释部分必须用符号( C )括起来。 A. { 和 } B. [ 和 ] C. /* 和 */ D. */ 和 /* 4. C语言程序编译时,程序中的注释部分是(D)。 A. 参加编译,并会出现在目标程序中 B. 参加编译,但不会出现在目标程序中 C. 不参加编译,但会出现在目标程序中 D. 不参加编译,也不会出现在目标程序中 5. 以下叙述正确的是( c )。 A. 在C程序中,main()函数必须位于程序的最前面 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 6. C程序要正确地运行,必须要有( C )函数。 A. printf()函数 B. 定义的函数 C. main()函数 D.不需要函数 7. 以下叙述正确的是(D )。 A. 编写C程序,只需编译、连接没有错误,就能运行得到正确的结果 B. C程序的语法错误包括编译错误和逻辑错误 C. C程序有逻辑错,则不可能连接生成EXE文件 D. C程序的运行时错误也是由程序的逻辑错误产生的,引起程序的运行中断习题2: 1. 执行代码: int k; k=8567; printf("|%-06d|\n",k); 后显示(C)。 A.无法显示B.|008567| C.|8567 | D.|-08567| 2. 用小数或指数形式输入实数时,在scanf函数中格式说明字符为(c)。 A.d B.c C.f D.r 3.可以输入字符型数据至字符变量c的语句是(d)。 A.putchar(c); B.getchar(c); C.getchar(); D.scanf("%c",&c); 4. 若x是int类型变量,y是float类型变量,则为了将数据55和5 5.5分别赋给x和y,则执行语句:scanf(“%d, %f”,&x,&y); 时,正确的键盘输入是(a )。 A. 55,55.5↙ B. x=55, y=55.5↙ C. 55↙55.5↙ D. x=55↙y=55.5↙ 5. printf格式控制与输出项的个数必须相同。格式说明的个数小于输出项的个数,多余的输出项将(a)。 A.不予输出B.输出空格C.正常输出D.输出不定值或0 6. scanf函数的格式说明的类型与输入的类型应一一匹配。如果类型不匹配,系统(b)。 A.不予接收 B.并不给出出错信息,但不可能得出正确信息数据 C.能接受正确输入 D.给出出错信息,不予接收输入 7.(d)是正确的描述 A.输入项可以是一个实型常量,如scanf("%f",4.8); B.只有格式控制,没有输入项也能输入,如scanf("a=%d,b=%d"); C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%5.3f",&f); D.当输入数据时,必须指明变量的地址,如scanf("%f",&f); 第一章 1.什么是程序?什么是程序设计语言? 2.C语言有什么特点? 3.什么是算法?算法的描述有哪些基本方法? 第一章主要关注两个概念:一是程序的三种结构(顺序、分支或叫选择、循环) ;二是函数,主函数main() 第二章 1.指出下列哪些是C语言合法的用户识别符。 void a3_b3 For 2a defi ne _123 _abc DO 2.指出下列哪些是C语言合法的常量。 "3'4 " " 0x1g 33 " a" E20 '\18' \0xa' 1.E-5 3.F '\0' .12 '\a' "3'4 ""双引号内表示字符串,但要在一个串内含有单引号、双引号要用转义字符正确的是:’4\"" 0x是十六进制的表示形式之一,但十六进制里没有g这个数值 \0xa'带一个单引号、0开头,无意义.这里要注意\ddd,1-3 位八进制数,\xhh,1-2位十进制数,他们都表示对应的ASCII值 E20, E表示指数形式,但两边必须都有数字。 将此题全部弄懂,所有关于常量的分基本跑不掉了。 3.指出下列定义变量语句中的错误。 int a;b=5; //同类型的两个变量,中间不能用分号。 doubel h; //double int x,float y; //中间要用分号 float f(x); //非法符号 定义变量要注意,数据类型的关键字,还有就是变量名称必须是合法标识符 4.写出能表示数学式子1/(2a + 1/2a)的C语言表达式 1.0/(2*a+1/(2*a)) 5.⑴#include y=x+3/2; prin tf("y=%f\n",y); return 0; }结果是:2.000000,注意3/2=1 ⑵ #i nclude 高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3. 关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。教材每章后选择题参考答案
C语言教材后习题及答案
《C语言程序设计》课后习题参考答案
C语言课后习题及答案讲解