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

📄 练习(一).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 4 页
字号:
		else if(wei<=30) ________;
		if(r==-1) printf("error\n");
		else
		{
			________;
			printf("%f,mon);
		}
	}
84、某服装店经营套服,也单件出售。若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款m。请在________内填入正确内容。
	void main()
	{
		int c,t,m;
		printf("input the number of coat and trousers your want buy: \n");
		scanf("%d %d",&c,&t);
		if(________)
			if(c>=50) m=c*80;
			else m=c*90;
		else
			if(________)
				if(t>=50) m=t*80+(c-t)*60;
				else m=t*90+(c-t)*60;
			else
				if(________) m=c*80+(t-c)*45;
				else m=c*90+(t-c)*45;
		printf("%d",m);
	}
85、以下程序的功能是判断输入的年份是否是闰年。请在________内填入正确内容。
		void main()
		{
			int y,f;
			scanf("%d",&y);
			if(y%400==0) f=1;
			else if(________) f=1;
			else ________;
			if(f) printf("%d is",y);
			else printf("%d is not",y);
			printf(" a leap year\n");
		}
86、以下程序段针对输入的截止日期(年:yend,月:mend,日:dend)和出生日期(yman,mman,dman),计算出实际年龄。请在________内填入正确内容。设有:int yend,mend,ded,yman,mman,dman,age;
	age=yend-yman;
	if(mend________mman) age--;
	else if(mend________mman && dend________dman) age--;
87、有四个数a,b,c,d,要求按从大到小的顺序输出。请在________内填入正确内容。
	void main()
	{
		int a,b,c,d,t;
		scanf("%d %d %d %d",&a,&b,&c,&d);
		if(a<b) {t=a; a=b; b=t;}
		if(________) {t=c; c=d; d=t;}
		if(a<c) {t=a; a=c; c=t;}
		if(________) {t=b; b=c; c=t;}
		if(b<d) {t=b; b=d; d=t;}
		if(c<d) {t=c; c=d; d=t;}
		printf("%d %d %d %d\n",a,b,c,d);
	}
88、以下程序的运行结果是________。
	void main()
	{
		int a=2,b=3,c;
		c=a;
		if(a>b) c=1;
		else if(a==b) c=0;
		else c=-1;
		printf("%d\n",c);
	}
89、若a=1,b=2,则表达式a>b?a:b+1的值是________。
90、若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值是________。
91、设有变量定义:int a=10,c=9;
    则表达式(--a!=c++)?--a:++c的值是________。
92、若有说明语句:int x=1,y=0; 则表达式x>(y+x)?10:12.5>y++?'a':'A'的值是________。
93、若有说明语句:int a=1,b=0; 则表达式++a*--a==b?12%5:'x'的值是________。
94、若有x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是________。
95、若有说明语句:int x=1,y=0; 则表达式x-->(y+x)?5:25>y++?'1':'2'的值是________。
96、以下程序的运行结果是________。
	#include <stdio.h>
	void main()
	{
		int a=-10,b=-3;
		printf("%d,",-a%b);
		printf("%d,",(a-b,a+b));
		printf("%d\n",a-b?a-b:a+b);
	}
97、以下程序的运行结果是________。
	void main()
	{
		int x=1,y=1,z=1;
		y=y+x;
		x=x+y;
		printf("%d,",x<y?y:x);
		printf("%d,",x<y?x++:y++);
		printf("%d,%d",x,y);
	}
98、以下程序的运行结果是________。
	void main()
	{
		int x,y,z;
		x=3;
		y=z=4;
		printf("%d,",(x>=y>=x)?1:0);
		printf("%d\n",z>=y&&y>=x);
	}
99、若运行时输入:-2〈回车〉,则以下程序的输出结果是________。
	void main()
	{
		int a,b;
		scanf("%d",&a);
		b=(a>=0)?a:-a;
		printf("b=%d",b);
	}
100、若运行时输入:100〈回车〉时,下面程序的运行结果是________。
	void main()
	{
		int a;
		scanf("%d",&a);
		printf("%s",(a%2!=0)?"no":"yes");
	}
101、如果运行时输入字符为'Q',则以下程序的运行结果是________。
	void 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);
	}
102、当运行时输入:1992〈回车〉,则以下程序的运行结果是________。
	void main()
	{
		int y,t;
		scanf("%d",&y);
		t=((y%4==0&&y%100!=0)||y%400==0)?1:0;
		if(t) printf("%d is",y);
		else printf("%d is not",y);
		printf(" a leap year");
	}
103、以下程序是计算x,y,z三个数中值最小的。请在________内填入正确内容。
	void main()
	{
		int x=4,y=5,z=8;
		int u,v;
		u=x<y?________;
		v=u<z?________;
		printf("%d",v);
	}
104、设有变量定义:int a=5,c=4; 则(--a==++c)?--a:c++的值是________,此时c的存储单元的值为________。
105、执行以下的C语言程序段后,a=________,b=________,c=________。
	int x=10,y=9;
	int a,b,c;
	a=(x--==y++)?x--:y++;
	b=x++;
	c=y;
106、设有int x=1,y=0; 则以下表达式的值为________。
	x-->(y+x)?10:12.5>y++?'A':'Z'
107、设有int x=0,y=1;,则以下表达式的值为________。
	x++*x--!='y'?8-4:y
108、若运行时输入:35/〈回车〉,则以下程序的运行结果是________。
	void main()
	{
		float x,y;
		char o;
		double r;
		scanf("%f %f %c",&x,&y,&o);
		switch(o)
		{
		case '+':r=x+y;break;
		case '-':r=x-y;break;
		case '*':r=x*y;break;
		case '/':r=x/y;break;
		}
		printf("%f",r);
	}
109、根据以下嵌套的if语句所给条件,填写switch语句,使它完成相同的功能。
	(假设mark的取值在1-100之间。)
	if语句:
		if(mark<60) k=1;
		else if(mark<70) k=2;
		else if(mark<80) k=3;
		else if(mark<90) k=4;
		else if(mark<=100) k=5;
	switch语句:
		switch(________)
		{
		________k=1; break;
		case 6: k=2; break;
		case 7: k=3; break;
		case 8: k=4; break;
		________k=5;
		}
110、设有程序片段:
	switch(grade)
	{
	case 'A': printf("85-100\n");
	case 'B': printf("70-84\n");
	case 'C': printf("60-69\n");
	case 'D': printf("<60\n");
	default: printf("error!\n");
	}
     若grade的值为'C',则输出结果是________。
111、以下程序段的运行结果是________。
	int x=1,y=0;
	switch(x)
	{
	case 1:
		switch(y)
		{
		case 0: printf("**1**\n"); break;
		case 1: printf("**2**\n"); break;
		}
	case 2: printf("**3**\n");
112、根据以下函数关系,对输入的每个x值,计算出相应的y值。请在程序的________内填入正确内容。
	┏━━━━┯━━━━┓
	┃  x     │  y     ┃
        ┠────┼────┨
	┃x<0     │0       ┃
        ┠────┼────┨
	┃0<=x<10 │x       ┃
        ┠────┼────┨
	┃10<=x<20│10      ┃
        ┠────┼────┨
	┃20<=x<40│-0.5x+20┃
        ┗━━━━┷━━━━┛

	void main()
	{
		int x,c,m;
		float y;
		scanf("%d",&x);
		if(________) c=-1;
		else c=________;
		switch(c)
		{
		case -1:  y=0; break;
		case  0:  y=x; break;
		case  1: y=10; break;
		case  2:
		case  3: y=-0.5*x+20; break;
		default: y=-2;
		}
		if(________) printf("y=%f",y);
		else printf("error\n");
	}
113、以下程序的运行结果是________。
	void main()
	{
		int a=2,b=7,c=5;
		switch(a>0)
		{
		case 1: switch(b<0)
			{
			case 1: printf("@"); break;
			case 2: printf("!"); break;
			}
		case 0: switch(c==5)
			{
			case 0: printf("*"); break;
			case 1: printf("#"); break;
			default:printf("#"); break;
		default: printf("&");
		}
		printf("\n");
	}
114、请读程序:
	#include <stdio.h>
	{
		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",a,b);
	}
     上面程序的运行结果是________。
115、假设奖金税率如下(a代表奖金,r代表税率)
	a<500		r=0%
	500<=a<1000	r=5%
	1000<=a<2000	r=8%
	2000<=a<3000	r=10%
	3000<=a		r=15%
     以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。题中r代表税率,t代表税款,b代表实得奖金数。请在________内填入正确内容。
	void main()
	{
		float a,r,t,b;
		int c;
		scanf("%f",&a);
		if(a>=3000) c=6;
		else c=________;
		switch(c)
		{
		case 0: r=0; break;
		case 1: r=0.05; break;
		case 2:
		case 3: ________; break;
		case 4:
		case 5: r=0.1; break;
		case 6: r=0.15; break;
		}
		t=a*r;
		b=a-t;
		printf("r=%f,t=%f,b=%f",r,t,b);
	}
116、某个自动加油站有'a','b','c'三种汽油,单价分别为1.50,1.35,1.18(元/千克),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。本程序针对拥护输入加油量a,汽油品种b和服务类型c('f'--自动,'m'--自己,'e'--协助),输出应付款m。请在________内填入正确内容。
	void main()
	{
		float a,r1,r2,m;
		char b,c;
		scanf("%f %c %c",&a,&b,&c);
		switch(b)
		{
		case 'a': r1=1.5; break;
		case 'b': ________; break;
		case 'c': r1=1.18; break;
		}
		switch(c)
		{
		case 'f': r2=0; break;
		case 'm': r2=0.05; break;
		case ________: r2=0.1; break;
		}
		m=________;
		printf("%f",m);
	}
117、以下程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。请在________内填入正确内容。
	void main()
	{
		int yy,mm,len;
		printf("year,month=");
		scanf("%d %d",&yy,&mm);
		switch(mm)
		{
		case 1: case 3: case 5: case 7:
		case 8: case 10: case 12: ________; break;
		case 4: case 6: case 9: case 11: len=30; break;
		case 2:
			if(yy%4==0 && yy%100!=0||yy%400==0) ________;
			else ________;
			break;
		default: printf("input error");
			 break;
		}
		printf("the length of %d %d is %d\n",yy,mm,len);
	}
118、以下程序用以计算y年m1月d1日与同年的m2月d2之间的天数(m2>=m1),并打印计算结果。若m1=m2且d1=d2则算1天。在闰年时,2月有29天。闰年的年号由以下方式确定:该年号能被4整除但不能被100整除,或者该年号能被400整除则是闰年。例如:输入1997,2,27,3,10〈回车〉时,输出为12。表明从1997年2月27日到3月10日共有12天。请在________内填入正确内容。
	void main()
	{
		int y,m1,d1,m2,d2;
		int i,d;
		scanf("%d,%d,%d,%d,%d",&y,&m1,&d1,&m2,&d2);
		y=(y%4==0________y%100!=0________y%400==0)?1:0;
		d=0-d1;
		for(i=m1;i<m2;i++)
			switch(i)
			{
			case 1: case 3: case 5: case 7:
			case 8: case 10: case 12:
				d+=31;
				break;
			case 2: d=d+28+y; break;
			case 4: case 6: case 9: case 11: ________;
			}
		printf("%d",d+d2+1);
	}
三、编程题
119、编制程序要求输入整数a和b,若a*a+b*b大于100,则输出a*a+b*b百位以上的数字,否则输出两数之和。
120、试编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
121、请编程序:根据以下函数关系,对输入的每个x值,计算出响应的y值。
	┏━━━━┯━━━━┓
	┃  x     │  y     ┃
        ┠────┼────┨
	┃x<0     │0       ┃
        ┠────┼────┨
	┃0<x<=10 │x       ┃
        ┠────┼────┨
	┃10<x<=20│10      ┃
        ┠────┼────┨
	┃20<x<40 │-0.5x+20┃
        ┗━━━━┷━━━━┛
122、编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
	(1)能同时被3,5,7整除;
	(2)能被其中两数(要指出哪两个)整除;
	(3)能被其中一个数(要指出哪一个)整除;
	(4)不能被3,5,7任一个整除。
123、将以下程序段改用非嵌套的if语句实现。
	int s,t,m;
	t=(int)(s/10);
	switch(t)
	{
	case 10: m=5; break;
	case 9: m=4; break;
	case 8: m=3; break;
	case 7: m=2; break;
	case 6: m=1; break;
	default m=0;
	}
124、用switch编程实现:
	y=-1	(x<0)
	y=0	(x=0)
	y=1	(x>0)
125、将以下程序段改用嵌套的if语句实现。
	int s,t,m;
	t=(int)(s/10);
	switch(t)
	{
	case 10: m=5; break;
	case 9: m=4; break;
	case 8: m=3; break;
	case 7: m=2; break;
	case 6: m=1; break;
	default m=0;
	}
126、请将以下语句改写成switch语句。
	if((s>0)&&(s<=10))
		if((s>=3)&&(s<=6)) x=2;
		else if((s>1)||(s>8)) x=3;
		else x=1;
	else x=0;
127、编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,-,*,/(用switch语句实现)。
128、编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为'A',80-89分为'B',70-79分为'D',60分以下为'E'(用switch语句实现)。

⌨️ 快捷键说明

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