做除法:(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将两数之商输出--注意,除数不可为零的检测与提示。)/参考程序#include <stdio.h>void main()( float op1,op2; int sign;printf("请输入两个操作数[1]: abn");scanf("%f%f",op1,op2);printf("请选择进行的运算(1,2,3,4): n");printf("1: +n");printf("2: -n");printf("3: *n");printf("4: /n");printf("您选择: ");scanf("%d",sign);switch(sign){case 1: printf("n%f+%f=%fn",op1,op2,op1+op2); break;case 2: printf("n%f-%f=%fn",op1,op2,op1-op2); break;case 3: printf("n%f*%f=%fn",op1,op2,op1*op2); break;case 4: if(op2) {printf("n%f/%f=%fn",op1,op2,op1/op2); break; )else ( printf("n除数不能为0n"); break;)default: printf("n您选择的运算不对n");}}习题五5.1填空题5.1.1至少执行一次循环体的循环语句是________。5.1.25.1.3下面程序段[2]是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填填空。5.1.4int n=0,c;c=getchar();while(________________________________________)( if(________________________________________________________________) n++;c=getchar(); )5.1.5在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为________。5.1.6#include<stdio.h>( char ch;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.7下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。5.1.8#include<stdio.h>void main()( int r,m,n;scanf(“%d,%d”,m,n);if(m<n) {________________)r=m%n;while(r) ( m=n; n=r; r=________;)printf(“%dn”,n);}5.1.9当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是________。5.1.10#include<stdio.h>void main()( char c;while((c=getchar())!=’?’) putchar(++c);)5.1.11下面程序的运行结果是________。5.1.12#include<stdio.h>void main()( 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.13执行下面程序段后,k的值是________。5.1.14k=1;n=263;do( k*=n%10; n/=10; ) while(n);5.1.15下面程序使循环结束的条件式________。5.1.16#include<stdio.h>void main()( int k;for(k=250;i;i-=5)printf(“%dn”,i);)5.1.17下面程序的运行结果是________。5.1.18#include<stdio.h>void main()( int i, j=4;for(i=j; i<2*j; i++)switch(i/j){ case 0:case 1: printf(”*”); break;case 2: printf(“#”); )}5.1.19下面程序的输出结果是________。5.1.20#include<stdio.h>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=%dn”,i k);}5.2选择题5.2.1设有程序段:int k=10; while(k=0) k=k-1;,则下面描述正确的是(C)。1.2.10A)编辑程序B)驱动程序C)诊断程序D)编译程序[3]1.2.11以下叙述中正确的是(C)。1.2.12A) C语言比其他语言高级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点1.2.13以下叙述中正确的是(A)。1.2.14A) C程序中注释部分可以出现在程序中任意合适的地方B)花括号“{”和“}”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分1.2.15以下叙述中正确的是(B)。1.2.16A) C语言的源程序[5]不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7]C) C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译1.2.17用C语言编写的代码程序(B)。1.2.18A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行1.2.19以下叙述中正确的是(C)。1.2.20A)在C语言中,main函数必须位于程序的最前面B) C语言的每行中只能写一条语句C) C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误1.2.21下列4组选项中,均不是C语言关键字的选项是(A)。1.2.22A)defineB)getc C)include D)whileIFcharscanfgotypeprintfcasepow1.2.23下列4组选项中,均是C语言关键字的选项是(B)。1.2.24A)auto B)switchC)signedD)if5.2.2A)while循环执行10次B)循环时无限循环C)循环体语句一次也不执行D)循环体语句执行一次5.2.3语句while(!E);中的表达式!E等价于(A)。5.2.4A)E==0B)E!=1C)E!=0D)E==15.2.5下面程序段的运行结果是(A)。5.2.6a=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,0B)2,1,0C)1,2,1D)2,1,15.2.7下面程序段的输出结果是(C)。5.2.8int n=0;while(n++<=2); printf(%d“,n);A)2B)3C)4D)有语法错误[8]5.2.9以下描述正确的是(C)。5.2.10A)while、do…while、for循环中的循环体语句都至少被执行一次。B)do…while循环中,while(表达式)后面的分号可以省略。C)while循环中,一定要有能使while后面表达式的值变为“假”的操作。D)do…while循环中,根据情况可以省略while。5.2.11C语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。5.2.12A)nB)“;”C)“%”D)“。”5.2.13下面程序段的输出结果是(D)。5.2.14int x=3;do( printf(“%3d”, x-=2); ) while(!(--x));A)1 2B)32C)2 3D)1 -25.2.15执行程序段:x=-1;do(x=x*x;) while(!x);的结果是(C)。5.2.16A)死循环B)循环执行2次C)循环执行一次D)有语法错误5.2.17对于for(表达式;;表达式3)可理解为(B)。5.2.18A)for(表达式;0;表达式3)B)for(表达式;1;表达式3)C)for(表达式;表达式1;表达式3)D)for(表达式;表达式3;表达式3)5.2.19以下不正确的描述是(B)。5.2.20A)break语句不能用于循环语句和switch语句外的任何其他语句B)在switch语句中使用break语句或continue语句的作用相同C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环5.2.21若i为整型变量,循环语句for(i=2,i==0;) printf(“%d”,i--);的执行次数为(B)。5.2.22A)无限次B)0次C)1次D)2次5.2.23以下叙述正确的是(C)。5.2.24A)for循环中设置fo(条件)break,当条件成立时中止程序执行。B)for循环中设置fo(条件)continue,当条件成立时中止本层循环。C)for循环中设置fo(条件)break,当条件成立时中止本层循环。D)for循环中设置fo(条件)continue,当条件成立时暂停程序执行。5.2.25下面关于for循环的正确描述是(D)。5.2.26A)for循环只能用于循环次数已经确定的情况。B)for循环是先执行循环体语句,后判断表达式。C)在for循环中,不能用break语句跳出循环体。D)for循环的循环体语句中,可以包含多条语句。5.2.27循环语句for(i=0,x=0; !xi<=5; i++);的执行次数为(B)。5.2.28A)5次B)6次C)1次D)无限5.2.29以下程序段的输出结果是(D)。5.2.30int x,i;for(i=1;i<=100;i++)( x=I; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); )A)39 81B)4284C)26 68D)28 705.2.31以下描述正确的是(C)。5.2.32A)goto语句只能用于推出多层循环B)switch语句不能出现continue语句C)只能用continue语句来终止本次循环D)在循环中break语句不能独立出现5.2.33以下不是无限循环的语句是(A)5.2.34A)for(y=0,x=1;x>++y; x=i++) i=x;B)for(; ; x++=i);C)while(1)( x++; )D)for(i=10; ; i- -) sum+=i;5.2.35下面程序段的输出结果是(D)。5.2.36int i,sum;for(i=1;i<=10;i++) sum+=sumprintf(“%dn”, i);A)10B)9C)15D)115.2.37下面程序段的运行结果是(D)。5.2.38for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d”),x);A)**3B)##3C)##3D)**3##4##4 **4 **4##5 **5**5 ##55.2.39执行语句for(i=1; i++<4; );后变量i的值是(C)。5.2.40A)3B)4C)5D)不定2.3编程题5.3.1输入一行字符,分别统计出其中字母、数字和其它字符的个数。5.3.25.3.3求100~200之间不能被3整除也不能被7整除的数。5.3.45.3.5求。5.3.65.3.7求,直到某一项小于0.001时为止。5.3.85.3.9用迭代法求。迭代[9]公式为:,要求迭代精度满足。5.3.105.3.11假设x,y是整数,编写程序求xy的最后3位数,要求x,y从键盘输入。5.3.125.3.13从键盘上输入10个整数,求其中的最大值和最小值。5.3.145.3.15(1)判断一个数是否为素数。(2)输出3-100之间的所有素数。5.3.165.3.17求解爱因斯坦数学题。有一条长度不多于1000步的阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,最后一阶都不剩,问总共有多少级阶梯?5.3.185.3.19100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,求大、中、小马的数目,要求列出所有的可能。5.3.205.3.21假设我国国民经济总值按每年8%的比率增长,问几年后翻番。5.3.225.3.23编写程序,求1~99之间的全部同构[10]数。同构数是这样一组数;它出现在平方数的右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。5.3.245.3.25编写程序,对数据进行加密。从键盘输入一个数,对每一位数字均加2,若加2后大于9,则取其除10的余数。如,2863加密后得到4085。5.3.265.3.27从键盘输入n,打印n行倒等腰三角形,如n=4,则打印:5.3.285.3.29打印如下的九九乘法表5.3.30
做除法:
(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将两数之商输出--注意,除数不可为零的检测与提示。)
//参考程序
#include <stdio.h>
void main()
{ float op1,op2; int sign;
printf("请输入两个操作数[1]: ab\n");
scanf("%f%f",op1,op2);
printf("请选择进行的运算(1,2,3,4): \n");
printf("1: +\n");
printf("2: -\n");
printf("3: *\n");
printf("4: /\n");
printf("您选择: ");
scanf("%d",sign);
switch(sign)
{case 1: printf("\n%f+%f=%f\n",op1,op2,op1+op2); break;
case 2: printf("\n%f-%f=%f\n",op1,op2,op1-op2); break;
case 3: printf("\n%f*%f=%f\n",op1,op2,op1*op2); break;
case 4: if(op2) {printf("\n%f/%f=%f\n",op1,op2,op1/op2); break; }
else { printf("\n除数不能为0\n"); break;}
default: printf("\n您选择的运算不对\n");
}
}
习题五
5.1填空题
5.1.1至少执行一次循环体的循环语句是________。
5.1.2
5.1.3下面程序段[2]是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填填空。
5.1.4
int n=0,c;
c=getchar();
while(________________________________________)
{ if(________________________________________________________________) n++;
c=getchar(); }
5.1.5在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为________。
5.1.6
#include<stdio.h>
{ char ch;
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.7下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。
5.1.8
#include<stdio.h>
void main()
{ int r,m,n;
scanf(“%d,%d”,m,n);
if(m<n) {________________}
r=m%n;
while(r) { m=n; n=r; r=________;}
printf(“%d\n”,n);
}
5.1.9当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是________。
5.1.10
#include<stdio.h>
void main()
{ char c;
while((c=getchar())!=’?’) putchar(++c);
}
5.1.11下面程序的运行结果是________。
5.1.12
#include<stdio.h>
void main()
{ 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.13执行下面程序段后,k的值是________。
5.1.14
k=1;n=263;
do{ k*=n%10; n/=10; } while(n);
5.1.15下面程序使循环结束的条件式________。
5.1.16
#include<stdio.h>
void main()
{ int k;
for(k=250;i;i-=5)
printf(“%d\n”,i);
}
5.1.17下面程序的运行结果是________。
5.1.18
#include<stdio.h>
void main()
{ int i, j=4;
for(i=j; i<2*j; i++)
switch(i/j)
{ case 0:
case 1: printf(”*”); break;
case 2: printf(“#”); }
}
5.1.19下面程序的输出结果是________。
5.1.20
#include<stdio.h>
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)。
1.2.10
A)编辑程序B)驱动程序C)诊断程序D)编译程序[3]
1.2.11以下叙述中正确的是(C)。
1.2.12
A) C语言比其他语言高级
B) C语言可以不用编译就能被计算机识别执行
C) C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
1.2.13以下叙述中正确的是(A)。
1.2.14
A) C程序中注释部分可以出现在程序中任意合适的地方
B)花括号“{”和“}”只能作为函数体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
D)分号是C语句之间的分隔符,不是语句的一部分
1.2.15以下叙述中正确的是(B)。
1.2.16
A) C语言的源程序[5]不必通过编译就可以直接运行
B) C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7]
C) C源程序经编译形成的二进制代码可以直接运行
D) C语言中的函数不可以单独进行编译
1.2.17用C语言编写的代码程序(B)。
1.2.18
A)可立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
1.2.19以下叙述中正确的是(C)。
1.2.20
A)在C语言中,main函数必须位于程序的最前面
B) C语言的每行中只能写一条语句
C) C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
1.2.21下列4组选项中,均不是C语言关键字的选项是(A)。
1.2.22
A)defineB)getc C)include D)while
IFcharscanfgo
typeprintfcasepow
1.2.23下列4组选项中,均是C语言关键字的选项是(B)。
1.2.24
A)auto B)switchC)signedD)if
5.2.2
A)while循环执行10次B)循环时无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
5.2.3语句while(!E);中的表达式!E等价于(A)。
5.2.4
A)E==0B)E!=1C)E!=0D)E==1
5.2.5下面程序段的运行结果是(A)。
5.2.6
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,0B)2,1,0C)1,2,1D)2,1,1
5.2.7下面程序段的输出结果是(C)。
5.2.8
int n=0;
while(n++<=2); printf(%d“,n);
A)2B)3C)4D)有语法错误[8]
5.2.9以下描述正确的是(C)。
5.2.10
A)while、do…while、for循环中的循环体语句都至少被执行一次。
B)do…while循环中,while(表达式)后面的分号可以省略。
C)while循环中,一定要有能使while后面表达式的值变为“假”的操作。
D)do…while循环中,根据情况可以省略while。
5.2.11C语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。
5.2.12
A)\nB)“;”C)“%”D)“。”
5.2.13下面程序段的输出结果是(D)。
5.2.14
int x=3;
do{ printf(“%3d”, x-=2); } while(!(--x));
A)1 2B)32C)2 3D)1 -2
5.2.15执行程序段:x=-1;do{x=x*x;} while(!x);的结果是(C)。
5.2.16
A)死循环B)循环执行2次C)循环执行一次D)有语法错误
5.2.17对于for(表达式;;表达式3)可理解为(B)。
5.2.18
A)for(表达式;0;表达式3)
B)for(表达式;1;表达式3)
C)for(表达式;表达式1;表达式3)
D)for(表达式;表达式3;表达式3)
5.2.19以下不正确的描述是(B)。
5.2.20
A)break语句不能用于循环语句和switch语句外的任何其他语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。
D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
5.2.21若i为整型变量,循环语句for(i=2,i==0;) printf(“%d”,i--);的执行次数为(B)。
5.2.22
A)无限次B)0次C)1次D)2次
5.2.23以下叙述正确的是(C)。
5.2.24
A)for循环中设置fo(条件)break,当条件成立时中止程序执行。
B)for循环中设置fo(条件)continue,当条件成立时中止本层循环。
C)for循环中设置fo(条件)break,当条件成立时中止本层循环。
D)for循环中设置fo(条件)continue,当条件成立时暂停程序执行。
5.2.25下面关于for循环的正确描述是(D)。
5.2.26
A)for循环只能用于循环次数已经确定的情况。
B)for循环是先执行循环体语句,后判断表达式。
C)在for循环中,不能用break语句跳出循环体。
D)for循环的循环体语句中,可以包含多条语句。
5.2.27循环语句for(i=0,x=0; !xi<=5; i++);的执行次数为(B)。
5.2.28
A)5次B)6次C)1次D)无限
5.2.29以下程序段的输出结果是(D)。
5.2.30
int x,i;
for(i=1;i<=100;i++)
{ x=I; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(“%d”,x); }
A)39 81B)4284C)26 68D)28 70
5.2.31以下描述正确的是(C)。
5.2.32
A)goto语句只能用于推出多层循环
B)switch语句不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
5.2.33以下不是无限循环的语句是(A)
5.2.34
A)for(y=0,x=1;x>++y; x=i++) i=x;
B)for(; ; x++=i);
C)while(1){ x++; }
D)for(i=10; ; i- -) sum+=i;
5.2.35下面程序段的输出结果是(D)。
5.2.36
int i,sum;
for(i=1;i<=10;i++) sum+=sum
printf(“%d\n”, i);
A)10B)9C)15D)11
5.2.37下面程序段的运行结果是(D)。
5.2.38
for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d”),x);
A)**3B)##3C)##3D)**3##4
##4 **4 **4##5 **5
**5 ##5
5.2.39执行语句for(i=1; i++<4; );后变量i的值是(C)。
5.2.40
A)3B)4C)5D)不定
2.3编程题
5.3.1输入一行字符,分别统计出其中字母、数字和其它字符的个数。
5.3.2
5.3.3求100~200之间不能被3整除也不能被7整除的数。
5.3.4
5.3.5求。
5.3.6
5.3.7求,直到某一项小于0.001时为止。
5.3.8
5.3.9用迭代法求。迭代[9]公式为:,要求迭代精度满足。
5.3.10
5.3.11假设x,y是整数,编写程序求xy的最后3位数,要求x,y从键盘输入。
5.3.12
5.3.13从键盘上输入10个整数,求其中的最大值和最小值。
5.3.14
5.3.15(1)判断一个数是否为素数。(2)输出3-100之间的所有素数。
5.3.16
5.3.17求解爱因斯坦数学题。有一条长度不多于1000步的阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,最后一阶都不剩,问总共有多少级阶梯?
5.3.18
5.3.19100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,求大、中、小马的数目,要求列出所有的可能。
5.3.20
5.3.21假设我国国民经济总值按每年8%的比率增长,问几年后翻番。
5.3.22
5.3.23编写程序,求1~99之间的全部同构[10]数。同构数是这样一组数;它出现在平方数的右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。
5.3.24
5.3.25编写程序,对数据进行加密。从键盘输入一个数,对每一位数字均加2,若加2后大于9,则取其除10的余数。如,2863加密后得到4085。
5.3.26
5.3.27从键盘输入n,打印n行倒等腰三角形,如n=4,则打印:
5.3.28
5.3.29打印如下的九九乘法表
5.3.30
题目解答
答案
do while c! = ’ \n ’ c>= ’ 0 ’ c<= ’ 9 ’ abcDEF r =m;m=n;n=r m%n sjhiu s=254 36 i==0 ****# i=6, k=4