做除法:(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将两数之商输出--注意,除数不可为零的检测与提示。)/参考程序#include 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.2下面程序段[2]是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填填空。int n=0,c;c=getchar();while(________________)( if(________________________________) n++;c=getchar(); )5.1.3在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为________。#include( 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.4下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。#includevoid main()( int r,m,n;scanf(“%d,%d”,m,n);if(mr=m%n;while(r) ( m=n; n=r; r=________;)printf(“%dn”,n);}5.1.5当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是________。#includevoid main()( char c;while((c=getchar())!=’?’) putchar(++c);)5.1.6下面程序的运行结果是________。#includevoid 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.7执行下面程序段后,k的值是________。k=1;n=263;do( k*=n%10; n/=10; ) while(n);5.1.8下面程序使循环结束的条件式________。#includevoid main()( int k;for(k=250;i;i-=5)printf(“%dn”,i);)5.1.9下面程序的运行结果是________。#includevoid 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.10下面程序的输出结果是________。#includevoid 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)。A)编辑程序B)驱动程序C)诊断程序D)编译程序[3]1.2.6以下叙述中正确的是(C)。A) C语言比其他语言高级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式D) C语言出现的最晚,具有其他语言的一切优点1.2.7以下叙述中正确的是(A)。A) C程序中注释部分可以出现在程序中任意合适的地方B)花括号“{”和“}”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分1.2.8以下叙述中正确的是(B)。A) C语言的源程序[5]不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7]C) C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译1.2.9用C语言编写的代码程序(B)。A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行1.2.10以下叙述中正确的是(C)。A)在C语言中,main函数必须位于程序的最前面B) C语言的每行中只能写一条语句C) C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误1.2.11下列4组选项中,均不是C语言关键字的选项是(A)。A)defineB)getc C)include D)whileIFcharscanfgotypeprintfcasepow1.2.12下列4组选项中,均是C语言关键字的选项是(B)。A)auto B)switchC)signedD)ifA) while循环执行10次B)循环时无限循环C)循环体语句一次也不执行D)循环体语句执行一次5.2.2语句while(!E);中的表达式!E等价于(A)。A)E==0B)E!=1C)E!=0D)E==15.2.3下面程序段的运行结果是(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,0C)1,2,1D)2,1,15.2.4下面程序段的输出结果是(C)。int n=0;while(n++<=2); printf(%d“,n);A) 2 B)3 C) 4 D)有语法错误[8]5.2.5以下描述正确的是(C)。A)while、do…while、for循环中的循环体语句都至少被执行一次。B) do…while循环中,while(表达式)后面的分号可以省略。C) while循环中,一定要有能使while后面表达式的值变为“假”的操作。D) do…while循环中,根据情况可以省略while。5.2.6C语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。A) n B)“;”C)“%”D)“。”5.2.7下面程序段的输出结果是(D)。int x=3;do( printf(“%3d”, x-=2); ) while(!(--x));A) 1 2 B) 32 C) 2 3 D) 1 -25.2.8执行程序段:x=-1;do(x=x*x;) while(!x);的结果是(C)。A)死循环B)循环执行2次C)循环执行一次D)有语法错误5.2.9对于for(表达式;;表达式3)可理解为(B)。A)for(表达式;0;表达式3)B)for(表达式;1;表达式3)C)for(表达式;表达式1;表达式3)D)for(表达式;表达式3;表达式3)5.2.10以下不正确的描述是(B)。A)break语句不能用于循环语句和switch语句外的任何其他语句B)在switch语句中使用break语句或continue语句的作用相同C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环5.2.11若i为整型变量,循环语句for(i=2,i==0;) printf(“%d”,i--);的执行次数为(B)。A)无限次B)0次C)1次D)2次5.2.12以下叙述正确的是(C)。A) for循环中设置fo(条件)break,当条件成立时中止程序执行。B)for循环中设置fo(条件)continue,当条件成立时中止本层循环。C) for循环中设置fo(条件)break,当条件成立时中止本层循环。D) for循环中设置fo(条件)continue,当条件成立时暂停程序执行。5.2.13下面关于for循环的正确描述是(D)。A) for循环只能用于循环次数已经确定的情况。B)for循环是先执行循环体语句,后判断表达式。C)在for循环中,不能用break语句跳出循环体。D) for循环的循环体语句中,可以包含多条语句。5.2.14循环语句for(i=0,x=0; !xi<=5; i++);的执行次数为(B)。A)5次B)6次C)1次D)无限5.2.15以下程序段的输出结果是(D)。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 81 B) 4284 C) 26 68 D) 28 705.2.16以下描述正确的是(C)。A)goto语句只能用于推出多层循环B)switch语句不能出现continue语句C)只能用continue语句来终止本次循环D)在循环中break语句不能独立出现5.2.17以下不是无限循环的语句是(A)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.18下面程序段的输出结果是(D)。int i,sum;for(i=1;i<=10;i++) sum+=sumprintf(“%dn”, i);A)10B)9C)15D)115.2.19下面程序段的运行结果是(D)。for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d”),x);A) **3 B)##3 C) ##3 D) **3##4##4 **4 **4##5 **5**5 ##55.2.20执行语句for(i=1; i++<4; );后变量i的值是(C)。A) 3 B)4C)5D)不定2.3编程题5.3.1输入一行字符,分别统计出其中字母、数字和其它字符的个数。5.3.2求100~200之间不能被3整除也不能被7整除的数。5.3.3求。5.3.4求,直到某一项小于0.001时为止。5.3.5用迭代法求。迭代[9]公式为:,要求迭代精度满足。5.3.6假设x,y是整数,编写程序求xy的最后3位数,要求x,y从键盘输入。5.3.7从键盘上输入10个整数,求其中的最大值和最小值。5.3.8(1)判断一个数是否为素数。(2)输出3-100之间的所有素数。5.3.9求解爱因斯坦数学题。有一条长度不多于1000步的阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,最后一阶都不剩,问总共有多少级阶梯?5.3.10100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,求大、中、小马的数目,要求列出所有的可能。5.3.11假设我国国民经济总值按每年8%的比率增长,问几年后翻番。5.3.12编写程序,求1~99之间的全部同构[10]数。同构数是这样一组数;它出现在平方数的右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。5.3.13编写程序,对数据进行加密。从键盘输入一个数,对每一位数字均加2,若加2后大于9,则取其除10的余数。如,2863加密后得到4085。5.3.14从键盘输入n,打印n行倒等腰三角形,如n=4,则打印:5.3.15打印如下的九九乘法表
做除法:
(解析:可使用switch语句,以提示输入的数字为依据,作分支结构设计,使得提示输入1时,将两数之和输出;提示输入2时,将两数之积输出;提示输入3时,将两数之商输出--注意,除数不可为零的检测与提示。)
//参考程序
#include 
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下面程序段[2]是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填填空。
int n=0,c;
c=getchar();
while(________________)
{ if(________________________________) n++;
c=getchar(); }
5.1.3在执行以下程序时,如果键盘上输入:ABCdef<回车>,则输出为________。
#include
{ 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.4下面程序的功能是用辗转相除法求两个正整数的最大公约数,请填空。
#include
void main()
{ int r,m,n;
scanf(“%d,%d”,m,n);
if(m
r=m%n;
while(r) { m=n; n=r; r=________;}
printf(“%d\n”,n);
}
5.1.5当运行以下程序时,从键盘输入“right? <回车>”,则下面程序的运行结果是________。
#include
void main()
{ char c;
while((c=getchar())!=’?’) putchar(++c);
}
5.1.6下面程序的运行结果是________。
#include
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.7执行下面程序段后,k的值是________。
k=1;n=263;
do{ k*=n%10; n/=10; } while(n);
5.1.8下面程序使循环结束的条件式________。
#include
void main()
{ int k;
for(k=250;i;i-=5)
printf(“%d\n”,i);
}
5.1.9下面程序的运行结果是________。
#include
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.10下面程序的输出结果是________。
#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)编辑程序B)驱动程序C)诊断程序D)编译程序[3]
1.2.6以下叙述中正确的是(C)。
A) C语言比其他语言高级
B) C语言可以不用编译就能被计算机识别执行
C) C语言以接近英语国家的自然语言[4]和数学语言作为语言的表达形式
D) C语言出现的最晚,具有其他语言的一切优点
1.2.7以下叙述中正确的是(A)。
A) C程序中注释部分可以出现在程序中任意合适的地方
B)花括号“{”和“}”只能作为函数体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
D)分号是C语句之间的分隔符,不是语句的一部分
1.2.8以下叙述中正确的是(B)。
A) C语言的源程序[5]不必通过编译就可以直接运行
B) C语言中的每条可执行语句最终都将被转换成二进制[6]的机器指令[7]
C) C源程序经编译形成的二进制代码可以直接运行
D) C语言中的函数不可以单独进行编译
1.2.9用C语言编写的代码程序(B)。
A)可立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
1.2.10以下叙述中正确的是(C)。
A)在C语言中,main函数必须位于程序的最前面
B) C语言的每行中只能写一条语句
C) C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
1.2.11下列4组选项中,均不是C语言关键字的选项是(A)。
A)defineB)getc C)include D)while
IFcharscanfgo
typeprintfcasepow
1.2.12下列4组选项中,均是C语言关键字的选项是(B)。
A)auto B)switchC)signedD)if
A) while循环执行10次B)循环时无限循环
C)循环体语句一次也不执行D)循环体语句执行一次
5.2.2语句while(!E);中的表达式!E等价于(A)。
A)E==0B)E!=1C)E!=0D)E==1
5.2.3下面程序段的运行结果是(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,0C)1,2,1D)2,1,1
5.2.4下面程序段的输出结果是(C)。
int n=0;
while(n++<=2); printf(%d“,n);
A) 2 B)3 C) 4 D)有语法错误[8]
5.2.5以下描述正确的是(C)。
A)while、do…while、for循环中的循环体语句都至少被执行一次。
B) do…while循环中,while(表达式)后面的分号可以省略。
C) while循环中,一定要有能使while后面表达式的值变为“假”的操作。
D) do…while循环中,根据情况可以省略while。
5.2.6C语言的do…while循环中,循环由do开始,用while结束;而且在while表达式后面的(B)不能丢,它表示do…while循环的结束。
A) \n B)“;”C)“%”D)“。”
5.2.7下面程序段的输出结果是(D)。
int x=3;
do{ printf(“%3d”, x-=2); } while(!(--x));
A) 1 2 B) 32 C) 2 3 D) 1 -2
5.2.8执行程序段:x=-1;do{x=x*x;} while(!x);的结果是(C)。
A)死循环B)循环执行2次C)循环执行一次D)有语法错误
5.2.9对于for(表达式;;表达式3)可理解为(B)。
A)for(表达式;0;表达式3)
B)for(表达式;1;表达式3)
C)for(表达式;表达式1;表达式3)
D)for(表达式;表达式3;表达式3)
5.2.10以下不正确的描述是(B)。
A)break语句不能用于循环语句和switch语句外的任何其他语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。
D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
5.2.11若i为整型变量,循环语句for(i=2,i==0;) printf(“%d”,i--);的执行次数为(B)。
A)无限次B)0次C)1次D)2次
5.2.12以下叙述正确的是(C)。
A) for循环中设置fo(条件)break,当条件成立时中止程序执行。
B)for循环中设置fo(条件)continue,当条件成立时中止本层循环。
C) for循环中设置fo(条件)break,当条件成立时中止本层循环。
D) for循环中设置fo(条件)continue,当条件成立时暂停程序执行。
5.2.13下面关于for循环的正确描述是(D)。
A) for循环只能用于循环次数已经确定的情况。
B)for循环是先执行循环体语句,后判断表达式。
C)在for循环中,不能用break语句跳出循环体。
D) for循环的循环体语句中,可以包含多条语句。
5.2.14循环语句for(i=0,x=0; !xi<=5; i++);的执行次数为(B)。
A)5次B)6次C)1次D)无限
5.2.15以下程序段的输出结果是(D)。
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 81 B) 4284 C) 26 68 D) 28 70
5.2.16以下描述正确的是(C)。
A)goto语句只能用于推出多层循环
B)switch语句不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
5.2.17以下不是无限循环的语句是(A)
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.18下面程序段的输出结果是(D)。
int i,sum;
for(i=1;i<=10;i++) sum+=sum
printf(“%d\n”, i);
A)10B)9C)15D)11
5.2.19下面程序段的运行结果是(D)。
for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d”),x);
A) **3 B)##3 C) ##3 D) **3##4
##4 **4 **4##5 **5
**5 ##5
5.2.20执行语句for(i=1; i++<4; );后变量i的值是(C)。
A) 3 B)4C)5D)不定
2.3编程题
5.3.1输入一行字符,分别统计出其中字母、数字和其它字符的个数。
5.3.2求100~200之间不能被3整除也不能被7整除的数。
5.3.3求。
5.3.4求,直到某一项小于0.001时为止。
5.3.5用迭代法求。迭代[9]公式为:,要求迭代精度满足。
5.3.6假设x,y是整数,编写程序求xy的最后3位数,要求x,y从键盘输入。
5.3.7从键盘上输入10个整数,求其中的最大值和最小值。
5.3.8(1)判断一个数是否为素数。(2)输出3-100之间的所有素数。
5.3.9求解爱因斯坦数学题。有一条长度不多于1000步的阶梯,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,最后一阶都不剩,问总共有多少级阶梯?
5.3.10100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,求大、中、小马的数目,要求列出所有的可能。
5.3.11假设我国国民经济总值按每年8%的比率增长,问几年后翻番。
5.3.12编写程序,求1~99之间的全部同构[10]数。同构数是这样一组数;它出现在平方数的右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。
5.3.13编写程序,对数据进行加密。从键盘输入一个数,对每一位数字均加2,若加2后大于9,则取其除10的余数。如,2863加密后得到4085。
5.3.14从键盘输入n,打印n行倒等腰三角形,如n=4,则打印:
5.3.15打印如下的九九乘法表
题目解答
答案
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