大的数放在z变量里。具体方法如下:先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小;然后将y与z比较,并将较小的值保存在y里而较大的值放在z里。最后,依次输出x、y、z。)
//参考程序
#include
int x,y,z,a;
printf(“input 3 integer :\\n”); scanf(“%d,%d,%d”,&x,&y,&z); if(x>y) /*使x<=y*/ {a=x; x=y; y=a;}
if(x>z) /*使x<=z*/ {a=x; x=z; z=a;} if(y>z) /*使y<=z*/ {a=z; z=y; y=a;}
printf(“\\nx=%d, y=%d, z=%d\\n”,x,y,z); }
4.3.5 编写一个C程序,要求从键盘输入一个不多于5位的正整数x,要求输出:一、
它是几位数;二、逆序打印出各位数字,例如:原数为789,应输出987。(解析:该问题的核心是分解出每一位上的数字: a=x/10000; /*分解出万位上的数字*/ b=x000/1000; /*分解出千位上的数字*/ c=x00/100; /*分解出百位上的数字*/ d=x0/10; /*分解出十位上的数字*/ e=x; /*分解出个位上的数字*/
通过检测各数字是否为零,便可知道x是几位数,例如:if (a) 则x是5位数。 )
//参考程序
#include
{ long x; int a,b,c,d,e;
printf(\ scanf(\
e=x; d=x/10; c=x/100; b=x/1000; a=x/10000; if(x>=1E+5||x<=0)
printf(\ else
{ if(a>0) printf(\位数,反序数字是:%d%d%d%d%d\\n\ else if(b>0) printf(\位数, 反序数字是:%d%d%d%d\\n\ else if(c>0) printf(\位数,反序数字是:%d%d%d\\n\ else if(d>0) printf(\位数,反序数字是:%d%d\\n\ else printf(\位数,数字是:%d\\n\ } }
4.3.6 编写一个C程序,要求从键盘输入两个数,并依据提示输入的数字,选择对这两
个数的运算,并输出相应运算结果。要求提示为: 1、作加法; 2、做乘法; 3、做除法:
(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将
两数之商输出 -- 注意,除数不可为零的检测与提示。)
//参考程序
#include
printf(\请输入两个操作数: a b\\n\ scanf(\
printf(\请选择进行的运算(1,2,3,4): \\n\ printf(\ printf(\ printf(\ printf(\ printf(\您选择: \ scanf(\ switch(sign)
{ case 1: printf(\ case 2: printf(\ case 3: printf(\
case 4: if(op2) {printf(\ else { printf(\除数不能为0\\n\ default: printf(\您选择的运算不对\\n\ } }
习 题 五
5.1填空题
5.1.1 C语言三个循环语句分别是 while 语句, do while 语句和 for 语句。 5.1.2 至少执行一次循环体的循环语句是 do while 。 5.1.3 循环功能最强的循环语句是 for 。
5.1.4 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填
填空。 int n=0,c; c=getchar();
while( c!=?\\n? )
{ if( c>=?0?&&c<=?9? ) n++; c=getchar(); }
5.1.5 在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为 abcDEF 。
#include
while((ch=getchar())!=?\\n?)
{ if(ch>=?A?&&ch<=?Z?) ch=ch+32; else if(ch>=?a?&&ch<=?z?) ch=ch-32; printf(“\\n”); }
5.1.6 下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。
#include
scanf(“%d,%d”,&m,&n);
if(m while(r) { m=n; n=r; r= m%n ;} printf(“%d\\n”,n); } 5.1.7 当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是sjhiu 。 #include while((c=getchar())!=???) putchar(++c); } 5.1.8 下面程序的运行结果是 s=254 。 #include { int a,s,n,count; a=2; s=0; n=1; count=1; while(count<=7) { n=n*a; s=s+n; ++count; } printf(“s=%d”,s); } 5.1.9 执行下面程序段后,k的值是 36 。 k=1;n=263; do{ k*=n; n/=10; } while(n); 5.1.10 下面程序的运行结果是 -10 。 #include for(i=100; i>=0; i-=10); printf(“%d\\n”, i); } 5.1.11 下面程序使循环结束的条件式 i==0 。 #include for(i=250;i;i-=5) printf(“%d\\n”,i); } 5.1.12 以下程序输出结果为 x=-1,y=21 。 #include for(x=30,y=0;x>=10,y<20;x--,y++) x/=2, y+=2; printf(“x=%d, y=%d\\n”,x,y); 5.1.13 下面程序的功能是计算1-3+5-7+...-99+100的值,请填空。 #include { int i, t=1, s=0; for( i=1; i<=101; i+=2) { t=t*i ; s=s+t; t=-t/i ; } printf(“%d\\n”,s); } 5.1.14 下面程序的运行结果是****。 #include for(i=j; i<2*j; i++) switch(i/j) { case 0: case 1: printf(”*”); break; case 2: printf(“#”); } } 5.1.15 下面程序的输出结果是i=6, k=4 。 #include void main() { int i, j,k=19; while(i=k-1) { k-=3; if(k%5==0) { i++; continue; } else if(k<5) break; i++; } printf(“i=%d, k=%d\\n”,i k); } 5.2 选择题 5.2.1 设有程序段:int k=10; while(k=0) k=k-1;,则下面描述正确的是( C)。 A) while循环执行10次 B) 循环时无限循环 C) 循环体语句一次也不执行 D) 循环体语句执行一次 5.2.2 有以下程序: #include void main() { while(putchar(getchar())!=???); } 当输入“china?”时,程序的执行结果是( D )。 A) china B) dijob C) dijiob? D) china? 5.2.3 语句while(!E);中的表达式!E等价于( A )。 A) E==0 B) E!=1 C) E!=0 D) E==1 5.2.4 下面程序段的运行结果是( A )。 a=1;b=2;c=2; while(a { 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.2.5 下面程序段的输出结果是( C )。 int n=0; while(n++<=2); printf(“%d“,n); A) 2 B) 3 C) 4 D) 有语法错误 5.2.6 下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一 对相等数时结束循环,请选择填空。 #include scanf(“%d,%d”,&a,&b); while( B ) { if(a>b) { t=a; a=b; b=t; } printf(%d,%d\\n“,a,b); scanf(“%d,%d”,&a,&b); } } A) !a=b B) a!=b C) a==b D) a=b 5.2.7 下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小 写字母的个数n,并输出m、n中的较大者,请选择填空。 #include { int m=0,n=0; char c; scanf(“%d,%d”,&a,&b); while( ( [1] C )!=?\\n ? ) { if(c>=?A?&&c<=?Z?) m++; if(c>=?a?&&c<=?z?) n++; } printf(“%d”,m } [1] A) c==getchar( ) B) getchar( ) C) c=getchar( ) D) scanf(“%c”,c) [2] A) n:m B) m:n C) m:m D) n:n 5.2.8 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环, 请选择填空。 #include { int a,max=0; scanf(“%d”,&a); while( B ) { if(max printf(“%d”,max); } A) a==0 B) a C) !a==1 D) !a 5.2.9 下面程序段的输出结果是( C)。 #include while( num<=2 ) { num++; printf(“%d\\n”,num); } } A) 1 B) 1 C) 1 D) 1 2 2 2 3 3 4 5.2.10 若运行下程序,从键盘输入2473<回车>,则下面程序的结果是( A )。 #include 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) 668988 C) 66778777 D) 6688766 5.2.11 以下描述正确的是( C )。 A) while、do…while、for循环中的循环体语句都至少被执行一次。 B) do…while循环中,while(表达式)后面的分号可以省略。 C) while循环中,一般要有能使while后面表达式的值变为“假”的操作。 D) do…while循环中,根据情况可以省略while。 5.2.12 C语言的do…while循环中,循环由do开始,用while结束;而且在while 表达式后面的(B)不能丢,它表示do…while循环的结束。 A) \\n B) “;” C) “%” D) “。” 5.2.13 下面程序段的输出结果是( D )。 int x=3; 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库重庆理工大学-C语言程序设计基础教程_习题答案(纪纲_金艳)(3)在线全文阅读。
相关推荐: