当前位置:文档之家› C语言第二章习题2.4和2.5答案

C语言第二章习题2.4和2.5答案

C语言第二章习题2.4和2.5答案
C语言第二章习题2.4和2.5答案

C语言第二章习题答案

2.4 用传统流程图表示求解以下问题的算法。

2.5 用N-S图表示2.4题中各题的算法。

(1) 有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现

改盛酱油,B瓶则相反)。

(2) 依次将10个数输入,要求将其中最大的数输出。

(3) 有3个数a、b、c,要求按大小顺序把它们输出。(假设由大到小)

(4) 求1+2+3+ +100。

(5) 判断一个数n能否同时被3和5整除。

(6) 将100~200之间的素数输出。

(7) 求两个数m和n的最大公约数。

(8) 求方程ax2+bx+c=0的根。分别考虑:①有两个不等的实根;②有两个相等的实

根。

C语言循环习题答案

循环习题集锦 一.选择题 1.for(i=0;i<10;i++);结束后,i的值是;(10) A 9 B 10 C 11 D 12 2.下面程序的循环次数是:(D) int k=0; while(k<10) {if(k<1) continue; if(k==5) break; k++; } A. 5 B 6 C 4 D 死循环,不能确定循环次数3.下面程序的输出结果是(10) main() { int s,k; for(s=1,k=2;k<5;k++) s+=k; printf(“%d\n”,s); } A 1 B 9 C 10 D 15 4.要使下面程序输出10个整数,则在下画线处填入正确的数是:(c)

for(i=0;i<= ;) printf(“%d\n”,i+=2); A 9 B 10 C 18 D 20 5.运行下面程序:(B) main() { int i=10,j=0; do { j=j+i; i--; }while(i>5); printf(“%d\n”,j); } 输出结果是: A 45 B 40 C 34 D 55 6.运行下面程序 #include “stdio.h” main() { int k=0,a=1; while(k<10) { for( ; ;) { if((k%10)==0)

break; else k--; } k+=11; a+=k; } printf(“%d %d\n”,k,a); } 则输出的结果是(C) A 21 32 B 21 33 C 11 12 D 10 11 7.以下叙述正确的是:(D) A.do---while语句构成的循环不能用其他语句构成的循环来代替。B.do---while语句构成的循环只能用break语句退出。 C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。 D.用do---while语句构成的循环,在while后的表达式为零时结束循环。 8.有如下程序: main() { int x=3; do{

c语言第五章习题答案

第一题: 1. 从键盘输入10个数,求和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;} printf("s=%d\n",s ); } 2. 从键盘输入10个数,求平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;}

ave=s/10; printf("s=%d,ave=%d\n",s ,ave ); } 3. 从键盘输入10个数,求偶数的和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) s+=x;} printf("s=%d\n",s ); } 4. 从键盘输入10个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0;

for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) {s+=x;k++;} } ave=s/k; printf("s=%d,ave=%d\n",s,ave ); } 5. 从键盘输入n个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0; int n; scanf("%d",&n); for(i=0;i

C语言循环例题

1. //输出a和b之间的所有素数, 10个素数为一行输出 #include #include #include int panDuanSuShu(int x) //判断x是否是素数 { int i,m,flag; //flag为1表示是素数,flag为0表示不是素数 m=(int)sqrt(x); if(x==2) { flag=1;} else { for(i=2;i<=m;i++) { if(x%i==0) { flag=0; break; } } if(i>m) { flag=1; } } return flag; } int shuChuSuShu(int a,int b) { int i,k=0;//i是循环变量,k表示已经输出了k个素数 for(i=a;i<=b;i++) { if(panDuanSuShu(i)==1) { printf("%6d",i); k++; if(k%10==0) { printf("\n");} } } printf("\n"); return k; } int main() { int a,b,t;

while(a<2||b<2) { printf("重新输入n和m:"); scanf("%d%d",&a,&b); } if(a>b) { t=a;a=b;b=t; } printf("%d和%d之间共有%d个素数",a,b,shuChuSuShu(a,b)); printf("\n\n"); return 0; } 2. //用户输入2个数,输出这2个数之间所有的超素数 //超素数(质数)的概念:7193是素数,719是素数,71是素数,7是素数,则7193是素数#include #include #include int isPrime(int n)//判断某数是否是素数 { int i,f,m=(int)sqrt(n); if(n==1) f=0; else { for(i=2;i<=m;i++) { if(n%i==0) break; } if(i>m) f=1; else f=0; } return f; } int supperPrime(int n)//判断某数是否是超素数 { int t=n; while(t>0) { if(isPrime(t)==1) t=t/10; else break; }

(完整版)C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。

第5章循环结构程序设计35 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是_B___。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; COUT<

c语言程序设计课后习题答案 第五章

/*练习5-3*/ #include int prime(int m) { int i; for(i=2;i<=m-1;i++) if(m%i==0) break; if(i==m) return 1; else return 2; } main() { int i,m,n,sum=0,a=0; printf("enter m and n:(1<=m<=n<=500)\n"); scanf("%d",&m); scanf("%d",&n); for(i=m;i<=n;i++) { if(prime(i)==1) sum=sum+i; a=a+1; } printf("之间的素数和为:%d\n",sum); printf("之间的素数个数为:%d\n",a); } /*习题5.1*/ #include int fn(int a,int n) { int i,sum=0,m=1,c; for(i=1;i<=n;i++) { sum=sum+m; m=m*10; } c=sum*a; return c; }

main() { int a,n,i,x,y=0; printf("enter a and n:\n"); scanf("%d",&a); scanf("%d",&n); for(i=1;i<=n;i++) { x=fn(a,i); y=y+x; } printf("y=%d\n",y); } /*习题5.2*/ #include int countdigit(int number,int digit) { int sum=0; while(number>0) { if(number%10==digit) sum=sum+1; number=number/10; } return sum; } main() { int number,y; printf("enter a number:\n"); scanf("%d",&number); y=countdigit(number,2); printf("y=%d\n",y); }

C语言预习及课后习题(参考答案1-5)

第一章C语言概述 课前预习题 1.函数 2.main()函数3.单行注释、块注释、A 参考分析:C语言总是从main函数开始,main函数结束。但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。 2.C 参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。因此,如果注释中存在错误,系统是不可能发现的。另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。 3.D 参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。 4. C 5.B 参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。 6.C 7.B 8.C 9.C 10.C 11.绘制NS算法流程图。 (1)输入10个数,求其中的最大值。 (2)输入3个数,将它们升序排列输出。 (3)输入2个数,求它们的最大公约数。(4)输入一元二次方程的系数a、b、c,判断其根。

第二章数据类型、运算符与表达式 课前预习题 1.变量在内存中所占的字节数、变量的表数范围、变量允许参与的运算2.1、4、8 3.float、double 4.八进制、十进制、十六进制5.1 6.26 7.12、4 8.6、4、2 9.-60 10.2 11.10、6 12.13.14.4 15.1 16.0 17.9 18.字符、数字、下划线19.'f' 20.21.int型22.m/10%10*100+m/100*10+m%10 课后习题 1.A 分析:在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:char<=short<=int<=long<= float<=double,只有A符合16位PC机中的具体环境。 2.C 参考分析:逗号表达式的计算结果是最后一个表达式的值。k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。 3.B 参考分析:逗号表达式的计算结果是最后一个表达式的值。b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。 4.A 参考分析:是关键字的有:char、case、while。 5.B 参考分析:不是关键字的:include、scanf、type 6.C 参考分析:合法的有:A、P_0、la0、_A、_123、temp、INT。 7.C 参考分析:教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。 8.A 参考分析:不合法的B2,C2,C3,D2。解释:A2:-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:0x显然后面缺少数值,但在TC中是允许的。 9.D 参考分析:不合法的A1,B3,C1,C3,D。解释:A1:--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常

C语言循环结构练习题带答案.doc

第 5 章循环结构程序 设计 练习题 1.单项选择题 ( 1)语句 while (!e);中的条件!e等价于A。 A. e==0 B. e!=1 C. e!=0 D. ~e ( 2)下面有关for循环的正确描述是D。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在 for循环中,不能用break 语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中D。 A.不能使用do-while语句构成的循环 B. do-while 语句构成的循环必须用break 语句才能退出 C. do-while 语句构成的循环,当while 语句中的表达式值为非零时结束循环 D. do-while 语句构成的循环,当while 语句中的表达式值为零时结束循环 ( 4) C 语言中 while 和 do-while 循环的主要区别是A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 ( 5)以下程序段C。

int x=-1; do { x=x*x; } while (!x); A.是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误( 6)下列语句段中不是死循环的是__C__。 A.i=100; while (1) { i=i%100+1; if (i==20) break; } B.for (i=1;;i++) sum=sum+1; C.k=0; do { ++k; } while (k<=0); D.s=3379; while (s++%2+3%2) s++;

c语言程序设计课后习题答案高等教育出版社

#include<> main() { float x=,y=,z=; printf("x=%f\n",x); printf("y=%f\n",y); printf("z=%f\n",z); } (1) #include<> main() { int a=12,b=3; float x=,y=; printf("%f\n",(float)(a*b)/2); printf("%d\n",(int)x%(int)y); } (2) #include<> main() { int x=32,y=81,p,q; p=x++; q=--y; printf("%d %d\n",p,q); printf("%d %d\n",x,y); } #include<> main() { int x,b0,b1,b2,s; printf("Inputx:"); scanf("%d",&x); b2=x/100; printf("骰子出现 2 printf("骰子出现 3 printf("骰子出现 4 printf("骰子出现 5 printf("骰子出现 6

} (1) void Swap(int *x,int *y) { int *pTemp;.\n"); else if(strcmp(userInput,password)<0) printf("Invalid password!user inputpassword...\n"); return 0; } #include<> #define N 24 unsigned int CountLetter(char str[]); int main() { char a[N]; printf("Input a letter:\n"); gets(a); printf("The length of the letter is:%d\n",CountLetter(a)); return 0; } unsigned int CountLetter(char str[]) { char *p=str; int c=0,flag=0; while(*p!='\0') { if(*p!=' ') flag=1; else if(flag==1) { c++; flag=0; } p++; } return c+1; } #include<>

C语言课后练习题答案第五章

作业四:简单程序设计 1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。(5分)(重要) A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 2.阅读以下程序,当输入数据的形式为:25,13,10(注:表示回车),则正确的输出结果为(D)。(5分) 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) 不确定值 3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。(5分) main() { char ch1,ch2,ch3;

scanf(“%c%c%c”,&ch1,&ch2,&ch3); printf(“%c%c%c”,ch1,ch2,ch3); } 4.以下的输出结果是(x=1,y=2*sum*=3 10 Squard is : 100)。(5分) 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); } 5.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2 =’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:(20分) a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.6 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1=’a’ or 97(ascll) c2=’b’ or 98(ascll) main()

C语言第五章习题带答案更新Word版

练习5-1答案 一、选择题 1.合法的数组说明语句是( B )。 A.int a[]="string"; B.int a[]={0,1,2,3,4,5}; C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。 A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10 scanf("%d", &n); int a[SIZE]; int a[n]; 3.已知:int a[10];,则对a数组元素的正确引用是( D )。 A.a[10] B.a[3.5] C.a(5) D.a[10-10] 4.以下对一维数组a进行正确初始化的语句是( C )。 A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={}; C.int a[]={0}; D.int a[2]={10, 9, 8}; 5.对以下说明语句的正确理解是( B )。 int a[10]={6, 7, 8, 9, 10}; A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确 二、填空题 6.求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。 例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。 #include main() {int m[16], n, i, t, count=0; long a, k; printf("Result is:\n"); for (n=10; n<200; n++) { k=0; t=1; a=n*n; for (i=1; a!=0; i++) { ①; a/=10; }

《C语言程序设计》课后习题参考答案

高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案 ――武汉大学出版社 习题1参考答案 一、选择题 1. A 2. D 二、填空题 1. BASIC、FORTRAN、AL_GOL60和COBOL 2. 8 3. 关键字 4. 编辑、编译、链接和运行 三、简答题 1.答: (1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。 (2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。 (4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。 (5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。 (6)C语言与汇编语言相比,可移植性好。 (7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。 2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。 3.答: (1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。

C语言循环结构练习题

5.2 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是____。 A. i=100; while (1) { i=i%100+1; if (i==20) break;

第5章循环结构程序设计35 } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是____。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; } (8)以下程序的输出结果是____。 #include main() { int i; for (i=4;i<=10;i++) { if (i%3==0) continue; printf("%d",i); } } A. 45 B. 457810 C. 69 D. 678910 (9)以下程序的输出结果是____。 #include main() { int num=0; while (num<=2) {

C语言循环结构练习题带答案

第5章循环结构程序设计 5.1基本知识点 ?while语句的使用格式和注意事项 ?do-while语句的使用格式和注意事项 ?for语句的使用格式和注意事项 ?break和continue语句在循环语句中的应用 ?循环结构的嵌套 ?使用goto语句实现循环结构 ?穷举法程序设计方法 ?迭代程序设计方法 5.2练习题5 1.单项选择题 (1)语句while(!e);中的条件!e等价于A。 A.e==0 B.e!=1 C.e!=0 D.~e (2)下面有关for循环的正确描述是D。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是A。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句

(5)以下程序段C。 intx=-1; do { x=x*x; } while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误(6)下列语句段中不是死循环的是__C__。 A.i=100; while(1) { i=i%100+1; if(i==20)break; } B.for(i=1;;i++) sum=sum+1; C.k=0; do { ++k; }while(k<=0); D.s=3379; while(s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while(a) { if(b)continue; c; } A.while(a) B.while(c) {if(!b)c;} {if(!b)break;c;} C.while(c) D.while(a)

c语言循环结构上机习题

1、计算n的阶乘(n!),n的取值在1~10之间。分别使用while、do…while和for 语句实现。(三个程序) 给循环变量赋初值 循环条件 循环体 循环变量的增值 2、输入一行字符,分别统计输入了多少个 字母、数字、空格和其他字符。 3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f(1)~f(9)各函 数值。

4、有分数序列2/1,3/2,5/3,8/5,13/8, 21/13…求这个数列的前20项和。 (分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分 子) 5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。要求每一行显示5个数,并且统计一共有多少个整数能 被n整除。 6、下面程序的功能是从键盘上输入若干学

生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。 main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while( ①) { if(x>amax) amax=x; if( ②) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,a min); } 7、使用循环语句输出以下图形

8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。 8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问

一百只鸡中公鸡、母鸡、小鸡各多少)。 分析: 这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为 三元一次方程组: 100=x*5+y*3+z/3 100=x+y+z 这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围: 1) x的取值范围为1~20 2) y的取值范围为1~33 3) z的取值范围为3~99,步长为3 对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。

C语言习题:顺序、选择、循环

2.3顺序结构程序设计 2.3.1 要点导读 1.printf() 与scanf()语句。 printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。 2.字符数据的输入输出。 最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。 2.3.2 经典例题分析 1.下列程序运行后输出的结果是。 #include void main() { int a=0,b=0; a=10; b=20; printf(“a+b=%d”,a+b); } 分析:printf( )是输出函数,它的括号内由两部分组成: 1)控制字符串,是用双引号括起来的字符串,它包括两种信息: (1) 格式说明。由”%”和格式字符组成,如:%d、%f、%c等。它的作用是将输出的 数据转换成指定的格式输出。 (2) 普通字符。需要原样输出的字符。 2)”输出表列”是需要输出的一些数据,可以是表达式。 题目中a的值是10,b的值是20,在 printf(“a+b=%d”,a+b); 格式说明输出表列 中,”a+b= “是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。 答案:a+b=30。 2.下列程序运行后输出的结果是。 #include void main()

{ int a=732; printf(“%d\n”,a); printf(“%2d\n”,a); printf(“%10d\n”,a); printf(“%-10d\n”,a); } 分析:d格式符,用来输出十进制整数。其中%d,按整型数据的实际长度输出。%md,m 为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 printf(“%d\n”,a);把a的值按原样输出:732。printf(“%2d\n”,a);结果占2列,但732占3列大于2列,所以按实际位数输出:732。printf(%10d\n”,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(“%-10d\n”,a); 结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。 答案: 732 732 □□□□□□□732 /*□表示空格*/ 732□□□□□□□ 3.已知char a=‘\103’;则语句printf(“%3d”,a);执行后的输出结果为(□表示空格) 。 A)□67 B)’c’C)67□D)103 分析:’\103’是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。printf(“%3d”,a);把’\103’转换为十进制数输出,结果占3列。但67占2列,小于要求的3列,所以左补空格,即□67。 答案:C。 4.下列程序运行后结果是。 #include #define a 3345.67 void main() { printf(“%f\n”,a); printf(“%e\n”,a); printf(“%4.2f\n”,a); printf(“%3.1f\n”,a); printf(“%10.3f\n”,a); printf(“%-10.3f\n”,a); } 分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(“%f\n”,a);输出结果为3345.670000。 %m.nf是指,要输出的数占m列,同时小数点保留n位(四舍五入),如果输出的数大于m,则原样输出,同时小数点保留n位(四舍五入)。如果小于m,则左补空格,同时小数点保留n位(四舍五入)。printf(“%4.2f\n”,a);输出结果为3345.67。 printf(“%3.1f\n”,a);输出结果为3345.7。 e格式符,以规范化指数的形式输出,所以printf(“%e\n”,a);3.345670e+03。

C程序设计第五章课后习题答案

循环结构程序设计 P115 5.1 用while计算1至100的合. #include int main() { int i=1,sum=0; while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定. { sum=sum+i; i++; } printf("The sum is %d .\n",sum); return 0; } P117 5.2 用do-while来做1至100的合. #include int main() { int i=1,sum=0; do// do-while可以做的事,用while都可以做到. { //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行. sum=sum+i; i++; }while(i<=100); printf("The sum is %d .\n",sum); return 0; } P118 5.3 比较do-while与while的差别. #include

{ int i,sum=0; printf("Please input a number :"); scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0. while(i<=10) { sum=sum+i; i++; } printf("The sum of 1-10 is %d .\n",sum); return 0; } #include int main() { int i,sum=0; printf("Please input a number :"); scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11. do { sum=sum+i; i++; }while(i<=10); //此重点在于理解二者的差别. printf("The sum of 1-10 is %d .\n",sum); return 0; } P126 5.4 break的例子. #include int main() { int i,b=0,a,c; for(i=0;i<=1000;i++) { printf("Please input amount :"); //循环体内套有输出语句以及跳出语句. scanf("%d",&a); b=b+a; if(b>=100)

C语言循环结构练习题带答案

第5章循环结构程序设计 基本知识点 ? while语句的使用格式和注意事项 ? do-while语句的使用格式和注意事项 ? for语句的使用格式和注意事项 ? break和continue语句在循环语句中的应用 ? 循环结构的嵌套 ? 使用goto语句实现循环结构 ? 穷举法程序设计方法 ? 迭代程序设计方法 练习题5 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格

C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。 int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误 (6)下列语句段中不是死循环的是__C__。 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++; (7)与以下程序段等价的是__A__。 while (a) { if (b) continue; c; } A. while (a) B. while (c) { if (!b) c; } { if (!b) break; c; } C. while (c) D. while (a) { if (b) c; } { if (b) break; c; }(8)以下程序的输出结果是_B___。

C语言第五章习题答案

标题: 1、结构体的定义与引用 时限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:定义一个职工结构体数据类型,并定义职工结构体变量。 输入:从键盘输入一个职工的信息。(4个数据,每个占一行,工资有两位小数)输出:输出职工信息。(4个数据,每个占一行) 输入样例:zhangping 610103************ 21 2183.55 输出样例:zhangping 610103************ 21 2183.55 标题: 2、结构体数组的定义与引用 时限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:定义一个职工结构体数组,从键盘输入5位职工的信息,打印出最高的工资。 输入:从键盘输入5位职工的信息(4个数据,每个占一行,工资有两位小数)。 输出:打印出最高的工资。 输入样例:liuxin 91736527976271265 11 1234.23 liyixin 91736527976271265 11 5234.24 liuxin 91736527943271265 11 1244.25 liuxin 91736527976271265 11

1284.26 liuxin 91736527976271265 11 1232.27 输出样例: 5234.24 标题: 3、电话薄 时限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 1.编写手机电话薄管理程序,用结构体实现下列功能: (1) 手机电话薄含有姓名、宅电、手机3项内容,建立含有上述信息的电话簿。 (2)输入姓名,查找此人的号码。 (3)插入某人的号码。 (4)输入姓名,删除某人的号码。 (5)将以上功能分别用子函数实现,编写主函数,可以根据用户的需要,调用相应的子函数。 建议用结构体完成,可参考P204【例7-2】。 输入: 输出:输入样例:输出样例: 提示:1、程序主函数如下所示,请认真理解,不要更改代码。 int main(void) /* 主函数 */ { int k; do { printf(" 0: exit\n"); /* 打印菜单项 */ printf(" 1: creat\n"); printf(" 2: search\n"); printf(" 3: insert\n"); printf(" 4: delete\n"); printf(" 5: output\n"); printf("please select:"); scanf("%d",&k); /* 输入选择项 */ switch(k) { case 0:

相关主题
文本预览
相关文档 最新文档