⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(二).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
C语言的输入输出
一、选择题
1、putchar函数可以向终端输出一个(   )
   (A) 整型变量表达式值
   (B) 实型变量值
   (C) 字符串
   (D) 字符或字符变量值
2、以下程序的输出结果是(   )
	void main()
	{
		printf("\n*s1=%15s*","chinabeijing");
		printf("\n*s2=%-5s*","chi");
	}
   (A) *s1=chinabeijing   *
       *s2=**chi*
   (B) *s1=chinabeijing   *
       *s2=chi  *
   (C) *s1=*  chinabeijing*
       *s2=  chi*
   (D) *s1=   chinabeijing*
       *s2=chi  *
3、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式(   );如果字符串长度小于5,则输出按方式(   )
   (A) 从左起输出该字串,右补空格
   (B) 按原字符长从左向右全部输出
   (C) 右对齐输出改字符串,左补空格
   (D) 输出错误信息
4、已有定义int a=-2; 和输出语句:printf("%81x",a); 以下正确的叙述是(   )
   (A) 整型变量的输出格式符只有%d一种
   (B) %x是格式符的一种,它可以适用于任何一种类型的数据
   (C) %x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
   (D) %8lx不是错误的格式符,其中数字8规定了输出字段的宽度
5、以下C程序正确的运行结果是(   )
	void main()
	{
		long y=-43456;
		printf("y=%-8ld\n",y);
		printf("y=%-08ld\n",y);
		printf("y=%08ld\n",y);
		printf("y=%+8ld\n",y);
	}
   (A) y=  -43456
       y=-  43456
       y=-0043456
       y=-43456
   (B) y=-43456
       y=-43456
       y=-0043456
       y=+ -43456
   (C) y=-43456
       y=-43456
       y=-0043456
       y=  -43456
   (D) y=  -43456
       y=-0043456
       y=00043456
       y=+43456
6、以下C程序正确的运行结果是(   )
	void main()
	{
		int y=2456;
		printf("y=%3o\n",y);
		printf("y=%8o\n",y);
		printf("y=%#8o\n",y);
	}
   (A) y=   2456
       y=        2456
       y=########2456
   (B) y=   4630
       y=        4630
       y=########4630
   (C) y=2456
       y=    2456
       y=   02456
   (D) y=4630
       y=    4630
       y=   04630
7、以下C程序正确的运行结果是(   )
	void main()
	{
		long y=23456;
		printf("y=%3x\n",y);
		printf("y=%8x\n",y);
		printf("y=%#8x\n",y);
	}
   (A) y=5ba0
       y=    5ba0
       y=  0x5ba0
   (B) y=   5ba0
       y=       5ba0
       y=  0x5ba0
   (C) y=5ba0
       y=5ba0
       y=0x5ba0
   (D) y=5ba0
       y=    5ba0
       y=####5ba0
8、若x,y均定义为int型,z定义为double型,以下不合法的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);
9、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是(   )
	int a1,a2; char c1,c2;
	scanf(%d%c%d%c",&a1,&c1,&a2,&c2);
   (A) 10A 20B
   (B) 10 A 20 B
   (C) 10 A 20 B
   (D) 10A20 B
10、已有定义int x; float y; 且执行scanf("%3d%f",&x,&y); 语句时,从第一列开始输入数据12345 678〈回车〉,则x的值为(   ),y的值为(   )
[1](A) 12345
   (B) 123
   (C) 45
   (D) 345
[2](A) 无定值
   (B) 45.000000
   (C) 678.000000
   (D) 123.000000
11、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,	正确的数据输入方式是(   )
	int a1,a2; char c1,c2;
	scanf("%d%d",&a1,&a2);
	scanf("%c%c",&c1,&c2);
   (A) 1020AB<CR>
   (B) 10 20<CR>
       AB<CR>
   (C) 10  20  AB<CR>
   (D) 10 20AB<CR>
12、已有程序段和输入数据的形式,程序中输入语句的正确形式应当为(   )
	void main()
	{
		int a; float f;
		printf("\nInput number: ");
		输入语句
		printf("\nf=%f,a=%d\n",f,a);
	}

	Input number: 4.5  2<CR>
   (A) scanf("%d,%f",&a,&f);
   (B) scanf("%f,%d",&f,&a);
   (C) scanf("%d%f",&a,&f);
   (D) scanf("%f%d",&f,&a);
13、根据定义和数据的输入方式,输入语句的正确形式为(   )
    已有定义:float f1,f2;
    数据的输入方式:4.52
                    3.5
   (A) scanf("%f,%f",&f1,&f2);
   (B) scanf("%f%f",&f1,&f2);
   (C) scanf("%3.2f% 2.1f",&f1,&f2);
   (D) scanf("%3.2f%2.1f",&f1,&f2);
14、阅读以下程序,当输入数据的形式为: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+z=35
   (D) 不确定值
15、根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是(   )
	void main()
	{
		int x; float y;
		printf("enter x,y: ")
		输入语句
		输出语句
	}

	输入形式	enter x,y: 2,3,4
	输出形式	x+y=5.40

   (A) scanf("%d,%f",&x,&y);
       printf("\nx+y=%4.2f",x+y);
   (B) scanf("%d%f",&x,&y);
       printf("\nx+y=%4.2f",x+y);
   (C) scanf("%d%f",&x,&y);
       printf("\nx+y=%6.1f",x+y);
   (D) scanf("%d%3.1f",&x,&y);
       printf("\nx+y=%4.2f",x+y);
16、以下说法正确的是(   )
   (A) 输入项可以为一个实型常量,如scanf("%f",3.5);
   (B) 只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
   (C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);
   (D) 当输入数据时,必须指明变量的地址,如scanf("%f",&f);
17、根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为(   )
	void main()
	{
		char ch1,ch2,ch3;
		输入语句
		printf(%c%c%c",ch1,ch2,ch3);
	}
	输入形式:ABC
	输出形式:AB
   (A) scanf("%c%c%c",&ch1,&ch2,&ch3);
   (B) scanf("%c,%c,%c",&ch1,&ch2,&ch3);
   (C) scanf("%c %c %c",&ch1,&ch2,&ch3);
   (D) scanf("%c%c",&ch1,&ch2,&ch3);
18、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c); 为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是(   )
   (A) 132〈回车〉
   (B) 1,3,2〈回车〉
   (c) a=1 b=3 c=2〈回车〉
   (D) a=1,b=3,c=2〈回车〉
19、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是(   )
   (A) int a=b=c=5;
   (B) int a,b,c=5;
   (C) a=5,b=5,c=5;
   (D) a=b=c=5;
20、已知ch是字符型变量,下面正确的赋值语句是(   )
   (A) ch='a+b';
   (B) ch='\0';
   (C) ch='7'+'9';
   (D) ch=5+9;
21、已知ch是字符型变量,下面正确的赋值语句是(   )
   (A) ch='123';
   (B) ch='\xff';
   (C) ch='\08';
   (D) ch="\";
22、若有以下定义,则正确的赋值语句是(   )
	int a,b; float x;
   (A) a=1,b=2,
   (B) b++;
   (C) a=b=5
   (D) b=int(x);
23、设x,y均为float型变量,则以下不合法的赋值语句是(   )
   (A) ++x
   (B) y=(x%2)/10;
   (C) x*=y+8;
   (D) x=y=0;
24、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5; 后,x、y和z的值是(   )
   (A) x=10
       y=15
       z=10
   (B) x=10
       y=10
       z=10
   (C) x=10
       y=10
       z=15
   (D) x=10
       y=5
       z=10
25、设有说明:double y=0.5,z=1.5; int x=10; 则能够正确使用C语言库函数的赋值语句是(   )
   (A) z=exp(y)+fabs(x);
   (B) y=log10(y)+pow(y);
   (C) z=sqrt(y-z);
   (D) x=(int)(atan2((double)x,y)+exp(y-0.2));
二、填空题
26、以下程序的输出结果为________
	void main()
	{
		short i;
		i=-4;
		printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i)
	}
27、以下程序的输出结果为________
	void main()
	{
		printf("*%f,%4.3f*\n",3.14,3.1415);
	}
28、以下程序的输出结果为________
	void main()
	{
		char c='x';
		printf("c:dec=%d,oct=%o,hex=%x,ASCII+%c\n",c,c,c,c);
	}
29、已有定义int d=-2; 执行以下语句后的输出结果是________
	printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);
	printf("*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n",d,d,d);
30、已有定义int d=-2; 执行以下语句后的输出结果是________
	printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);
	printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n",d,d,d);
31、已有定义float d1=3.5,d2=-3.5; 执行以下语句后的输出结果是________
	printf("*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\n",d1,d1,d1);
	printf("*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\n",d2,d2,d2);
32、以下程序的输出结果是________
	void main()
	{
		int x=1,y=2;
		printf("x=%d y=%d *sum*=%d\n",x,y,x+y);
		printf("10 Squared is: %d\n",10*10);
	}
33、以下程序的输出结果是________
	#include <stdio.h>
	void main()
	{
		int x=10; float pi=3.1416;
		printf("(1) %d\n",x);
		printf("(2) %6d\n",x);
		printf("(3) %f\n",56.1);
		printf("(4) %14f\n",pi);
		printf("(5) %e\n",568.1);
		printf("(6) %14e\n",pi);
		printf("(7) %g\n",pi);
		printf("(8) %12g\n",pi);
	}
34、以下程序的输出结果是________
	#include <stdio.h>
	void main()
	{
		float a=123.456; double b=8765.4567;
		printf("(1) %f\n",a);
		printf("(2) %14.3f\n",a);
		printf("(3) %6.4f\n",a);
		printf("(4) %lf\n",b);
		printf("(5) %14.3lf\n",b);
		printf("(6) %8.4lf\n",b);
		printf("(7) %.4f\n",b);
	}
35、以下printf语句中*号的作用是________,输出结果是________
	#include <stdio.h>
	void main()
	{
		int i=1;
		printf("##%*d\n",i,i);
		i++;
		printf("##%*d\n",i,i);
		i++;
		printf("##%*d\n",i,i);
	}
36、以下printf语句中的“-”的作用是________,该程序的输出结果是________
	#include <stdio.h>
	void main()
	{
		int x=12; double a=3.1415926;
		printf("%6d##\n",x);
		printf("%-6d##\n",x);
		printf("%14.10lf##\n",a);
		printf("%-14.10lf##\n",a);
	}
37、以下程序的输出结果是________
	#include <stdio.h>
	void main()
	{
		int a=325; double x=3.1415926;
		printf("a=%+06d  x=%+e\n",a,x);
	}
38、以下程序的输出结果是________
	#include <stdio.h>
	void main()
	{
		int a=252;
		printf("a=%o  a=%#o",a,a);
		printf("a=%x  a=%#x\n",a,a);
	}
39、以下程序段的输出结果是________
	int x=7281;
	printf("(1) x=%3d,x=%6d,x=%6o,x=%6x,x=%6u\n",x,x,x,x,x);
	printf("(2) x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\n",x,x,x,x,x);
	printf("(3) x=%+3d,x=%+6d,x=%+08d\n",x,x,x);
	printf("(4) x=%o,x=%#o\n",x,x);
	printf("(5) x=%x,x=%#x\n",x,x);
40、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换,请填空。
	a+=________;
	b=a-________;
	a-=________;
41、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即:把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前a=10,b=20,c=30; 交换后a=20,b=30,c=10。请填空。
	________;
	a=b; b=c;
	________;
42、设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋值语句后,y值为________,z值为________,m值为________。
	y=(x=32767,x-1);
	z=m=0xFFFF;
43、若x为int型变量,则执行以下语句后x的值是________
	x=7;
	x+=x-=x+x;
44、若a和b均为int型变量,则以下语句的功能是________
	a+=b;b=a-b;a-=b;
45、在scanf函数调用语句中,可以在格式字符和%号之间加一星号,它的作用是________;当输入以下数据:10  20  30  40〈回车〉,下面语句的执行结果是________。
	int a1,a2,a3;
	scanf("%d%*d%d%d",&a1,&a2,&a3);
46、有一输入函数scanf("%d",k); 则不能使float类型变量k得到正确数值的原因是________和________。
47、已有定义int a; float b,x; char c1,c2; 为使a=3,b=6.5,x=12.6,c1='a',c2='A',正确的scanf函数调用语句是________,输入数据的方式为________。
48、若有以下定义和语句,为使变量c1得到字符'A',变量c2得到字符'B',正确的格式输入形式是________
	char c1,c2;
	scanf("%4c%4c",&c1,&c2);
49、执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82,c1='A',c2''a',正确的数据输入形式是________
	void main()
	{
		int a,b; float x,y; char c1,c2;
		scanf("a=%d b=%d",&a,&b);
		scanf("x=%f y=%f",&x,&y);
		scanf("c1=%c c2=%c",&c1,&c2);
		printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c",a,b,x,y,c1,c2);
	}
50、已有定义int i,j; float x; 为将-10赋给i,12赋给j,410.34赋给x,则对应以下scanf函数调用语句的数据输入形式是________
	scanf("%o%x%e",&i,&j,&x);


循环
一、选择题
1、设有程序段
	int k=10;
	while(k=0) k=k-1;
   则下面叙述中正确的是(   )
   (A) while循环执行10次
   (B) 循环是无限循环
   (C) 循环体语句一次也不执行
   (D) 循环体语句执行一次
2、设有以下程序段
	int x=0,s=0;
	while(!x!=0) s+=++x;
	printf("%d",s);
   则(   )
   (A) 运行程序段后输出0
   (B) 运行程序段后输出1
   (C) 程序段中的控制表达式是非法的
   (D) 程序段执行无限次
3、语句while(!E); 中的表达式!E等价于(   )
   (A) E==0
   (B) E!=1
   (C) E!=0
   (D) E==1
4、下面程序段的运行结果是(  )
	a=1; b=2; c=2;
	while(a<b<c) {t=a; a=b; b=t; c--;}
	printf("%d,%d,%d",a,b,c);
   (A) 1,2,0
   (B) 2,1,0
   (C) 1,2,1
   (D) 2,1,1
5、下面程序段的运行结果是(   )
	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
6、下面程序段的运行结果是(   )
	int n=0;
	while(n++<=2); rpintf("%d",n);
   (A) 2
   (B) 3
   (C) 4
   (D) 有语法错
7、设有程序段
	t=0;
	while(printf("*"))
	{
		t++;
		if(t<3) break;
	}
   下面描述正确的是(   )
   (A) 其中循环控制表达式与0等价
   (B) 其中循环控制表达式与'0'等价
   (C) 其中循环控制表达式是不合法的
   (D) 以上说法都不对
8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,①处应选择(   )
	#include <stdio.h>
	void main()
	{
		int a,b,t;
		scanf("%d%d",&a,&b);
		while(  ①  )
		{
			if(a>b) {t=a; a=b; b=t}
			printf("%d,%d\n",a,b);
			scnaf("%d%d",&a,&b);
		}
	}
   (A) !a=b
   (B) a!=b
   (C) a==b
   (D) a=b
9、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,①处应选择(   )②处应选择(   )
	#include <stdio.h>
	void main()
	{
		int m=0,n=0;
		char c;
		while((  ①  )!='\n')
		{
			if(c>='A'&&c<='Z') m++;
			if(c>='a'&&c<='z') n++;
		}
		printf("%d\n",m<n?  ②  )
	}
① (A) c=getchar()
   (B) getchar()
   (C) c=getchar()
   (D) scanf("%c",c)
② (A) n:m
   (B) m:n
   (C) m:m
   (D) n:n
10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择①(   )②(   )
	#include <stdio.h>
	void main()
	{
		char c;
		while((c=getchar())!='\n')
		{
			if(c>='a'&&c<='z')
			{
				①;
				if(c>'Z'&&c<='Z'+2)
					②;
			}
			printf("%c",c);
		}
	}
① (A) c+=2
   (B) c-=32
   (C) c=c+32+2
   (D) c-=30
② (A) c='B'
   (B) c='A'
   (C) c-=26
   (D) c=c+26
11、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择①(   )
	#include <stdio.h>
	void main()
	{
		int a,max=0;
		scanf("%d",&a);
		while(  ①  )
		{
			if(max<a) max=a;
			scanf("%d",&a);
		}
		printf("%d",max);
	}
① (A) a==0
   (B) a
   (C) !a==1
   (D) !a
12、下面程序的运行结果是(   )
	#include <stdio.h>
	void main()
	{
		int num=0;
		while(num<=2)
		{
			num++;
			printf("%d\n",num);
		}
	}
   (A) 1
   (B) 1
       2
   (C) 1
       2
       3
   (D) 1
       2
       3
       4
13、若运行以下程序时,从键盘输入2473〈CR〉(〈CR〉表示回车),则下面程序的运行结果是(   )
	#include<stdio.h>
	void 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");
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -