⑴ c语言,实型常量
严格来说,C语言中没有“实型”(real type)这种数据类型。
C语言中非构造类型只有整型(int、short、long、long long和对应的unsigned修饰的类型,以及同义写法),以及浮点型(包括单精度浮点型float,双精度浮点型double,长双精度浮点型long double)两大类。其中float和double内部储存形式遵循IEEE 754标准,long double取决于编译平台。C语言中的浮点型数内部储存形式为指数计数法分段存储的二进制形式的小数,即使在规定大小和字长精度范围之内也不能严格无误差地表示所有十进制小数、有理数,更不用说实数。(而C语言源代码中除了16进制整数表示的实际存储形式以外,直接表示的所有浮点数都只能是十进制的,因此除非在二进制下也是有限小数(分数形式中分母是2的幂),且不是太长,否则在编译过程中即会产生误差。)
尽管如此,有时候float、double、long double这三者(或者前两者)会被不严格地统称为“实型”。
C语言中,数值常量的后缀(大小写同义)可以表达常量的类型,例如0UL表示unsigned long型数0。如果没有后缀,则通过具体的写法来确定。总的原则是尽可能避免精度损失。不过也不是范围越小越好,例如0是int型而不是char型常量。对于没有后缀的十进制小数(小数部分或整数部分之一完全不写的也算,当作省略了0),默认为double常量,例如3.1415等同于3.1415D。(如果要用float常量,应该使用3.1415f或3.1415F。)对于指数形式的,默认也是double,例如0.329e2(或者0.329E+2之类的也可以)。至于0.329*10^2如果出现在源代码中,会被当做是一个表达式,先计算0.329和10的积,结果再和2作^(位异或)运算。但由于积是double类型的,不能参与位运算,会给出编译错误。
871是int常量,不是“实型”常量。
871.、871.f、871.0F、871.d、871.0D、8.71E+2、0.871e3这类才是“实型”常量。
回答者: 幻の上帝 - 十四级 2010-1-16 19:52
⑵ 以下说法正确的是( )。 A. 输入项可以为一实型常量,如scanf(“%f”,3.5);
正确答案是D
因为scabf函数必须带地址才能正常输入。
A没有地址&
B没有输入项程序没有意义
C实行数据不是非要规定
⑶ 14. 有下面程序段 Char a[3],b[ ]=”hello”; a=b; printf(“%s”,a); 则输出
一、选择题(15小题,每小题2分,共计30分)
1.下面不正确的字符串常量是 A 。
A)'abc' B)"12'12" C)"0" D)" "
2.以下正确的叙述是 D
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误(精确)地表示
D)在C程序中,%是只能用于整数运算的运算符
3.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为 A
A)D B)68 C)不确定的值 D)C
4.sizeof(float)是 B :
A)一个双精度型表达式 B)一个整型表达式
C)一种函数调用 D)一个不合法的表达式
5.以下说法正确的是 D :
A)输入项可以为一实型常量,如scanf("%f",3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);
6.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是 D (注:表示回车)。
int a1,a2; char c1,c2;
scanf("%d%d",&a1,&a2); scanf("%c%c",&c1,&c2);
A) 1020AB B)10 20AB
C)10 20 AB D)10 20AB
7.请阅读以下程序:
void main()
{int a=5,b=0,c=0;
if(a=b+c) printf("***\n");
e1se printf("$$$\n");
以上程序 D :
A)有语法错不能通过编译 B)可以通过编译但不能通过连接
C)输出*** D)输出$$$
8.下面程序段的运行结果是 C 。
x=y=0;
while(x<15) {y++;x+=++y;}
printf("%d,%d",x,y);
A)20,7 B)6,12 C)20,8 D)8,20
9.若有说明:int a[3]={0};则下面正确的叙述是D。
A) 只有元素a[0]可得到初值0
B) 此说明语句不正确
C) 数组a中各元素都可得到初值,但其值不一定为0
D) 数组a中每个元素均可得到初值0
10.在c语言中,引用数组元素时,其数组下标的数据类型允许是_ C _。
A)整型常量 B)整型表达式
C)整型常量或整型表达式 D)任何类型的表达式
11.下面程序段的运行结果是 _ B _。
char c[5]={'a','b','\0','c','\0'};
printf("%s",c);}
A)’a’’b’ B)ab C)ab c D)a b
12.以下叙述正确的是 C 。
A) 在C程序中,main函数必须位于程序的最前面
B) C程序的每行中只能写一条语句
C) C语言本身没有输入输出语句
D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
13.简单变量做实参时,实参与其对应的形参之间的数据传递方式是 C 。
A)双向值传递方式 B)地址传递方式
C)单向值传递方式 D)用户指定传递方式
14.编辑程序的功能是 A 。
A)修改并建立源程序 B)将源程序翻译成目标程序
C)调试程序 D)命令计算机执行指定的程序
15.在C语言中,5种基本数据类型的存储空间长度排列顺序为C。
A)char
C)char
二、计算表达式(每小题1.5分,共计15分):
设int x=25,y=-20;float a=102.56,b=50.87;(注意:各式结果不影响后续的题目!)
1.(++y)+(x--) ( 6 )
2.y*=y+=25 ( 25 )
3.x+y>=0?(x-2*y):(x+2*y) ( 65 )
4.(x+y)/2+(int)(a-b)%(int)b ( 3 )
5.x/2+(a-b)/2 ( 37.845 )
6.!(x=a)&&(y=b)&&1 ( 0 )
7.!(a+b-1)||y+x/2 ( 1 )
8.计算(y>=0)&&(++y)后y的值为: ( -20 )
9.printf(“%d”,’\102’);结果为 ( 66 )
10.已知’a’的ASCII码为97,则:printf(“%c”,’\x64’);结果为( d )
三、写出下列程序的的执行结果(每小题5分,共计20分,注意输出格式)
1.#include
Int main()
{ int a=23389,b=45;float x=647.3586,y=13643.5538;
char c1=’A’,c2[]="Hello";
printf("a=%4d,b=%4d\n",a,b);
printf("%-9.2f,%9.2f\n",x,y);
printf("%o,%x,%u\n",b,b,b);
printf("%d,%c\n",c1,c1);
printf("%s,%6.4s\n",c2,c2);
return 0;
2.#include
#define N 10
int main( )
{ int a=1,b=0, i;
for (i=0; i
{ printf("%6d%6d",a,b);
printf("\n");
a=b+a;
b=a+b;}
return 0;}
3.#include
int main()
{ int i,j,k=0;
for(i=1;i<31;i++)
{ for(j=2;j<=i-1;j++)
if(i%j==0) break;
if(j==i)
{ printf("%7d",i) ;
k++;
if(k%2==0) printf("\n");
Return 0;
4.#include
int main()
{ int i=16,j,x=6,y,z;static char c[]=”I am a student”;
j=i+++1; printf(“%5d\n”,j);
x*=i=j; printf(“%5d\n”,x);
x=1,y=2,z=3;
x+=y+=z;
printf(“%5d\n”,(z+=x)>y? z++:y++);
x=y=z=-1;
++x||++y||z++;
printf(“%5d,%5d,%5d\n”,x,y,z);
printf(“%s,%5.4s\n”,c,c);
return 0;
四、程序填空(每空1.5分,共计15分)
1.下面程序的功能是:将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。
#include
main()
{ char s1[80], s2[80];
int i;
printf("input s2:");
gets(s2);
for(i=0;s2[i]!=’\0’; i++ )
s1[i]=s2[i] ;
s1[i]=’\0’;
printf("s1: %s \n",s1);
return 0;
2.输入20个整数,找出其中的最大数及最小数,并求其和值。
#include
int main()
{ int a[20],i,max,min,sum;
printf("input a[0]-a[19]:");
for(i=0;i<20;i++)
scanf(“%d”, &a[i] );
max=a[0]; min=a[0]; sum= a[0] ;
for(i=1; i<20 ;i++)
{ if(a[i]>max) max=a[i];
if(a[i]
sum+=a[i];
printf(%d,%d,%d\n",max,min,sum);
return 0;
3.输入一行字符到字符数组中,将其中的小写字母转化成大写字母,大写字母转化成小写字母,然后输出。
#include
#include
main()
{ char c,str[80];
int i;
gets(str);
for(i=0;(c=str[i])!= ’\0’ ;i++)
{ if( c>=’A’&&c<=’Z’ ) c=c+32;
else if(c>=’a’&&c<=’z’) c=c-32;
str[i]=c; }
puts( str );
return 0;
五、编写程序(每小题10分,共计20分)
(注意:可做在试卷反面)
1.输出100到300之间能被5整除却不能被3整除的所有数之和。
#include
int main()
{ int n,sum=0;
for(n=100; n<=300; n++)
if(n%5==0 && n%3!=0) sum += n;
printf(“%d\n”, sum);
return 0;
2.编写main函数及一个求x阶乘(x!)的用户自定义函数fun( ),并在主函数中调用该函数求组合数c的值
#include
int main()
{ long int fun(long int x);
long res, res1, res2, res3,m, n;
scanf(“%ld,%ld”,&m,&n);
res1=fun(m); res2=fun(n); res3=fun(m-n);
res=res1/(res2*res3);
printf(“%ld\n”,res);
return 0;
long int fun(long int x);
{ long int i, res=1;
for(i=2; i<=x; i++)
res *= i;
return(res);
⑷ 一些关于C语言的问题
C,C,A,C,A,C,A,B,A,D,B,A,D,D,B
⑸ C语言,选什么
D
输入语句一定是声明了变量如float f,读取是也指定好类型和变量地址
scanf("f=%f",&f)
⑹ 帮忙解答下C语言
1、以下选项中合法的字符常量是(
B)
A、“B”
B、’\010’
C、68
D、D
(字符常量须用单引号括起来)
2、一个C语言标志符(
D)
A)只能是数字
B)只能是字母
C)只能是下划线或字母
D)可以由字母、数字或下划线组成,但是数字不能作为开始符号
3、以下选项中,与k=n++完全等价的表达式是(A
)
A)k=n,n=n++
B)n=n+1,k=n
C)k=++n
D)k+=n+1
(k=n++
n先赋值后增1)
4、设x,y,z,t均为int型变量,则执行以下语句后,t的值为(
C)
x=y=z=1
;
t=x
|
|
y
&&
z
;
A)不定值
B)2
C)1
D)0
5、以下叙述中正确的是(D
)
(输入项需要取地址符&,输出位数不限)
A)输入项可以是一个实型常量,如:scanf(”%f”,3.5);
B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:
scanf(”a=%d,b=%d”)
;
C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(”%4.2f”,&d)
;
D)当输入数据时,必须指明变量地址,例如:scanf(”%f”,&f)
;
6、有如下程序:
main()
{
int
x=1,a=0,b=0;
switch(x){
case
0:
b++;
case
1:
a++;
case
2:a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
该程序的输出结果是(
A)
A)a=2,
b=1
B)a=1,b=1
C)a=1,
b=0
D)a=2,b=2
7、有如下程序:
main()
{
float
x=2.0,
y;
if(x<0.0)y=0.0;
else
if(x<10.0)y=1.0/x;
else
y=1.0;
printf(“%f\n”,y);
}
该程序的输出结果是(C
)
A)
0.000000
B)0.250000
C)
0.500000
D)1.000000
⑺ C语言题目 分少是少,诚心请教,麻烦告诉下,看看自己选的是对的吗望请批改!
1、c语言规定:在一个源程序中,main函数的位置 c
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
2、下面程序的运行结果是_____d_。
main()
{struct cmplx {int x;
int y;
}cnum[2]={1,3,2,7};
printf(”%d\n”,cnum[0].y/cnum[0].x *cnum[l].x);
}
A)0 B)1 C)3 D)6
3、表达式18/4*2/8值的数据类型为_A____
A)int B)float C)double D)不确定
4、以下不正确的叙述是 D 。
A)在c程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
c)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变。
D)当从键盘输入数据时,对于整型变量只能输入整型数值.对于实型变量只能输入实型数值。
5、以下程序的运行结果是__d____。
#include "stdio.h”
main()
{struct date
{int year,month,day;
}today;
printf(“%d\n”,sizeof(struct date));
}
A)6 B)8 C)10 D)12
6、以下说法正确的是 d 。 不知道C错哪请解说下
A)输入项可以为一实型常量,如scanf("%f",3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d”);
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf (“%4.2f",&f);// 不应该指定位数,scanf不同于printf
D)当输入数据时,必须指明变量的地址,如scanf(“%f",&f);
7、己知各变量的类型说明如下:
int i=8,k,a,b;
unsigned long w=55;
double x=1.42,y=5.2;
则以下符合c语言语法的表达式是__a___。不知道 请解说下
A)a+=a-=(b=4)*(a=3) B)a=a*3=2 // a*3不能被赋值
C)x%(-3) // x是浮点型,不能进行%操作,只有整型可以 D)y=float(i) // 应该是 y=(float)i
8、已知ch是字符型变量,下面不正确的赋值语句是_a_____。 // 错误的是a,a+b是多个字符!
A)ch='a+b'; B) ch='\0'; C)ch='7'+'9'; D)ch=5+9
9、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c),为使变量a的值为1.b为3,c为2,从键盘输入数据的正确形式应当是__d____。 // 答案是d,输入应该和scanf格式一致
A)132<回车>
B)1,3,2<回车>
C)a=l b=3c=2<回车>
D)a=1,b=3,c=2<回车>
10、逻辑运算符两侧运算对象的数据类型___D__。
A)只能是0或l
B)只能是0或非0正数
c)只能是整型或字符型数据
D)可以是任何类型的数据
⑻ c语言下面哪个选项是正确的
C:
不规定一般默认是6位小数,不是必须规定
D:
你所说的指针和数组本身就代表变量地址。加&是取变量的地址,并不代表不加&不是代表地址。
其实指针也是变量,也可以加地址,变量也可以不加&,也能编译,不过运行会出错,因为它会把变量值当地址,就非法地址访问了
⑼ 求C语言试题
《C语言》综合练习题一
注意:以下 “□”为空格,<CR>为回车
一、 单选题
1、阅读以下程序,当输入数据的形式为:25,13,10 <CR>,正确的输出结果为( )
void main( )
{ int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);}
A) x+y+z=48 B) x+y+z=35 C) x+y+z=38 D) 不确定值
2、下面程序的输出是( )
void main()
{ int y=0;
while(y--);
printf("y=%d\n",y); }
A) y=0 B) while 构成无限循环 C) y=-1 D) y=1
3、在以下各组标识符中,合法的用户标识符是( )。
A) xy_ B) longdouble C) *p D) CHAR
变量1 signed history Float
4、以下能正确计算1*2*3…*10的程序段是( )
A) do { i=1;s=1;s=s*i;i++;}while (i<=10);
B) do {i=1;s=0;s=s*i;i++;} while(i<=10);
C) i=1;s=1; do{ s=s*i;i++;}while (i<=10);
D) i=1;s=0; do{ s=s*i;i++;}while (i<=10);
5、在下列各m的值中,能使表达式m%3==2 &&m%5==3 && m%7==2为真的是( )
A) 8 B) 23 C)17 D) 6
6、运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为( )
A) 2,3 B) 3,5
C) 5,2 D) 2,5
#include <stdio.h>
void main()
{ int v1=0,v2=0; char ch;
while((ch=getchar())!='#')
switch(ch)
{ case 'a':
case 'h': v1++;
default: v2++;
}
printf("%d,%d\n",v1, v2);
}
7、有如下程序
void main( )
{ int i,sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是( )
A) 6 B) 3 C) 死循环 D) 0
8、能正确表示a和b 同时为正或同时为负的逻辑表达式是( )
A) (a>=0‖b>=0)&&(a<0‖b<0)
B) (a>=0&&b>=0)&&(a<0&&b<0)
C) (a+b>0)&&(a+b<=0)
D) a*b>0
9、下列定义数组正确的是( )
A) #define size 10 B) int n=5;
char str1[size],str2[size+2]; int a[n][n+2];
C) char str[]; D) int num['10'];
10、以下程序的功能是计算:s= 1+1/2+1/3+… …+1/10
void main()
{ int n; float s
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是
A)s=1.0; B)for(n=10;n>1;n--)
C)s=s+1/n; D)printf("%6.4f\n",s);
11、以下说法正确的是( )
A) 输入项可以为一个实型常量,如scanf("%f",3.5);
B) 只有格式控制,没有输入项,也能进行正确的输入,如scanf("a=%d,b=%d");
C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
D) 当输入数据时,必须指明变量的地址,如scanf("%f",&f);
12、设x=2.5、a=7,则算术表达式x+2*++a/3%3的值为( )。
A) 2.5 B)3.5
C) 4.5 D)5.5
13、若有说明:int a[3][4]={0}; 则下面正确的叙述是( )
A) 只有元素a[0][0]可得到初值0
B) 此说明语句不正确
C) 数组a中个元素都可以得到初始值,但其值不一定为0
D) 数组a中个元素都可得到初值0
14、设a=3,b=4,c=5, 则表达式 !(a+b)+c-1&&b+c/2的值为( )。
A)6.5 B) 6
C) 0 D)1
15、在下列有关#include命令的叙述中,错误的一条是( )
A)在#include命令中,文件名可以用双引号或尖括号括起来
B)在一个包含文件中又可以包含另一个被包含文件
C)在一个#include命令中可以指定一个包含文件
D)在一个#include命令中可以指定多个包含文件
16、以下不正确的if语句形式是( )
A) if(x>y && x!=y);
B) if( x= = y) x+=y;
C) if (x!=y) scanf("%d",&x) else scanf("%d",&y);
D) if(x<y) {x++;y++;}
17、有如下程序
void main()
{ int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++
case 2: a++;b++
}
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
18、阅读以下程序:
void main()
{ int x;
scanf("%d",&x);
if(x--<5) printf("%d",x);
else printf("%d",x++);
}
程序运行后,如果从键 盘上输人5,则输出结果是
A)3 B) 4 C) 5 D) 6
19、请阅读以下程序:
void main( )
{ int a=5,b=0,c=0;
if(a=b+c) printf("***\n");
else printf("$$$\n");
}
以上程序( )
A) 有语法错误不能通过编译 B) 可以通过编译但不能通过连接`
C) 输出 *** D) 输出$$$
20、执行以下程序段时 ( )
x=-1; do {x=x*x; } while(! x);
A) 循环体将执行一次 B) 循环体将执行两次
C) 循环体将执行无限次 D) 系统将提示有语法错误
21、若x是int型变量,且有下面的程序片段:
for(x=3; x<6; x++) printf((x%2)?("**%d"):("##%d\n"),x);
上面程序片段的输出结果是
A) **3 B) ##3 C) ##3 D) **3##4
##4 **4 *4##5 **5
**5 ##5
22、以下叙述中不正确的是( )。
A. 一个好的程序应该有详尽的注释
B.C程序中的#include和#define均不是C语句
C. 在C程序中,赋值运算符的优先级最低
D. 在C程序中,j++;是一条赋值语句二、 填空题
1、其后标有/* */的语句的执行次数是【 】
int y,i;
for(i=0;i<20;i++)
{
if(i%2==0) continue;
y+=i; /* */
}
2、下面程序的功能是从键盘输入的10个数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印"not exist"。 请填空。
main( )
{ int n,a;
for(n=1; n<=10; n++)
{ scanf("%d",&a);
if(a%7==0) { printf("%d",a); 【 】;}
}
if (n==【 】) printf("not exist\n");
}
3、设i、j、k均为int型变量,则执行下面语句后k的值为【 】:
for(i=0, j=10, k=0; i<j; i++, j--)
k+=i+j;
4、. 以下程序是计算某年某月有几天。判断闰年的条件是:能被4整除但不被100整除或能被400整除的年份为闰年。
void main( )
{ int yy,mm,len;
printf(“输入年份和月份:”);scanf(“%d%d”,&yy,&&mm);
switch(mm)
{ case 1: case 3: case 5: case 7: case 8: case 10: case 12: len=31 ; break;
case 4: case 6: case 9: case 11: len=30; break;
case 2:
if(【 】) len=29;
else len=28 ;
break;
default: printf(“输入得月份无效!\n”);
}
printf(“%d年%d月有%d天\n”, 【 】);
}
5、下面程序读入20个整数,然后统计非负数的平均值。
main ( )
{ int i, a[20], s, count;
s=count=0;
for ( i=0; i<20; i++ )
scanf (" %d" , 【 】 );
for ( i=0; i<20; i++ )
if ( a[i]>=0 ) {【 】; count++; }
printf ("ave=%f\n" , 【 】);
}
6、下面程序为求最小正整数n,使调和级数前n项之和大于预先给定的实数a。
> a,
main( ){
int n=0;
float s=0.0;
while (【 】) { 【 】; n++; }
print("“所求的数值为%f\n" ,s);
}
7、设数组a的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。
main( )
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
int k,s i;float ave;
for(k=s=i=0; i<10;i++)
{ if ( a[i]%2 !=0) 【 】;
s+=【 】;
k++;
}
if(k!=0) { ave=s/k; printf("%d,%d\n", k,ave);}
}
8.下面的程序输出是【 】。
void main( ) {
int a=7, b=5;
printf("%d\n",b=a/b);
}
9. 若a=2,b=4,则表达式 !(x=a)||(y=b) && 0 的值是【 】.
10. 下面程序的运行结果是 【 】。
main()
{ int a[5][5],i,j,n=1;
for(i=0;i<5;i++)
for(j=0;j<5;j++) a[i][j]=n++;
printf("The result is \n");
for(i=0;i<3;i++)
{ for(j=0;j<=i;j++) printf("%3d",a[i][j]);
printf("\n");
}
}
11. .以下程序实现输出x,y, z三个数中的最大者。
void main( )
{ int x,y,z,u;
scanf(“%d%d%d”,&x,&y,&z);
if【 】u=z; else u=y;
if【 】 u=x;
printf(“最大为:%d\n”,u);
}
12、以下程序的运行结果是【 】
void main()
{ int a1,a2,b1,b2; int i=5,j=7,k=0;
a1 = !k; a2=i!=j;
printf("a1=%d\ta2=%d\n",a1,a2);
b1=k &&j; b2= k||j;
printf("b1=%d\tb2=%d\n",b1,b2);
}
13、下面程序的运行结果是【 】。
void main()
{ int k,t,sum=0;
for(t=k=1; k<=10;)
{ sum+=t; ++k;
if(k%3==0) t=-k;
else t=k;
}
printf("sum=%d",sum);
}
14、下面程序的功能是输入5个整数, 找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。
void main()
{ int a[5], max,min,i,j.k;
for(i=0;i<5;i++) scanf("%d",&a[i]);
min=a[0];max=a[0];
for(i=1;i<5;i++)
if((a[i]<min) {min=a[i];【 】;}
for(i=1;i<5;i++)
if((a[i]>max) {max=a[i];【 】;}
【 】;
printf("\n The position of min is : %3d\n",k);
printf("The position of max is: %3d\n",j);
for(i=0;i<5;i++) printf("%5d",a[i]);
}
15、变量x不小于1且小于10的表达式是【 】。
16、若有int ⅰ=10, j=0;
则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; 后变量ⅰ的值为【 】。
17、下面程序段的运行结果是【 】。
x=2;
do { printf("*"); x--;} while(!x==0);
18.输入以下数据:
How are you?<回车>
则下面程序段的执行结果是: 【 】。
#include <stdio.h>
main( )
{ while (putchar(getchar( )) !='?');
}
19、main( )
{ int number=3;
while(――number>0) printf(“*%d,”, number);
printf(“**%d”, number);
}
这个程序的输出结果是:【 】。
20.华氏和摄氏的转换公式为C=5/9*(F-32),其中C表示摄氏的温度,F表示华氏的温度。以下程序输出从华氏0度到华氏300度,每隔20度输出一个值,请填空。
main( )
{ int upper, step;
float fahr=0, celsius;
upper=300; step=20;
while (fahr <upper)
{ 【 】 ;
printf ("%4.Of, %6.1f\n", fahr, celsius);
【 】 ;
} }
21、求下列数列前20项之和
main( )
{ int i,f1=1,f2=2; float s=0.0;
for(【 】)
{ s=s+(float)f2/f1;
f2=f1+f2;
f1= 【 】。 ;
}
printf("%f\n",s);
}
22、程序读入50个整数,统计非负数个数,并计算非负数之和。
#include " stdio.h"
main ( )
{ int i, a[50], s, count;
s=count=o;
for ( i=0; i<20; i++ )
scanf (" %d" , 【 】);
for ( i=0; i<20; i++ )
{ if ( a[i]<0 ) 【 】;
s += a[i];
count++;
}
printf ("s=%d\t count=%d\n" , s, count);
}
三、编程题(类似课本习题,如)
1. 按下面的近似公式计算
s = 1/1 -1/2 +1/3 - … +(-1)n-11/n +…
使误差小于给定的e .
(其他略)
参考答案:
一、 单项选择题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
D C D C B C C D A C D C D D D C A B D C D C二、 填空题
1 2 3 4 5 6
10
break
11 50 (yy%4==0&&yy%100!=0||yy%400==0)
yy, mm, len &a[i]
s=s+a[i]
(float)s/conut s<=a
s=s+1.0/n7 8 9 10 11 12
continue
a[i]
1 0 The result is:
1
6 7
11 12 13 z>y
x>u
a1=1 a2=1
b1=0 b2=113 14 15 16 17 18
sum=19
j=i
k=i
a[j]=max;a[k]=min; (x>=1) && ( x<10) 9 ** How are you?19 20 21 22
*2, *1 , **0 Celsius=5/9*(fahr-32)
fahr+=step i=1;i<=20;i++ f2-f1 &a[i]
continue 三、 编程题 (答案不唯一!)#define E 1E5
void main( )
{
int n=1,k=-1;
float s=0;
do{
k=-k;
s=s+(float)k/n;
n++;
while(n<=E);
printf(“s=%f\n”, s2);
}