作者 zhangweina
单位 赤峰学院
在for(表达式1;表达式2;表达式3)中,如果表达式2为空,表示循环条件默认为真。(T)
作者 基础教研室
单位 湖南工程学院计算机与通信学院
for语句循环体可能一次也不执行。(T)
作者 王从银
单位 吉首大学
continue 只能用于循环体中。(T)
作者 王从银
单位 吉首大学
continue 不是结束本次循环,而是终止整个循环的执行。(F)
作者 王从银
单位 吉首大学
在多层循环中, 一个break语句只向外跳一层。(T)
作者 徐镜春
单位 浙江大学
运行包含以下代码段的程序将可能进入死循环。(F)
int i = 1; while(i>0){ i++; printf("%d ",i); }
作者 王从银
单位 吉首大学
do-while循环的while后的分号可以省略。(F)
作者 王从银
单位 吉首大学
do-while循环至少要执行一次循环语句。(T)
作者 颜晖
单位 浙大城市学院
以下两个程序段等价,其功能是计算 s=1+2+...+10。(T)
/* 程序段A*/
s = 0;
i = 1;
while(i <= 10){
s = s + i;
i++;
}
/* 程序段B */
s = 0;
i = 1;
while(1){
if(i > 10){
break;
}
s = s + i;
i++;
}
作者 王从银
单位 吉首大学
C语言的三种循环不可以互相嵌套。(F)
作者 王秀
单位 福州大学
下面的这个循环的循环次数是(B)。for(int i=0,j=10; i=j=10; i++,j--)
A.语法错误,不能执行
B.无限次
C.10
D.1
作者 颜晖
单位 浙江大学
下列程序段的输出结果是(A)。
int main(void)
{
for(int i = 1; i < 6; i ++) {
if( i % 2 != 0) {
printf("#");
continue;
}
printf("*");
}
printf("\n");
return 0;
}
A.#*#*#
B.#####
C.*****
D.*#*#*
作者 C课程组
单位 湖南工程学院计算机与通信学院
下列程序段中,非死循环的是(A)。
A.
int i=100;
while(1)
{ i=i%100+1;
if(i>=100)
break;
}
B.
int k=0;
do{
++k;
}while(k>=0);
C.int s=10; while(s) s++;
D.
for( ; ; )
作者 黄龙军
单位 绍兴文理学院
下面有关for循环的正确描述是(D)。
A.for循环只能用于循环次数确定的情况
B.for循环先执行循环体语句,后判断循环条件
C.在for循环中,不能用break语句跳出循环体
D.for循环的循环体可以包含多条语句,但多条语句必须构成复合语句
作者 王才善
单位 兰州交通大学
下面程序计算100之内能被3整除的整数之和。阅读程序,从4个选项中选出合适的选项填到【1】处,使程序功能完整。(C)
#include <stdio.h> int main() { int i, sum = 0; for (i = 1; i < 100; i++) { if (i % 3) 【1】; sum += i; } printf("%d\n", sum); return 0; }
A.break
B.return
C.continue
D.return 0
作者 颜晖
单位 浙大城市学院
C语言中while和do-while循环的主要区别是(A)。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
作者 C课程组
单位 湖南工程学院计算机与通信学院
下列程序段执行后s值为_C_。
int i=5, s=0;
while(--i!=0){
if (i%2==1)
continue;
s+=i;
}
A.15
B.9
C.6
D.4
作者 C课程组
单位 湖南工程学院计算机与通信学院
要求通过 while 循环不断输出字符,当读入字母 N 时结束循环。若变量已正确定义,下列程序段正确的是(C)。
A.
while ((ch = getchar()) == 'N')
printf("%c", ch);
B.
while (ch = getchar() == 'N')
printf("%c", ch);
C.while ( (ch = getchar( )) != 'N')
printf("%c", ch);
D.while (ch = getchar() != 'N')
printf("%c", ch);
作者 CMY
单位 集美大学
以下有关C语言while循环和do-while循环的描述中正确的是(C)
A.while和do-while结束循环只能靠break语句
B.do-while的循环控制条件比while的循环控制条件严格
C.do-while的循环体可以无条件执行一次
D.在任何情况下,while循环的程序都不能用do-while循环来实现
作者 gllypx
单位 桂林学院
若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是?(B)
for (i=5;i;i--)
for (j=0;j<4;j++)
{......} //内循环体
A.25
B.20
C.24
D.30
7-1 打印沙漏
作者 陈越
单位 浙江大学
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
*****
***
*
***
*****
2
解答:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
char ch;
cin>>n>>ch;
int h = (int)sqrt((n+1)/2);
for(int i = h,z = 0;i>=1;i--,z++)
{
for(int j = 1;j<=z;j++)
cout<<" ";
for(int k = 1;k<=2*i-1;k++)
cout<<ch;
cout<<endl;
}
for(int i = 2,z=h-1;i<=h;i++,z--)
{
for(int j = 1;j<=z-1;j++)
cout<<" ";
for(int k = 1;k<=2*i-1;k++)
cout<<ch;
cout<<endl;
}
cout<<n-(2*h*h-1)<<endl;
return 0;
}
7-2 念数字
作者 翁恺
单位 浙江大学
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu
字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234
。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si
。
输入样例:
-600
输出样例:
fu liu ling ling
解答:
#include<stdio.h>
int main()
{
int a[100000] = {0}, len = 0;
int n,i;
scanf("%d", &n);
if (n < 0) {
printf("fu ");
n = -n;
}
while (n > 0){
a[len] = n % 10;
n = n / 10;
len++;
}
if (len != 0) {
for (i = len - 1; i >= 0; i--) {
switch (a[i]) {
case 0: printf("ling"); break;
case 1: printf("yi"); break;
case 2: printf("er"); break;
case 3: printf("san"); break;
case 4: printf("si"); break;
case 5: printf("wu"); break;
case 6: printf("liu"); break;
case 7: printf("qi"); break;
case 8: printf("ba"); break;
case 9: printf("jiu"); break;
}
if (i != 0)
printf(" ");
}
printf("\n");
}
else
printf("ling\n");
return 0;
}
7-3 求整数段和
作者 杨起帆
单位 浙大城市学院
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X
的格式输出全部数字的和X
。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int count=0;
int sum=0;
if(a>b)
{
int temp=a;
a=b;
b=temp;
}
for(int i=a;i<=b;i++)
{
count++;
cout<<setw(5)<<setfill(' ')<<i;
if(count%5==0)
{
cout<<endl;
}
sum=sum+i;
if(i==b)
{
cout<<endl;
}
}
cout<<"Sum = "<<sum<<endl;
return 0;
}
7-4 就不告诉你
作者 CHEN, Yue
单位 浙江大学
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
输入格式:
输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。
输出格式:
在一行中倒着输出 A 和 B 的乘积。
输入样例:
5 7
输出样例:
53
解答:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c=a*b;
int flag=0;
if(c==0)
{
cout<<0;
}
while(c>0)
{
int x=c%10;
if(x==0)
{
if(flag==1) cout<<x;
}
else
{
if(flag==0) flag=1;
cout<<x;
}
c=c/10;
}
return 0;
}
7-5 Cassels方程
作者 陈越
单位 浙江大学
Cassels方程是一个在数论界产生了巨大影响的不定方程:x2+y2+z2=3xyz。该方程有无穷多自然数解。
本题并不是要你求解这个方程,只是判断给定的一组 (x,y,z) 是不是这个方程的解。
输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出 3 个正整数 0<x≤y≤z≤1000。
输出格式:
对于每一组输入,如果是一组解,就在一行中输出 Yes
,否则输出 No
。
输入样例:
2
1 1 1
5 6 7
输出样例:
Yes
No
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y,z;
cin>>x>>y>>z;
if(x*x+y*y+z*z==3*x*y*z)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
7-6 找出三位水仙花数
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
输入格式:
输入在一行中给出两个正整数M和N(100≤M≤N≤999)。
输出格式:
顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。
如果M或者N不符合题目的要求,则输出Invalid Value.
。
输入样例1:
100 400
输出样例1:
153
370
371
输入样例2:
500 600
输出样例2:
输入样例3:
990 101
输出样例3:
Invalid Value.
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
int a,b,c;
if(m>=100&&n<=999&&m<=n)
{
for(int i=m;i<=n;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(a*a*a+b*b*b+c*c*c==i)
{
cout<<i<<endl;
}
}
}
else
{
cout<<"Invalid Value."<<endl;
}
return 0;
}
7-7 统计字符[2]
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输入N个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入格式:
输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。
输出格式:
在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。
输入样例:
10
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1
解答:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,b=0,c=0,d=0,e=0;
cin>>n;
char a;
for(int i=0;i<=n;i++)
{
a=getchar();
if((a<='z'&&a>='a')||(a<='Z'&&a>='A'))
{
b++;
}
else if(a==' '||a=='\n')
{
c++;
}
else if(a>='0'&&a<='9')
{
d++;
}
else
{
e++;
}
}
cout<<"letter = "<<b<<", blank = "<<c-1<<", digit = "<<d<<", other = "<<e<<endl;
return 0;
}