c语言循环结构上机习题
- 格式:doc
- 大小:91.50 KB
- 文档页数:12
第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是(A)A)无限次B)有语法错,不能执行C) 一次也不执行D)执行1次2、t为int类型,进入下面的循环之前,t的值为0while(t=1){ …… }则以下叙述中正确的是(B)A) 循环控制表达式的值为0B)循环控制表达式的值为1C) 循环控制表达式不合法D)以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D)m!=14、有以下程序,程序运行后的输出结果是(C).main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D ).main(){int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n-—;printf(“%d",n);}}该程序段的输出结果是(B)A)987 B) 876 C) 8765 D) 98767、以下程序的输出结果是(B)main(){int num= 0;while(num<=2){num++;printf(“%d\n”,num);}}A) 1 B) 1 C)1 D)l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车〉,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1。
0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2。
题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出循环01:最大数写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。
输入39 28 5 63 18 27 0输出63测试:输入153 26 963 28 75 90 156 0输出963#include<iostream>using namespace std;int main(){int i,max=0;cin>>i;while(i!=0){if(i>max)max=i;cin>>i;}cout<<max<<endl;return 0;}循环02:素数输入正数n,判断n是否为素数。
若为素数则输出1,否则输出0。
(提示:素数是指只可以被1和其本身整除的正数(1除外))输入10输出0输入7输出1测试:输入9输出0#include<iostream>using namespace std;int main(){int n,i,d;cin>>n;for(i=2;i<n;i++){d=n%i;if(n%i==0)break;}if(n==i)cout<<"1"<<endl;elsecout<<"0"<<endl;return 0;}循环03:数列求和输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。
输入5输出1.56978输入4输出1.49286#include<iostream>using namespace std;int main(){int i,n;double s=0;cin>>n;for(i=1;i<=n;i++)s+=1.0/(3*i-2);cout<<s<<endl;return 0;}循环04:西瓜卖几天n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?说明:当西瓜个数为奇数时,卖一半为一半的整数,如当西瓜个数为5时,卖一半为卖2个。
难度(*)--考点:基本概念、判断循环次数1、C语言中下列叙述正确的是(D)A)不能使用do…while语句构成的循环B)do…while语句构成的循环,必须用break语句才能退出C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环2、对于下列程序片断,(A)int k=0;while(k=1) k++;则while循环的执行次数是A. 无限次B. 有语法错误,不能执行C. 一次也不执行D. 执行一次3、下面程序段(C)int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的是。
A )while 循环执行10 次B )循环是无限循环C )循环题语句一次也不执行D )循环体语句执行一次4、当执行以下程序段时(A)x=-1;do { x=x*x;} while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误5、若i为整型变量,则以下循环执行次数是(B):for( i = 2; i ==0;) printf(“%d”, i);A) 无限次B) 0次c) 1次D) 2次6、对for(表达式1; ; 表达式3)可理解为(B)A) for(表达式1; 0 ; 表达式3)B) for(表达式1; 1 ; 表达式3)C) for(表达式1;表达式1; 表达式3)D) for(表达式1;表达式3; 表达式3)7、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。
(A)main ( ){ int m=0,n=0;char c;while (( ) ! '\n'){if (c>='A' && c<='Z') m++;if (c>='a' && c<='z') n++;}}A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c)8、下面for 循环语句。
一、选择题1. 设有如下程序段,则下面描述正确的是int k=10;while (k=0) k=k-1;A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2. 下面程序段的运行结果是a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--;}pirntf(“%d, %d, %d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,13. 下面程序段的运行结果是。
int n=0;while(n<=2) n++; printf(“%d”,n);A.2 B.3 C.4 D.有语法错误4. 设有如下程序段,则描述正确的是。
t=0;while (printf(“*”)){t++; if(t<3) break;}A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价C.其中循环控制表达式是不合法的D.以上说法都不对5. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对等数时结束循环,请选择填空。
#include<stdio.h>int main(){int a,b,t;scanf("%d%d",&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d%d",&a,&b);}return 0;}A.!a=b B.a!=b C.a==b D.a=b6. 下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include<stdio.h>int main(){int m=0,n=0;char c;while(( )!='\n'){if(c>='a' && c<='z') n++;if(c>='A' && c<='Z') m++;}printf("%d\n",m<n? );return 0;}A.c= =getchar( ) B.getchar( ) C.c=getchar( ) D.scanf(“%c”,c)A.n:m B.m:n C.m:m D.n:n7. 下面程序的功能是将小写字母变成对应大写字母后的第二个字母。
c语言第5章练习题--循环结构程序设计难度(*)--考点:基本概念、判断循环次数1、C语言中下列叙述正确的是(D)A)不能使用do…while语句构成的循环B)do…while语句构成的循环,必须用break语句才能退出C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环2、对于下列程序片断,(A)int k=0;while(k=1) k++;则while循环的执行次数是A. 无限次B. 有语法错误,不能执行C. 一次也不执行D. 执行一次3、下面程序段(C)int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的是。
A )while 循环执行10 次B )循环是无限循环C )循环题语句一次也不执行D )循环体语句执行一次4、当执行以下程序段时(A)x=-1;do { x=x*x;} while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误5、若i为整型变量,则以下循环执行次数是(B):for( i = 2; i ==0;) printf(“%d”, i);A) 无限次B) 0次c) 1次D) 2次6、对for(表达式1; ; 表达式3)可理解为(B)A) for(表达式1; 0 ; 表达式3)B) for(表达式1; 1 ; 表达式3)C) for(表达式1;表达式1; 表达式3)D) for(表达式1;表达式3; 表达式3)7、下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。
(A)main ( ){ int m=0,n=0;char c;while (( ) ! '\n'){if (c>='A' && c<='Z') m++;if (c>='a' && c<='z') n++;}}A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c)8、下面for 循环语句。
c语言循环试题及答案C语言循环试题及答案1. 以下哪个选项是C语言中实现循环的关键字?A. switchB. caseC. whileD. do答案:C2. 写出一个使用for循环的程序段,计算1到100之间所有奇数的和。
```cint sum = 0;for(int i = 1; i <= 100; i += 2) {sum += i;}printf("The sum of odd numbers from 1 to 100 is %d", sum);```3. 以下哪个语句是正确的while循环的语法?A. while (condition) statementB. do statement while (condition)C. for (initialization; condition; iteration)D. if (condition) statement答案:A4. 假设有一个数组arr[10],以下哪个循环可以用来遍历这个数组?```cint i;for(i = 0; i < 10; i++) {// 遍历数组}```5. 如果要使用do-while循环打印出1到5的数字,以下哪个程序段是正确的?```cint i = 1;do {printf("%d ", i);i++;} while (i <= 5);```6. 以下哪个选项是break语句的正确用法?A. 用于跳出switch语句B. 用于跳出循环C. 用于进入循环D. 用于结束程序答案:B7. 写出一个使用while循环的程序段,计算1到10的乘积。
int product = 1;int i = 1;while(i <= 10) {product *= i;i++;}printf("The product of numbers from 1 to 10 is %d", product); ```8. 以下哪个选项是continue语句的正确用法?A. 跳过当前循环的剩余部分,开始下一次循环B. 用于跳出循环C. 用于进入循环D. 用于结束程序答案:A9. 假设有一个字符串str,以下哪个循环可以用来遍历这个字符串?```cchar str[] = "Hello";int i = 0;while(str[i] != '\0') {// 遍历字符串i++;}```10. 以下哪个程序段将打印出2到10之间的所有偶数?for(int i = 2; i <= 10; i += 2) { printf("%d ", i);}```。
第5章循环结构习题第6章数组习题一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式2.若有声明:int a[ 10];,则对a数组元素的正确引用是( )。
A)a[ 10]B)a[3.5]C)a(5)D)a[10-10]3.已知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)因为数组长度与初值的个数不相同,所以此语句不正确4.以下对二维数组a的正确声明是( ) 。
A)int a[3][];B)float a(3,4);C)double a[1][4];D)float a(3)(4);5.若有声明:int a[3][4];,则对a数组元素的非法引用是( )A)a[0][2* 1] B)a[1][3]C)a[4-2][0] D)a[0][4]二、填空题1.下面程序的输出结果是________。
#include <stdio. h>int main( ){int i,j=90,a[]={3,5,8,9,10};for(i= 1;i<3;i++)j-=a[i];printf("%d\n" ,j-50);return 0;}2.下面程序的输出结果是________。
#include <stdio. h>int main( ){int a[]={2,3,5,4},i;for(i=0;i<4;i++)switch( i%2){case 0:switch(a[i]%2){case 0:a[i]++ ; break;case 1:a[i]--;}break;case l:a[i]=O;for(i=0;i<4;i++)prinf(" %d" ,a[1);printf("\n");return 0;}3.下面程序的输出结果是________。
循环(13题)第1题:#include <stdio.h>void main(){因a,b都只能取0到9中的一个值,故用嵌套的for循环枚举下a,b取值的各种情况,根据每种情况计算出AB*BA的值即a*a*10+a*b+(b*b+b*a*10)*10将其与403比较,若相等则当前a b 的取值符合要求,打印出来int a,b,k;int plu = /**/ 403 /**/;由下面的if(k==plu)可知此处存放403for(a=1; a<10; a++)for(b=1; b<10; b++){k = /**/ a*a*10+a*b+(b*b+b*a*10)*10 /**/ ;k存放AB*BA的值if(k==plu) printf("A = %d, B = %d\n",a,b);打印符合条件的a b的值}}第2题:牛顿迭代:设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y- f(x0)= f'(x0)*(x-x0),求出L与x轴交点的横坐标 x1=x0-f(x0)/f'(x0),称x1为r的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴的横坐标x2=x1-f(x1)/f'(x1)称x2为r的二次近似值,重复以上过程,得r的近似值序列{Xn},其中Xn1 =Xn-f(Xn)/f'(Xn),称为r的n1次近似值,当相邻两次的根差值极小时,则找到f(x)=0的根。
#include <stdio.h>#include <math.h>/**/ void main() /**/{ float x,x0,f,f1;x=1.5;do{ x0=x; x0存放上次求得的近似值f=((2*x0-4)*x0+3)*x0-6; f存入函数值即f(x0)f1=(6*x0-8)*x0+3; f1存入f’(x0)即导数值x=x0-f/f1; 求出下一个近似值}/**/ while /**/(fabs(x-x0)>=1e-6); do while语句的结构,判断当前近似值与上一个近似值差值是否极小,若是则找到所要的根,退出循环,否则再次执行循环体,计算下一个近似值printf("the root is: %.2f\n",x);}第3题:#include <stdio.h>void main(){ double pi=0;long i, sign=1;因累加项有正负号的变换,用乘以sign来进行控制for(i=1;i<=10001;i+=2){pi+=1.0*sign/i;sign=/**/ -sign /**/;使sign在正负1之间间替变化}pi*=/**/ 4 /**/;前面for循环算出的是1-1/3+1/5…再乘以4即得到pi printf("%f\n",pi);}第4题:#include <stdio.h>void main(){int n,a,b;/**/ 由下面while循环分析可知a,b为用来计数的变量,故需初始化为0 a=0;b=0;/**/scanf("%d",&n); 先输入一个值给nwhile(/**/ n!=0 /**/) 若n不为0则执行循环体,否则退出{if(n>0) a++; a记录n>0的个数else /**/ b++; /**/ 相应的b记录n<0的个数scanf("%d",&n); 让用户输入下一个数}printf("Positive integer: %d, negative integer: %d\n",a,b);getch();}第5题:#include <stdio.h>#include <conio.h>int prime(int n) 该函数判断n是否为素数,若是返回1否则返回0{ int k,flag=1; 从上下文判断 flag为1代表n为素数,为0不是素数for(k=2; k<=n/2+1; k++)if (n%k==0) { flag=/**/ 0 /**/ ; break;} 找到一个在k和n/2+1之间的数能被n 整除,则说明n不是素数,将flag置为0,退出循环return flag;}void main(){ int num, a;clrscr();do{ printf("Please input an even number:");scanf("%d", &num);}while(num<=6||num%2==1);该while循环确保用户输入的n值是大于6的偶数要证明的是一个偶数num是两个质数之和,故假设其中一个数是a,则另外一个数就是num-a了,接着只要调用prime函数,看看prime(a)和prime(num-a)是否都为1即a和num-a是否都为质数,若是则得证,将结果输出for(a=2;a<=num/2+1;a++)if(prime(a) && prime(/**/ num-a /**/))printf("\n %d = %d + %d ", num, a, num-a);}第6题:判断点是否在已知的圆内补充程序Ccon 063.c,使其中的fun( )函数判断输入的一个点{x,y}是否位于坐标在原点,半径为r{r>0}的圆内.#include <stdio.h>#include <math.h>int fun(/**/ float r /**/,float x,float y)观察函数体,可知r为被定义,故此处应写上对形参r的声明{int bIn;bIn = /**/ sqrt(x*x+y*y) /**/ < r ; 若点在圆内则bIn的值为1,否则为0return bIn;}main(){float r=-1,x,y;int bIn;while(r<0)该while循环确保用户输入的值为大于0的数值{ printf("Please input radius r (r>0):\n");scanf("%f", &r);}printf("Please input the dot(x,y):\n"); scanf("%f%f",&x,&y); bIn = fun(r,x,y); if(bIn == 1)printf("in the circle!\n"); elseprintf("out of the Circle!\n"); getch();} 第7题:补充程序ccon072.c ,计算()!!!m P n m n =-,其中m,n 为整数且m>n>=0。
一、选择题1.以下叙述正确的是A: do-while 语句构成的循环不能用其它语句构成的循环来代替。
B: do-while 语句构成的循环只能用break 语句退出。
C: 用do-while 语句构成的循环,在while 后的表达式为非零时结束循环。
D: 用do-while 语句构成的循环,在while 后的表达式为零时结束循环。
2.下面有关for 循环的正确描述是A: for 循环只能用于循环次数已经确定的情况B: for 循环是先执行循环体语句,后判定表达式C: 在for 循环中,不能用break 语句跳出循环体D: for 循环体语句中,可以包含多条语句,但要用花括号括起来3.C 语言中while 和do-while 循环的主要区别是A: do-while 的循环体至少无条件执行一次B: while 的循环控制条件比do-while 的循环控制条件严格C: do-while 允许从外部转到循环体内;D: do-while 的循环体不能是复合语句;4.下列关于switch 语句和break 语句的结论中,正确的是A: break 语句是switch 语句中的一部分B: 在switch 语句中可以根据需要使用或不使用break 语句C: 在switch 语句中必须使用break 语句D: switch 语句是break 语句的一部分5..以下正确的描述是A: continue 语句的作用是结束整个循环的执行;B: 只能在循环体内和switch 语句体内使用break 语句;C: 在循环体内使用break 语句或continue 语句的作用相同;D: 从多层循环嵌套中退出时,只能使用goto 语句;6.语句while(!e);中的条件!e 等价于A: e==0B: e!=0C: e!=1D: ~e7.在以下给出的表达式中,与while(E)中的E不等价的表达式是A: !E=0B: E>0||E<0C: E==0D: E!=08.在C 语言中,当do-while 语句中的条件为()时,结束该循环。
1编写一个程序;求100199********-++-+- 之值.. 2编写一个程序;求s=1+1+2+1+2+3+…+1+2+3+…+n 的值..3编写一个程序;用户输入一个正整数;把它的各位数字前后颠倒一下;并输出颠倒后的结果..4编写一个程序;求出200到300之间的数;且满足条件:它们三个数字之积为42;三个数字之和为12..5编写一个程序;求出满足下列条件的四位数:该数是个完全平方数;且第一、三位数字之和为10;第二、四位数字之积为12..6编写一个程序;求e 的值..7编写一个程序;求满足如下条件的最大的n :8某人摘下一些桃子;卖掉一半;又吃了一只;第二天卖掉剩下的一半;又吃了一只;第三天、第四天、第五天都如此办理;第六天一看;发现就剩下一只桃子了..编写一个程序;采用迭代法问某人共摘了多少只桃子..(9) 输入一批非0数;直到输入0时为止;计算其中奇数的平均值和偶数的乘积..东师大;01年10求一组整数中的正数之积与负数之和;直到遇到0时结束..东师大;03年11输入一组实数;求前10个正数的平均值..东师大;02年12编程求1~200中能被2;3;5除余1的前10个整数..东师大;02年13输入100个整数;统计这些数中能被3或5整除数所占的百分比..东师大;02年14计算并输出200—600中能被7整除;且至少有一位数字是3的所有数的和..东师大;01年15输出1~999中能被5整除;且百位数字是5的所有整数..东师大;04年16设N 是一个四位数;它的9倍恰好是其反序数例如:1234的反序数是4321;求N 值..东师大;03年\17有这样一个三位数;该三位数等于其每位数字的阶乘之和;即abc=a+b+c..如:145=1+4+5东师大;04年18编写程序求出满足下列条件的四位数:该数是个完全平方数;千位、十位数字之和为10;百位、个位数字之积为12..东师大;05年19已知abc+cba=1333;其中a;b;c 均为一位数;编写一个程序求出abc分别代表什么数字..东师大;05年20100匹马驮100担货;大马一匹驮3担;中马一匹驮2担;小马两匹驮1担..试编写程序计算大、中、小马的数目..东师大;06年21求1~100之间数的每位数的乘积大于每位数的和的数..东师大;07年22一个正整数与3的和是5的倍数;与3的差是6的倍数;编写一个程序求符合条件的最小数..东师大;08年23 已知平方根迭代公式;设初值x=a/2..编写程序输入a值计算其平方根..迭代的结束条件是x n+1-xn<10-15;结果要求输出15位有效位数24.有一口深度为h米的水井;井底有一只青蛙;它每天白天能够沿井壁向上爬m米;夜里则顺井壁向下滑n米;若青蛙从某个早晨开始向外爬;试编写一个函数:对于任意指定的h;m;n值均为自然数;计算青蛙多少天能够爬出井口并简要说明程序实现的基本思想..南师大09P141 16质数数的反序输出。
.. 第5章循环结构程序设计练习题1. 单项选择题(1)语句while (!e);中的条件!e等价于 A 。
A. e==0B. e!=1C. e!=0D. ~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章循环结构程序设计35A. 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___。
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,amin);}7、使用循环语句输出以下图形8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。
分析:这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:100=x*5+y*3+z/3100=x+y+z这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1) x的取值范围为1~202) y的取值范围为1~333) z的取值范围为3~99,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。
一、单选题1、计算1!+2!+3!+4!+5!编程如下,程序中下划线处应填写#include <stdio.h>void main(){int i;int t= z s=;for(i=l;i<6;i++){t=t*i;s=s+t;)printf("l!+2!+3!+4!+5!=%d\n"z s);)A.l 1B.O 0C.O 1D.l 0正确答案:D2、下面代码段的输出是一int k,m;for(k=0;k<10;k++ ){if(m>50) continue;m=k*k;)printf("%d,%d\n”,k,m);A. 10,64B.9,81C.10,81D.8,64正确答案:A3、对于以下代码:int i;for(i=0;i<10;i++)pnntf("%d",i);for循环结束后,i的值是—A.llB.10C.9D.i不再存在了正确答案:B4、对于以下代码:int i=6;do{printf("%d", i-);}while(i-);正确的是—A,输出6420-2-4…,程序无法停机B,输出6420C.输出6420-2D输出642正确答案:A5、对于以下代码:int i=6;do{printf("%d", i-);}while(i);最后一个输出的值是—A.2B.3C.OD.l正确答案:D6、在代码:while(e)中,e等价于_A.e == 0B.e != 1C.e == 1D.e!=0正确答案:D7、在代码:while© |1)中,e等价于_A.e!=0B.e == 1C.e取任何值D.e == 0正确答案:C8、设有程序段int k=5;while(k=0) k=k-l;则下面描述中正确的是A,循环体语句一次也不执行B.while循环执行5次C.循环体语句执彳亍一次D彳盾环是无限循环正确答案:A9、下面程序段的运行结果是int n=0;while(n++<=2);printf("%d",n);A.有语法错B.2C.4D.3正确答案:C10、若有如下语句int x=3;do{ printf("%d\n"z x -=2);} while(!(-x));则上面程序段—A,是死循环B,输出的是1C.输出的是3和0D,输出的是1和・2正确答案:D11、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空,答案是#includemain()int n,sum=0;n=2345;sum=sum+(n%10)*(n%10);n=_;}while(n);printf("sum=%d"/sum);}A.n/10B.n%10C.n/100D.n/1000正确答案:A12、下面程序段—for(t=l;t< = 100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);)A.最多允许输出100个非负整数B.x>=0时什么也不输出C.printf函数永远也不执行D・当x<0时整个循环结束正确答案:A13、下列运算符中结合方向与其他不同的是A.+=B.< =c.>D.+正确答案:A14、下列运算符中结合方向与其他不同的是A.&&B.?:c.||D.+正确答案:B15、以下代码输出结果是—int x=0,y=20,z=30 ;if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.代码错误,不能输出B.y=50C.y=20D,不确定正确答案:B16、以下代码输出结果是—int x=0z y=20,z=30if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.y=20B.代码错误,不能执行C.y=50D,不确定正确答案:B17、下列程序段的输出结果是一int a=3,b=15;a+=b;b=b/2;}while(b>l);printf("%d\rT,a);正确答案:28二、多选题1、在c语言中,叙述正确的是()。
c语言循环练习题C语言循环练习题C语言是一门广泛应用于计算机科学领域的编程语言,掌握好循环结构是学习C语言的重要一步。
循环结构允许我们重复执行一段代码,这在处理大量数据或需要重复操作的情况下非常有用。
接下来,我们将通过一些C语言循环练习题来巩固对循环结构的理解和应用。
1. 打印九九乘法表九九乘法表是一个经典的练习题,可以通过嵌套循环来实现。
我们可以使用两个循环,一个用于控制行数,另一个用于控制列数。
在每个位置上,将行数和列数相乘即可得到结果。
2. 计算阶乘阶乘是一个常见的数学运算,在C语言中可以使用循环结构来实现。
我们可以通过一个循环,从1开始逐步累乘,直到达到所需的数值。
可以使用一个变量来保存累乘的结果。
3. 判断素数素数是只能被1和自身整除的大于1的自然数。
判断一个数是否为素数可以通过循环结构来实现。
我们可以从2开始,逐个尝试除以每个小于该数的自然数,如果存在能整除的数,则该数不是素数。
4. 斐波那契数列斐波那契数列是一个经典的数列,在该数列中,每个数都是前两个数的和。
可以通过循环结构来实现斐波那契数列的计算。
可以使用两个变量来保存前两个数的值,并通过循环不断更新这两个变量的值。
5. 求最大公约数求最大公约数是一个常见的数学问题,可以通过循环结构来实现。
可以使用辗转相除法来求解最大公约数,即通过不断取两个数的余数,将较大的数替换为余数,直到余数为0。
6. 猜数字游戏猜数字游戏是一个简单而有趣的游戏,可以通过循环结构来实现。
可以随机生成一个目标数字,并让用户通过输入猜测的数字来进行游戏。
通过循环判断用户的猜测是否正确,并根据猜测的结果给出相应的提示。
通过以上的练习题,我们可以巩固对C语言循环结构的理解和应用。
循环结构在编程中非常重要,它可以帮助我们处理大量的数据和重复的操作。
通过不断练习和实践,我们可以逐渐掌握循环结构的技巧,并能够灵活运用到实际的编程项目中。
总结C语言循环练习题是提高编程技能的有效途径之一。
c语言循环题库一、在C语言中,以下哪个循环结构不是基于条件的循环?A. for循环B. while循环C. do-while循环D. goto语句(答案)二、以下哪个选项不是for循环的控制表达式?A. 初始化表达式B. 循环条件表达式C. 循环体D. 迭代表达式(答案:C是循环体,不是控制表达式)三、在C语言的while循环中,循环条件通常是一个什么类型的表达式?A. 赋值表达式B. 关系表达式或逻辑表达式(答案)C. 算术表达式D. 逗号表达式四、以下哪个选项描述的do-while循环的特点是不正确的?A. 循环体至少执行一次B. 循环条件在循环体之后判断C. 循环条件为真时,循环继续执行D. 循环条件通常是一个赋值表达式(答案)五、在C语言中,如何跳出当前所在的循环体?A. 使用continue语句B. 使用break语句(答案)C. 使用return语句D. 使用goto语句六、以下哪个选项不是使用循环结构时需要注意的问题?A. 循环条件的设置B. 循环体的设计C. 循环变量的初始化(答案:虽然重要,但相比其他选项更偏向于编程习惯)D. 避免无限循环的发生七、在嵌套循环中,如何跳出最外层的循环?A. 使用多次break语句B. 在最外层循环中使用goto语句配合标签跳出(答案)C. 使用continue语句D. 无法直接跳出,需要重新设计循环结构八、以下哪个选项描述的for循环的语法结构是不正确的?A. for(初始化表达式; 循环条件表达式; 迭代表达式) 循环体;B. for(循环条件表达式; 初始化表达式; 迭代表达式) 循环体;(答案)C. for(;;) 循环体; // 相当于一个无限循环D. for(初始化表达式; ; 迭代表达式) { 如果条件满足则执行循环体; } // 需要内部判断条件九、在C语言中,continue语句的作用是?A. 跳出当前循环体,继续执行下一轮循环(答案,但描述略有歧义,实际上是结束当前迭代,进入下一次迭代条件判断)B. 跳出当前函数C. 跳出所有循环D. 结束整个程序十、以下哪个选项不是循环结构在程序设计中的应用场景?A. 重复执行相同的操作直到满足某个条件B. 遍历数组或集合中的每个元素C. 实现递归算法(答案)D. 计算累加、累乘等需要重复计算的问题。
whilec语言练习题While循环在C语言中是一种常用的循环结构,可以重复执行一组语句,直到指定的条件不再为真。
在这篇文章中,我将为您介绍一些用于练习的C语言While循环题目。
1. 输出1到10的整数:```c#include <stdio.h>int main() {int i = 1;while (i <= 10) {printf("%d ", i);i++;}return 0;}```上面的代码使用了While循环来打印出从1到10的整数。
循环变量i的初始值为1,每次循环后递增1,直到i的值大于10时循环结束。
2. 计算1到100的和:```c#include <stdio.h>int main() {int sum = 0;int i = 1;while (i <= 100) {sum += i;i++;}printf("1到100的和为:%d\n", sum);return 0;}```上述代码使用了While循环来计算1到100的和。
变量sum初始化为0,然后在循环中每次将i的值累加到sum中,最后输出sum的结果。
3. 判断一个数是否为质数:```c#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if (num <= 1) {return false;}int i = 2;while (i * i <= num) {if (num % i == 0) {return false;}i++;}return true;}int main() {int num;printf("请输入一个整数:"); scanf("%d", &num);if (isPrime(num)) {printf("%d是质数\n", num);} else {printf("%d不是质数\n", num);}return 0;}```上述代码通过While循环来判断一个数是否为质数。
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的所有可能组合,最后得到问题的解。
数据要求
问题中的常量:无
问题的输入:无
问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法
1.初始化为1;
2.计算x循环,找到公鸡的只数;
3.计算y循环,找到母鸡的只数;
4.计算z循环,找到小鸡的只数;
5.结束,程序输出结果后退出。
算法细化
算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。
步骤2和3是按照步长1去寻找公鸡和母鸡的个数。
步骤4的细化
4.1 z=1
4.2 是否满足百钱,百鸡
4.2.1 满足,输出最终百钱买到的百鸡的结果
4.2.2 不满足,不做处理4.3 变量增加,这里注意步长为3 程序代码如下
#include "stdio.h"
main()
{
int x,y,z;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z+=3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/ printf("cock=%d,hen=%d,chicken=%d\n ",x,y,z);
}
}
}
}
分析
程序运行结果如下:
cock=4,hen=8,chicken=78
cock=8,hen=11,chicken=81
cock=12,hen=4,chicken=84
对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。
请同学们自己分析二重
循环和三重循环的运行次数,做为练习自己调试这一方法。
程序修改:
1、统计使用三重循环的循环次数
2、使用二重循环完成,并统计循环次数
#include <stdio.h>
int main()
{
int i1,i2,j1,j2,a,b,c,d;
for(i1=11;i1<=99;i1++)
for(j1=i1+1;j1<=99;j1++)
{a=i1/10;
b=i1%10;
c=j1/10;
d=j1%10;
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&& c!=d)
{ i2=b*10+a;
j2=d*10+c;}
if(i1*j1==i2*j2)
{
printf("%d*%d=%d*%d\t",i1,j1,i2,j2);
} }
return 0;
}
#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=1; a<=9; a++)
for(b=1; b<=9; b++)
for(c=a+1; c<=9; c++)
for(d=1; d<=9; d++)
d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+ c))
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&& (b!=d)&&(c!=d))
printf("%d%d*%d%d=%d%d*%d%d\t" ,a,b,c,d,b,a,d,c);
}
}
#include<stdio.h>
main()
{
int i, n,j=0;
printf("请输入一个整数n:");
scanf("%d" ,&n);
if(n>=1&&n<=100)
{
printf("1~100间可以被%d整除的数是:\n",n);
for(i=n;i<=100;i+=n)
{ printf("%-3d",i);
j++;
if(j%5==0)putchar('\n');
}}
else
printf("输入错误!");
}
#include<stdio.h>
int main()
{int x,y;
for(x=1;x<=9;x++)
{y=3*x*x+2*x+1;
printf("f(%d)=%d\n",x,y);}
}
#include<stdio.h>
int main()。