第四章最简单的C程序设计——顺序程序设计
一单项选择题
B 1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式()。
A) 从左起输出该字符串,右补空格
B) 按原字符长从左向右全部输出
C) 右对齐输出该字串,左补空格
D) 输出错误信息
D 2.已有定义int a= -2; 和输出语句printf(“%8x”,a); 以下正确的叙述是()。
A) 整型变量的输出形式只有%d一种
B) %x是格式符的一种,它可以适用于任何一种类型的数据
C) %x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的
D) %8x不是错误的格式符,其中数字8规定了输出字段的宽度
D 3.若x, y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是()。
A) scanf(“%d %x, %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);(双精度型用%le,或者%lf)
D 4.以下程序的输出结果是()。
main( )
{ int k=17;
printf("%d,%o,%x\n",k,k,k);
}
A)17,021,0x11 B)17,17,17
B)17,0x11,021 D)17,21,11
B 5.下列程序的运行结果是()。
#include
main()
{ int a=2,c=5;
printf("a=%d,b=%d\n",a,c);
}
A) a=%2,b=%5 B) a=2,b=5
C) a=d,b=d D) a=2,c=5
C 6.语句printf("a\bre\'hi\'y\\\bou\n"); 的输出结果是()。(说明:'\b'是退格符)
A) a\bre\'hi\'y\\\bou B) a\bre\'hi\'y\bou
C) re'hi'you D) abre'hi'y\bou
B 7.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。
A) INPUT x、y、z; B) scanf("%d%d%d",&x,&y,&z);
C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);
B 8.若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c); 给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是():
A) 10<回车>B) 10.0,22.0,33.0<回车>
22<回车>
33<回车>
C) 10.0<回车>D) 10 22<回车>
22.0 33.0<回车> 33<回车>
A 9.以下程序的输出结果是()。
main()
{
int n;
(n=6*4,n+6),n*2;
printf(“n=%d\n”,n);
}
A) 24 B) 12 C) 26 D) 20
B 10.以下程序的输出结果是()。
main()
{
int x=2,y,z;
x*=3+1;
printf(“%d,”,x++);
x+=y=z=5;
printf(“%d,”,x);
x=y=z;
printf(“%d\n”,x);
}
A) 8,14,1 B) 8,14,5 C) 8,13,5 D)9,14,5
C 11.下面程序的输出结果是()。
main()
{
int x, y, z;
x=0;y=z=-1;
x+=-z---y;{(-z--)-y}
printf(“x=%d\n”,x);
}
A) x=4 B) x=0 C) x=2 D) x=3
B 12.设x为int型变量,则执行语句x=10; x+=x-=x-x; 后,x的值为()。
A) 10 B) 20C) 40 D) 30
B 13.只能向终端输出一个字符的函数是()。
A) printf函数B) putchar函数
C) getchar函数D) scanf函数
A 14.下列程序执行后的输出结果是(小数点后只写一位)()。
main()
{ double d; float f; long l; int i;
i=f=1=d=20/3;
printf("%d %ld %f %f \n", i,l,f,d);
}
A) 6 6 6.0 6.0B) 6 6 6.7 6.7
C) 6 6 6.0 6.7D) 6 6 6.7 6.0
C 15.在下列叙述中,错误的一条是()。
A) printf函数可以向终端输出若干个任意类型的数据
B) putchar函数只能向终端输出字符,而且只能是一个字符
C) getchar函数只能用来输入字符,但字符的个数不限
D) scanf函数可以用来输入任何类型的多个数据
B 16.以下程序的输出结果为()。
main()
{
char c1=…a?,c2=…b?,c3=…c?;
printf(“a%cb%c\tc%c\n”,c1,c2,c3);
}
A) abc abc abc B) aabb cc C) a b c D) aaaa bb
B 17.若输入12345和abc,以下程序的输出结果是()。
main()
{
int a;
char ch;
scanf(“%3d%3c”,&a,&ch);
printf(“%d, %c” ,a, ch);
}
A) 123, abc B) 123,4C) 123,a D) 12345,abc
D 18.以下程序的输出结果是()。
main()
{
unsigned x1;
int b= -1;
x1=b;
printf(“%u”,x1);
}
A) %u B) -1C) %u-1D) 65535
B 19.在printf函数中用来输出十六进制无符号整数的格式字符是()。
A) d格式符B) x格式符C) u格式符D) o格式符
B 20.设a=12、b=12345,执行语句printf(“%4d,%4d”,a,b)的输出结果为()。
A) 12, 123B) 12,12345C) 12, 1234D) 12, 123456 C 21.以下程序的输出结果是()。
#include
#include
main()
{
int a=1,b=4,c=2;
float x=10.5, y=4.0, z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf(“%f\n”, z);
}
A) 14.000000B) 15.400000C) 13.700000D) 14.900000
D 22.以下程序的输出结果是()。
main()
{
int a=2, c=5;
printf(“a=%%d, b=%%d\n”, a, c);
}
A) a=%2, b=%5B) a=%2, c=%5
C) a=%%d, b=%%d D) a=%d, b=%d
C 23.请读程序:
main()
{
int a;
float b, c;
scanf(“%2d%3f%4f”,&a,&b,&c);
printf(“\na=%d, b=%f, c=%f\n”, a, b, c);
}
若运行时从键盘上输入9876543210
A) a=98, b=765, c=4321B) a=10, b=432, c=8765
C) a=98, b=765.000000, c=4321.000000D) a=98, b=765.0, c=4321.0
D 24.若有定义:int x, y; char a, b, c; 并有以下输入数据(此处
1∪2
A∪B∪C
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。
A) scanf(“x=%d, y=%d”, &x, &y); a=getchar( ); b=getchar( ); c=getchar( );
B) scanf(“%d %d”, &x, &y); a=getchar( ); b=getchar( ); c=getchar( );
C) scanf(“%d%d%c%c%c”, &x, &y, &a, &b, &c);
D) scanf(“%d%d%c%c%c%c%c%c”, &x, &y, &a, &a, &b, &b, &c, &c);
C 25.下列可作为C语言赋值语句的是()。
A) x=3, y=5; B) a=b=6C) i--;D) y=int(x);
B 26.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf(“i=%d, f=%f”, &i, &f);
为了把100和765.12分别赋给i和f,则正确的输入为()。
A) 100<空格>765.12<回车>B) 100, 765.12<回车>
C) 100<回车>765.12<回车>D) x=100<回车>y=765.12<回车>
D 27.以下叙述中正确的是()。
A) 输入项可以是一个实型常量,例如:scanf(“%f”, 3.5);
B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(“a=%d, b=%d”);
C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4.2f”, &f);
D) 当输入数据时,必须指明变量地址,例如:scanf(“%f”, &f);
D 28.设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是()。
A) 把x和y按从小到大排序B) 把x和y按从大到小排序
C) 无确定结果D) 交换x和y中的值
二填空题
1.下面程序的运行结果是i:dec=-4,oct=17774,hex=ffffc,unsigned=65532。
main()
{
short i;
i= -4;
printf(“\ni: dec=%d, oct=%o, hex=%x, unsigned=%u\n”, i, i, i, i);
}
2.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是5.0,4,c=3 。
int b,c;float a;
scanf("%f,%d,c=%d",&a,&b,&c);
3.下列程序的输出结果是16.00,请填空。
main()
{ int a=9, b=2;
float x= 6.6 , y=1.1,z;
z=a/2+b*x/y+1/2;(1/2=0,a/2=4)
printf("%5.2f\n", z );
}
4.在printf格式字符中,只能输出一个字符的格式字符是%c ;用于输出字符串的
格式字符是%s ;以小数形式输出实数的格式字符是%f ;以标准指数形式输出实数的格式字符是%e 。
C 4.执行下列语句后a的值为(),b的值为()。
int a, b, c;
a=b=c=1;
++a|| ++b && ++c;
A) 错误 1 B) 2 2 C) 2 1 D) 1 1
B 6.设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后n的值是()。
A) 0 B) 2 C) 3 D) 4
C 21.以下程序的输出结果是()。
A)-1 1 B)0 1 C)1 0 D)0 0
main( )
{ int a=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
C 27.若有定义: float w; int a, b; 则合法的switch语句是()。
A) switch(w) B switch(x)
{case 1.0: printf("*\n"); {case 1,2: printf("*\n");
case 2.0: printf("**\n"); case 3: printf("**\n");
}无default语句}
C) switch(b)D) switch(a+b);
{case 1: printf("*\n"); {case 1: printf("*\n");
default: printf("\n"); case 2: printf("**\n");
case 1+2: printf("**\n"); default: printf("\n");
}}
A 40.请读程序:
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;
}
printf(“a=%d, b=%d\n”, a, b);
}
上面程序的输出结果是()。
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 D 44.以下程序的输出结果是()。
main()
{
int a= -1, b=4, k;
k=(++a<0)&&!(b--<=0);
printf(“%d%d%d\n”, k, a, b);
}
A) 104 B) 103 C) 003 D) 004
B 46.假定所有变量均已正确说明,下列程序段运行后x的值是()。
a=b=c=0;x=35;
if(!a) x--;
else if(b) ; if(c) x=3;
else x=4;
A) 34 B) 4 C) 35 D) 3
C 52.以下程序的输出结果为()。
main()
{
int a=2, b=-1, c=2;
if(a
if(b<0) c=0;
else c++;
printf(“%d\n”,c);
}
A) 0 B) 1 C) 2D) 3
4.如果运行时输入字符Q,则下面程序的运行结果是 Q 。
main()
{
char ch;
scanf(“%c”, &ch);
ch=(ch>=‘A’&& ch<=‘Z’)? (ch+32):ch;
ch=(ch>=‘a’&& ch<=‘z’)? (ch-32):ch;
printf(“%c”, ch);
}
C 1.下面程序段的运行结果是()。
int n=0;
while(n++<=2);
printf(“%d”,n);
A) 2 B) 3 C) 4D) 有语法错
C 5.对以下程序段描述正确的是()。
x=-1;
do
{x=x*x;}
while(!x);
A) 是死循环B) 循环执行二次
C) 循环执行一次D) 有语法错误
B 10.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;) printf(“%d”,i--);
A) 无限次B) 0次C) 1次D) 2次
C 12.下面程序段的运行结果是()。
for(y=1;y<10;) y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
A) x=27,y=27 B) x=12,y=13 C) x=15,y=14 D) x=y=27
D 14.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空()。
#include
main()
{int i;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!((i-3)%7))
if( ______ )
printf(“%d”,i);
}
A) i%9=5 B) i%9!=5 C) (i-5)%9!=0 D) i%9==5
B 15.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空()。
#include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while( _k%11______ );
j=k/11;
printf(“316=13*%d+11*%d”,i,j);
}
A) k/11 B) k%11 C) k/11==0 D) k%11==0
D 16.下面程序的运行结果是()。
#include
main()
{int y=10;
do{y--;}while(--y);
printf(“%d\n”,y--);
}
A) -1 B) 1 C) 8 D) 0
D 17.若运行以下程序时,从键盘输入ADescriptor
#include
main()
{char c;
int v0=1,v1=0,v2=0;
do{
switch(c=getchar())
{case …a?:case …A?:
case …e?:case …E?:
case …i?:case …I?:
case …o?:case …O?:
case …u?:case …U?:v1+=1;
default:v0+=1;v2+=1;
}
}while(c!=?\n?);
printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);
}
A) v0=7,v1=4,v2=7 B) v0=8,v1=4,v2=8
C) v0=11,v1=4,v2=11 D) v0=12,v1=4,v2=12
B 18.下面程序的运行结果是()。
#include
main()
{int a=1,b=10;
do
{b-=a;a++;}
while(b--<0);
printf(“a=%d,b=%d\n”,a,b);
}
A) a=3,b=11 B) a=2,b=8
C) a=1,b=-1 D) a=4,b=9
B 19.以下程序的输出结果是()。
main()
{ int num=0;
while(num<=2)
{ num++; printf(“%d\n”,num);}
}
A) 1 B) 1C) 1 D) l
2 2 2
3 3
4
20.设有程序段
int k=10;
while(k=0) k=k-1;
C 则下面描述中正确的是()。
A) while循环执行10次 B) 循环是无限循环
C) 循环体语句一次也不执行D) 循环体语句执行一次
B 21.设有以下程序段
int x=0,s=0;
while(!x!=0) s+=++x;
printf("%d",s);
则()。
A) 运行程序段后输出0 B) 运行程序段后输出1 C) 程序段中的控制表达式是非法的D) 程序段执行无限次A 22.语句while(!E);中的表达式!E等价于()。
A) E==0 B) E!=1 C) E!=0 D) E==1
A 23.下面程序段的运行结果是()。
a=1;b=2;c=2;
while(a
printf("%d, %d, %d", a, b, c);
A) 1,2,0B) 2,1,0 C) 1,2,1 D) 2,1,1 D 24.下面程序段的运行结果是()。
x=y=0;
while(x<15) y++,x+=++y;
printf("%d, %d", y, x);
A) 20,7 B) 6,12 C) 20,8 D) 8,20
B 25.以下程序段的执行结果是()。
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%d\n", a, y);
if(y>20) break;
} while(a=14);
A) a=12 y=12B) a=12 y=12
a=14 y=16a=16 y=28
a=16 y=20
a=18 y=24
C) a=12 y=12D) a=12 y=12
a=14 y=26
a=14 y=44
B 26.t为int类型,进人下面的循环之前,t的值为0,则以下叙述中正确的是()。
while( t=l )
{……}
A) 循环控制表达式的值为0B) 循环控制表达式的值为1
C) 循环控制表达式不合法D) 以上说法都不对
A 27.有以下程序段
int k=0;
while(k=1) k++;
while循环执行的次数是()。
A) 无限次B) 有语法错,不能执行
C) 一次也不执行D) 执行1次
C 28.以下程序执行后sum的值是()。
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
A) 15B) 14C) 不确定D) 0
C 29.有以下程序段
int x=3;
do
{ printf("%d",x-=2); }
while (!(--x));
其输出结果是()。
A) 1B) 3 0C) 1 -2D) 死循环
A 30.若输入12、8,以下程序的输出结果是()。
main()
{int a,b,num1,num2,temp;
scanf(“%d,%d”,&num1,&num2);
if(num1>num2)
{temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;
}
printf(“%d, %d”,a,num1*num2/a);
}
A) 4,24B) 3,24 C) 5,25 D) 4,25 A 31.以下程序的输出结果是()。
#include
#include
main()
{int s=1;
float n=1,pi=0;
double t=1;
while(fabs(t)>=2e-6)
{pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi*=4;
printf(“pi=%.6f\n”,pi);
}
A) 3.141592 B) 1 C) 2e-6 D) 0
B 32.以下程序的输出结果是()。
main()
{int i,f1,f2;
f1=f2=1;
for(i=0;i<4;i++)
{printf(“%d %d ”,f1,f2);
f1+=f2;
f2+=f1;
}
}
A) 1 2 3 4 5 6 7 8 B) 1 1 2 3 5 8 13 21
C) 1 1 3 5 7 9 11 13 D) 1 3 5 7 9 11 13 15
B 33.下列叙述中,正确的一条是()。
A) 语句“goto 12;”是合法的
B) for(;;)语句相当于while(1)语句
C) if(表达式)语句中,表达式的类型只限于逻辑表达式
D) break语句可用于程序的任何地方,以终止程序的执行
B 34.以下程序的输出结果是()。
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20) break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf(“%d\n”,a);
}
A) 7 B) 8 C) 9 D) 10
C 35.以下的for循环()
for(x=0,y=0;(y!=123)&&(x<4);x++) ;
A) 是无限循环B) 循环次数不定
C) 执行4次D) 执行3次
D 36.C语言中()
A) 不能使用do-while语句构成的循环
B) do-while语句构成的循环必须用break语句才能退出
C) do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D) do-while语句构成的循环,当while语句中的表达式值为零时结束循环
A 37.以下程序的输出结果是()。
main()
{int i;
for(i=1;i<=5;i++)
{if(i%2)
printf(“*”);
else
continue;
printf(“#”);
}
printf(“$\n”);
}
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
A 38.有以下程序,从第一列开始输入数据2473
输出结果为()。
#include
main()
{int c;
while((c=getchar())!=?\n?)
{switch(c-…2?)
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
printf(“\n”);
}
A) 668977 B) 668966 C) 6677877 D) 6688766
B 39.执行以下程序片段的结果是()。
int x=23;
do
{printf(“%d”, x--);}
while(!x);
A) 打印出321 B) 打印出23
C) 不打印任何内容D) 陷入死循环
D 40.若x是int型变量,则执行以下程序片段的结果是()。
for(x=3;x<6;x++) printf((x%2)?(“**%d”) :(“##%d\n”), x);
A) **3##4**5 B) ##3**4##5 C) ##3 D) **3##4
**4##5 **5
B 41.有以下程序,若运行时从键盘输入3.6 2.4
#include
#include
main()
{float x,y,z;
scanf(“%f%f”,&x,&y);
z=x/y;
while(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;}
else break;
}
printf(“%f\n”, y);
}
A) 1.500000 B) 1.600000C) 2.000000 D) 2.400000
D 42.以下程序的输出结果是()。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d %d ”,x--,y);
}
A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
A 43.以下程序的输出结果是()。
main()
{int n=4;
while(n--)
printf(“%d ”,--n);
}
A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0
B 44.以下程序的输出结果是()。
main()
{int i;
for(i=?A?;i
printf(“%c”,i+32);
}
A) 编译通不过,无输出B) aceg C) acegi D) abcdefghi A 45.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是()。
for(i=5;i;i--)
for(j=0;j<4;j++){ }
A) 20 B) 24 C) 25 D) 30
B 46.若j为int型变量,则以下for循环语句的执行结果是()。
for(j=10;j>3;j--)
{if(j%3) j--;--j;--j;printf(“%d ”,j);}
A) 6 3 B) 7 4 C) 6 2 D) 7 3
D 47.以下程序的执行结果是()。
main()
{int i,x;
for(i=1;i<=50;i++)
{x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf(“%d”,i);
}
}
A) 28 B) 27 C) 42 D) 41
B 48.以下程序的执行结果是()。
main()
{int i,j;
for(j=10;j<11;j++)
{ for(i=9;i if(!(j%i)) break; if(i>=j-1) printf(“%d”,j); } } A) 11 B) 10 C) 9 D) 10 11 C 49.在下列选项中,没有构成死循环的程序段是()。 A) int i=100; B) for(;;); while(1) {i=i%100+1; if(i>100) break; } C) int k=1000;D) int s=36; do{++k;} while(s);--s; while(k>=10000); B 50.以下程序的输出结果是()。 main() {int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; } x++; } printf(“x=%d\n”,x); } A) x=4 B) x=8 C) x=6 D) x=12 C 51.运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果是()。main() {int m,n; scanf(“%d%d”,&m,&n); while(m!=n) {while(m>n) m-=n; while(n>m) n-=m; } printf(“m=%d\n”, m); } A) m=3 B) m=2 C) m=1D) m=0 C 52.以下程序的输出结果是()。 main() {int i,j,m=0,n=0; for(i=0;i<2;i++) for(j=0;j<2;j++) if(j>=i) m=1;n++; printf(“%d\n”, n); } A) 4 B) 2 C) 1D) 0 C 53.以下程序执行后sum的值是()。 main() { int i , sum=0; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } A) 6B) 3C) 死循环D) 0 二填空题 1.以下程序运行后的输出结果是 52 。 main() { int i=10, j=0; do { j=j+i; i--;} while(i>2); printf("%d\n",j); } 2.设有以下程序: main() { int n1,n2; scanf("%d",&n2); while(n2!=0) { n1=n2%10; n2=n2/10; printf("%d",n1); } } 程序运行后,如果从键盘上输入1298,则输出结果为8921 。 3.若输入字母b,程序输出结果为b,B ;若输入字符*,程序将怎样等待状态。 #include main() {char c1, c2; c1=getchar(); while(c1<97||c1>122) c1=getchar(); c2=c1-32; printf("%c, %c\n",c1, c2); } 4.用以下程序计算1到100的整数的累加和。 main() { int i=1, sum= 0 ; for( ;i<=100; ) {sum+=i; i++; } printf("sum=%d\n", sum ); } 5.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请填空。 main() { float x, amax, amin; scanf(“%f”,&x); amax=x; amin=x; while( x>=0 ) {if(x>amax) amax=x; if( x scanf(“%f”,&x); } printf("amax=%f\namin=%f\n",amax, amin); } 6.设i、j、k均为int型变量,则执行完下面的for循环后,k的值为10 。 for(i=0, j=10;i<=j; i++, j--) k=i+j; 7.下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。 main() { int a, b, c, i; a=c=0; for(i=0;i<=10;i+=2) {a+=i; b=i+1 ; c+=b; } printf("偶数之和=%d\n", a); printf("奇数之和=%d\n", c-11); } 8.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。main() { int i, j; for(i=0; i<100 ; i++) {j=i*10+6; if( j%3!=0 ) continue; printf(“%d”, j); } } 9.要使以下程序段输出10个整数,请填入一个整数。 for(i=0; i<= 18or19 ; printf(“%d\n”, i+=2)); 10.若输入字符串:abcde<回车>,则以下while循环体将执行0 次。 while((ch=getchar())= =…e?) printf(“*”); 第四章数组参考答案 一、选择题:1、 B 2、C 3、D 4、C 5、C 6、B 7、D 8、B 9、B 10、A 二、填空题: 1、首地址 2、按行存放 3、一个字符 4、′\0′ 5、字符数组名或字符串 6、9 0 7、6 8、j-1 str[j-1] 9、62 10、s1[i]=s2[i]; 三、改错题 1、错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18}; 正确语句:int a[ ][3]={2,4,6,8,10,12,14,16,18}; 2、错误语句:if (str[2]>string) string=str[2]; 正确语句:if (strcmp(str[2],string)>0) strcpy(string,str[2]); 3、错误语句:char c[5]={'C','h ','i','n','a '}; 正确语句:char c[6]={'C','h ','i','n','a '};或char c[ ]={“China”}; 4、错误语句:int a[3]={3*0} ; 正确语句:int a[4]; 5、错误语句:scanf(“%d%d%d”,&a); 正确语句:for (i=0; i<3; i++) scanf(“%d”,&a[i]); 或scanf(“%d%d%d”, &a[0], &a[1], &a[2]); 四、编程题 1、用数组来处理,求解Fibonacci数列前40项:1,1,2,3,5,8,13,21…。 #include 第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include 第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是。 A)Fun("abc", 3.0); B)t = Fun('D', 16.5); C)Fun('65', 2.8); D)Fun(32, 32); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\main.c */ #include 单选题 1、关于C语言中的函数,下列描述正确的是() A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的嵌套均不可以嵌套 D.函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2), (v3,v4,v5)和v6一共三个实参 3、关于C语言中print()函数与scanf()函数,下列描述中正确的是() A.printf()函数可以向任何地方输出数据 B.printf()只向控制台输出数据 C.scanf()只能输入英文字母和数字 D.scanf()函数可以识别输入的空格 答案:B 解析:printf()是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是() A.extern B.static C.this D.auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A.当调用时,会调用内部函数 B.当调用时,会调用外部函数 C.当调用时,会调用两次,先调用内部函数再调用外部函数 D.都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是() A.extern B.static C.this 答案:A 解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字 7、关于C语言中的局部变量,下列描述中错误的是() A.局部变量就是在函数内部声明的变量 B.局部变量只在函数内部有效 C.局部变量只有当它所在的函数被调用时才会被使用 D.局部变量一旦被调用,其生存周期持续到程序结束 答案:D 解析:当函数调用结束时局部变量就会失去作用 8、关于C语言中的全局变量,下列描述中正确的是() A.全局变量的作用域一定比局部变量的作用域范围大 B.静态类别变量的生存周期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量 D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案:B 解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用; 选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量; 选项4不对:static变量定义时就存储地全局区,初始化为0; 9、当全局变量与局部变量重名时,那么在调用时() A.局部变量会被屏蔽 B.全局变量会被屏蔽 C.都不会调用,系统会报错 D.会调用两次,先调用局部变量,再调用全局变量 答案:B 解析:当局部变量与全局变量重名时,全局变量会被屏蔽。 10、在C语言中,关于变量的作用域,下列描述中错误的是() A.局部变量只在整个函数的运行周期中有效 B.全局变量的作用域为整个程序的运行周期 C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 D.全局变量会覆盖掉所有与它重名的局部变量 答案:D 解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉 11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量() A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 答案:D 解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量 4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的 12、C语言程序的基本单位是()。 C 语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include printf("The largest number is %d\n",max); return 0; } 第3 章 #include p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5 年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2 年期,到期后将本息再存3 年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3 年期,到期后将本息再存2 年期 p4=p*pow(1+r1,5); // 存1 年期,到期后将本息存再存1 年期,连续存5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1 方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2 方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3 方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4 方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5 方案得到的本息和 return 0; } #include C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN] C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); } P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); } 第三章最简单的c程序设计 实践教学: 属性:实训 时间:学时。 实践教学内容: 实验目的:熟悉运算符、表达式,掌握标准输入输出函数的适用方法和顺序结构程序设计的一般方法。 实验内容和步骤: 1.编程,要求从键盘按规定的格式输入时间(时:分:秒), 并将输入的时间在屏幕上显示出来,存入ex3_1.c文件, 并编译、调试、运行。 #include 2.编程,要求从键盘输入数据,使整型变量a=10,b=8;字符 型c1=’A’,c2=’a’;实型变量x=3.1,y=64.54。并按规定格式输出变量的值。格式如下。存入ex3-2.c文件,并编译、调试、运行。 __int___a=__10___b=____8 char_c1=__A,___c2=____a float___x=_3.1,___y=64.54 #include 1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main() C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 1.1 向屏幕输出文字. #include int z; //z属于局部变量,可与主函数中相同名字. if (x>y) z=x; else z=y; return(z); //z作为整个程序的出口值,赋给主函数中的c. } #include 第四章 什么是算术运算什么是关系运算什么是逻辑运算 解:略。 C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假” 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include <> main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)a:b; /* 将a和b中的大者存人temp中 */ max=(temp>c)temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); } 1、编写程序,把560分钟换算成用小时和分钟表示,然后输出。解:其所编程序如下 #include"stdio.h" void main() {int a=560,b=60,c,d; c=a/b; d=a%b; printf("560分钟=%d小时%d分钟",c,d); } 2、编写程序,输入两个整数:1500和350,求出它们的商和余数并进行输出。 解:所编程序如下 #include"stdio.h" void main() {int a,b,c,d; printf("Input two numbers:"); scanf("%d%d",&a,&b); c=a/b; d=a%b; printf("c=%d,d=%d\n",c,d); } 3、编写程序,读入三个双精度数,求出它们的平均值并保留此平均 值小数点后一位数,对小数点后的第二位数进行四舍五入,最后输出结果。 解:所编程序如下 #include"stdio.h" void main() {double a,b,c,ave; printf("Enter three numbers:"); scanf("%lf%lf%lf",&a,&b,&c); ave=(a+b+c)/3; printf("(1)ave=%f\n",ave); ave=(int)(ave*10+0.5)/10.0; printf("(2)ave=%f\n",ave); } 4、编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a 中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a、b、c。 解:所编程序如下 #include"stdio.h" void main() {int a,b,c,m,n,t; printf("Enter three numbers:"); scanf("%d%d%d",&a,&b,&c);C语言程序设计习题参考答案第四章(数组)
《C语言程序设计》课后习题答案(第四版)
C语言程序设计教程 清华大学出版社 陈明主编 第4章答案
C语言程序设计教程第四章练习试题解析[1]
c程序设计(第四版)谭浩强-课后答案.pdf(2)(最新整理)
C程序设计第四版谭浩强完整版课后习题答案
第三章 最简单的c程序设计
C语言程序设计第二版第四章第七章课后答案
C程序设计(第四版)(谭浩强)完整版_课后习题答案
c语言程序设计第四版第四章答案谭浩强
简单的C语言编程题例题
最新C++程序设计基础课后答案--第四章