资源描述
.
C语言第1、2章练习题
一、选择题
1. 下列运算符中,( C)结合性从左到右。
A. 三目 B. 赋值 C. 比较 D. 单目
2. 下列for循环的次数为(B ):for ( i=0,x=0;! x && i<=5;i++)
A. 5 B. 6 C. 1 D. 无限
3. 下述关于循环体的描述中,(C )是错误的。
A. 循环体中可以出现break语句和continue语句;B.循环体中还可以出现循环语句;
C. 循环体中不能出现goto语句; D.循环体中可以出现开关语句。
4.下列变量名中,(A)是合法的。
A.CHINA; B.student-num; C.double D.A+b
5.有以下程序段: int n=0,p; do {scanf(”%d”, &p);n++;} while(p!=12345&&n<3);
此处do-while循环的结束条件是(D)。
A.p的值不等于12345并且n的值小于3 B.p的值等于12345并且n的值大于等于3
C.p的值不等于12345或者n的值小于3 D.p的值等于12345或者n的值大于等于3
6.若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为(B)
A.1.4 B.1 C.2.0 D.2
7. 以下程序中,while循环的循环次数是(D)
main( )
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++; } .....
A.1 B.10 C.6 D.死循环,不能确定次数
8.下列while循环的执行次数是(A)while(i=0) i- -;
A.0 B.1 C.5 D.死循环
9.以下说法中正确的是:C
A.C语言程序总是从第一个的函数开始执行;
B.在C语言程序中,要调用的函数必须在main()函数中定义;
C.C语言程序总是从main()函数开始执行;
D.C语言程序中的main()函数必须放在程序的开始部分。
10.以下程序的输出结果是:D
main()
{ int x=10,y=10;
printf("%d %d\n",x - -, - - y);
}
A. 10 10 B.9 9 C. 9 10 D. 10 9
11.int a=1,b=3;,则下列表达式的结果为“真”的是:D
A. a>=2||!b&&b<4 B. b-a&&!a||a-b&&a/b
C. a-!a%b&&!b-!b%b D.a+b&&a-b&&b-3&&a||b
12.请选出合法的C语言赋值语句C
A.a=b=58 B.i++; C.a=58,b=58 D.k=int(a+b);
13.若有以下定义和语句:B
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是:
A. 2,M B. 3,E C. 2,E D. 输出项与对应的格式控制不一致,输出结果不确定。
14.运行以下程序段后变量a的值是:D
int a=0, b=3;
switch(a+b&&a++&&b-a&&a)
{
case 0:a++;
case 1:b++;
case 2:a+=b; break;
case 3:a-=b;
default:a;
}
(A)-3 (B)1 (C)5 (D)6
15.在以下一组运算符中,优先级最高的运算符是:C
(A)<= (B)= (C)% (D)&&
16.设 int a=12,则执行完语句 a+=a-=a*a后,a的值是D
(A)552 (B)264 (C)144 (D)-264
17.C语言中基本数据类型包括 B
(A)整型、实型、逻辑型 (B)整型、实型、字符型
(C)整型、字符型、逻辑型 (D)整型、实型、逻辑型、字符型
18.执行下面程序片段的结果是B
int x=23;
do{
printf("%2d",x - -);
}while(!x);
(A)打印出321 (B)打印出23 (C)不打印任何内容 (D) 陷入死循环
19.若k是int型变量,且有下面的程序片段:D
k = -3;
if(k<=0) printf("####")
else printf("&&&&");
上面程序片段的输出结果是
(A)#### (B)&&&& (C)####&&&& (D)有语法错误,无输出结果。
20.为表示关系x≥y≥z,应使用C语言表达式 A
(A)(x>=y)&&(y>=z) (B)(x>=y)AND(y>=z) (C)(x>=y>=z) (D)(x>=y)&(y>=z)
21. 若c为char类型变量,能正确判断出c为小写字母的表达式是D
A) 'a'<=c<='z' B) (c>='a') || (c<='z') C) c>='a' || c<='z' D) c<='z' && c>='a'
22.下面程序执行后输出sum的值是D
A)15 B) 14 C) 0 D) 不确定
main()
{ int i,sum;
for(i=0;i<6;i++) sum+=i;
printf("%d\n",sum);
}
23.以下叙述正确的是:D
A) 可以把include和if定义为用户标识符
B) 可以把include定义为用户标识符,但不能把if定义为用户标识符
C) 可以把if定义为用户标识符,但不能把include定义为用户标识符
D) include和if都不能定义为用户标识符
二、 判断下列描述的正确性,对者划√,错者划╳。
1. switch语句中必须有break语句,否则无法退出switch语句。0
2. C中标识符内的大小写字母是没有区别的。0
3. 隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。0
4. 运算符的优先级和结合性可以确定表达式的计算顺序。1
5. while循环语句的循环体至少执行一次。0
6. 开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。0
7. C语言在编译时不检查语法;0
8. 在C语言中,”A”是错误的char类型的常数;1
9. 字符(char)型数据在微机内存中的存储形式是ASCII码;1
10. C语言的源程序不必通过编译就可以直接运行;0
11. “Int”是合法的C语言关键字;0
2.
void main()
{int i =1, sum=0;
while (i<=5)
{sum+=i; i++;}
printf(“sum=%d”, sum);
}15
三、写出下列程序的运行结果。
1.
void main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf(“%d”, d);
} 1
4.
void main()
{int a=15,b=21,m=0;
switch(a%3)
{case 0:m++;break;
case 1:m++;
switch(b%2)
{default:m++;
case 0:m++;break;
}
};
printf(“%d”,m);} 1
3.
void main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf(“%d”, a);31
}
6. void main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
先计算a>b结果为真,得到1然后计算1>c结果为假得到0
0
5.从键盘输入1325。
void main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}5231
7. void main()
{int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}5
四、完成程序。
2. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。
#include <stdio.h>
void main()
{ int i,j;
for(i=0; _i<10___; i++) {
j=i*10+6;
if(__j%3!=0__) continue;
printf("%d",j);
}
}
1. 程序的功能是:分别计算1到10之间奇数之和及偶数之和
void 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___);
}
i
4.求某数的泰勒(台劳)级数的前n+1项之和。x的泰勒级数:
void main ()
{int i,n; float x; float t=1.0,sum=1.0;
scanf(“%f, %d”, &x, &n);
for(i=1;i<n;i++){
t*= ( x/i )
sum+=t;
}
printf(“%f”, sum);
}
3.以下程序的功能是判断输入的正整数是否为素数。
#include <math.h>
void main()
{ int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for (i=2;i<=k;i++)
if(___m%i==0__) break;
if(_i>=k+1) printf("%d 是素数\n",m)
else printf("%d 不是素数\n",m);
}
5. 得到一个输入数字的反转数,然后一次输出这个整数。
void main()
{int n, right_digit, newnum = 0;
printf("Enter the number: ");
scanf("%d",&n);
printf("reverse order is ");
do { right_digit = n % 10;
//生成所输入数字的反转数
newnum=newnum*10+right_digit;
n = ①
} while (n != 0);
printf("%d\n",newnum);
}
6. 输入学号,并输出其中能被7或9整除的学号,当学号输入0值时结束循环。
void main()
{ int num;
do{ scanf (“%d”, &num);
if ( num/7==0||num/9==0 )
printf(“%d ”, num);
} while ( num!=0 );
}
五、程序设计题
2.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include <stdio.h>
void main()
{char ch; int letter=0,space=0, digit=0,other=0;
while( ( ch=getchar( ) ) !='\n') {
if((ch>='a' && ch<='z') ||(ch>='A' && ch<='Z'))
letter++;
else if (ch>='0' && ch<='9')
digit++;
else if(ch==' ')
space++;
else
other++;
}
printf("%d,%d,%d,%d",letter,digit,space,other); }
1.求1-5的阶乘之和。
n!=(n-1)! * n sum:和。初值为0。
factorial:积。初值为1。
#include <stdio.h>
void main()
{int i, factorial=1, sum=0;
for( i=1;i<=5;i++) {
factorial*=i;
sum+=factorial;
}
printf(“%d”,sum);
}
4. 求前20项之和: …… (选做)
找规律:
#include <stdio.h>
void main()
{ float sum=0; int a=1,b=2, t;
for(int i=1; i<=20; i++) {
sum+=(float)b/a; //sum+=bi/ai
t=a+b; //t=ai+bi
a=b; //ai+1=bi
b=t; //bi+1=ai+bi
}
printf(“%f”,sum);
}
3.求Sn=a+aa+aaa+…+aa…a 的值。其中a是一个数字。n由键盘输入。
Sn=term1+term2+term3+…+termn
term1 =a term2 = term1*10+a
termi+1 = termi*10+a
void main()
{int n,a,,i; float term,sum;
scanf("%d,%d", &a, &n);
term=a; sum=term;
for(i=1;i<n;i++){
//termi+1 = termi*10+a
term=term*10+a;
sum+=term;
}
printf("sum=%f",sum); }
5. 打印图案。(选做)
void main()
{int i,j,k;
for(i=0;i<=3;i++){
for(j=0;j<=2-i;j++) printf(" ");
for(k=0;k<=2*i;k++) printf("*");
printf("\n");
}
for(i=0;i<=2;i++) {
for(j=0;j<=i;j++) printf(" ");
for(k=0;k<=4-2*i;k++) printf("*");
printf("\n"); }
}
6. 输入两个正整数m和n, 用辗转相除法求最大公约数和最小公倍数。(选做)
void main()
{int a,b,m,n,temp;
printf("Please input the two number:\n");
scanf("%d,%d",&m,&n);
if(m<n)//将两个数中较大的放在m中
{temp=m; m=n; n=temp;}
a=m;b=n;
while(b!=0) /*a中放的是最大公约数*/
{temp=a%b; a=b; b=temp; }
printf("最大公约数是:%d\n",a);
printf("最小公倍数是:%d\n",m*n/a);
}
7 .键盘输入若干个数,直至输入0为止,输出偶数及其个数。
void main()
{int x; int count=0;
scanf(“%d”,&x);
while(x!=0){
if(x%2==0) {
printf(“%d\n”,x);
count++;}
scanf(“%d”,&x);
}
printf("%d\n",count);
}
7. 设计具有以下功能的程序:从键盘上输入若干个非负整数,统计并输出最大数和最小数,当输入负数时结束输入。(自己完成,并上机验证)
#include<stdio.h>
void main()
{
int i,j,max=0,min=0;
do {
scanf("%d",&i);
if(max<i)
if(min>i)
min=i;
}while(i>=0);
printf("%d %d\n",max,min);
}
精选文档
展开阅读全文