首页 > 编程语言 >c/c++零基础坐牢第六天

c/c++零基础坐牢第六天

时间:2023-04-22 11:23:38浏览次数:34  
标签:语句 循环体 int c++ 坐牢 第六天 while 循环 include

c/c++从入门到入土(6)

开始时间2023-04-20 19:23:57

结束时间2023-04-22 11:06:28

 前言:在解决实际问题中,我们会需要重复执行一些已知的操作,如级数求和、穷举或迭代求和。无论次数已知或未知,这都是选择结构和顺序结构难以解决的,这时,我们便引入循环控制结构,其中包括次数已知的计数控制循环和次数未知由已知条件控制的条件控制循环,下面我们一起来看看吧!以下是自制思维导图参考于苏小红C语言程序设计(第四版):

 

 作业六 循环结构

【C0114】有以下程序段
int  k = 10 ;
while( k = 0 ) k = k - 1 ;
则下面描述中正确的是_______。
A.while循环执行10次

B.循环是无限循环

C.循环体语句一句也不执行

D.循环体语句执行一次

答案:C

体会:while语句中的控制表达式是在执行循环体之前执行的。其执行过程如下:(1)计算循环控制表达式;(2)如果循环控制表达式为真,那么就执行循环体中的语句,并返回步骤(1);(3)如果循环控制表达式为假,就退出循环,执行循环体后面的语句。为了使程序易于维护,建议即使循环体内只有一条语句,也将其用花括号括起来。这是因为当需要在循环体中增加语句是,如果忘记加上花括号,那么仅while后面的第一条语句会被当做循环体中的语句来处理,从而导致逻辑错误。

C0115】有以下程序段
int  x = 0 , s = 0 ;
while( !x != 0 )  s += ++x ;
printf( "%d" , s ) ;
则_______。
A.运行程序段输出0

B.运行程序段输出1

C.程序段中的控制表达式是非法的

D.程序段执行无限次

答案:B

体会:首先本题中x=0,s=0,在循环控制表达式中x!=0为0,加!为1,则进入语句序列,s要加上一个++x,++x先加后用为1,则最后输出s的基本整型为1.

【C0116】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#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 = b

答案:B

体会:很明显if语句为控制数从小到大排序输出,那么while的作用是找出那一对相对数结束循环,即当a与b不相等时循环进行,a与b相等时结束循环。

【C0117】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。
#include<stdio.h>
int  main( ){
  int  a , max = 0 ;
  scanf( "%d" , &a ) ;
  while(_______){
    if( max < a )
      max = a ;
    scanf( "%d" , &a ) ;
  }
  printf( "%d" , max ) ;
  return  0 ;
}
A.a == 0

B.a

C.!a == 1

D.!a

答案:B

体会:程序功能是输出一批正整数中最大值,并且题面明显给出输出0结束循环,while循环内为找最大值的过程,循环内有scanf()输入函数,当我们输入0时,下一个循环的控制表达式就会结束, 即循环表达式为0结束,即表达式内为a结束。

【C0118】C语言中while和do-while循环的主要区别是_______。
A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

答案:A

体会:do-while语句中的循环控制表达式是在执行循环体之后测试的。do-while语句的执行过程如下:(1)执行循环体中的语句;(2)计算循环控制表达式中的值;(3)如果循环控制表达式的值为真,那么返回步骤(1);如果循环控制表达式为假,就退出循环,执行循环体后面的语句。可见,对do-while语句来说,由于是先执行循环体后计算并判定循环控制条件,所以循环体内的语句将至少被执行一次。

【C0119】下面程序的运行结果是_______。
#include<stdio.h>
int  main( ){
  int  a = 1, b = 10 ;
  do{
    b -= a ;
    a++ ;
  }
  while( b-- < 0 ) ;
  printf( "a=%d,b=%d\n" , a , b ) ;
  return  0 ;
}
A.a=3, b=11

B.a=2, b=8

C.a=1, b=-1

D.a=4,b=9

答案:B

体会:首先看循环控制表达式,b--<0先用后减,在b若小于零便继续循环,若b大于零退出循环,在第一次循环执行后a=2,b=9,很明显b大于零退出循环,但进行b--操作b此时的值为8.

【C0120】若i为整型变量,则以下循环执行次数是_______。
for( i = 2 ; i == 0 ; ) printf( "%d" , i-- ) ;
A.无限次

B.0次

C.1次

D.2次

答案:B

体会:for语句使用灵活频率最好的语句,一般形式为for(初始化表达式;循环控制表达式;增值表达式){语句序列},初始化表达式的作用是为循环控制变量初始化,即赋初值,它决定了循环起始条件;循环控制表达式是循环控制条件,准确地说是控制循环继续执行的条件,当这个表达式的值为真(非0)时继续重复执行循环,否则结束循环,执行循环体后面的语句,因此它也决定了循环何时才能结束;增值表达式的作用是每执行一次循环后将循环控制变量增值,即定义每执行一次循环后循环控制变量如何变化。在每次(包括第一次)循环体被执行之前,都要对循环控制条件执行一次。每次循环体执行完以后,都要执行一次增值表达式。注意!如何对循环变量进行增值,决定了循环的执行次数,如果在循环体内再次改变这个变量的值,将改变循环正常执行的次数。

【C0122】有以下程序
#include<stdio.h>
int  main( ){
  int  i ;
  for( i = 1 ;  ; i++ ) ;
  printf( "%d\n" , i ) ;
  return  0 ;
}
则下面描述中正确的是_______。
A.输出1

B.输出2

C.输出3

D.死循环

答案:D

体会:没有循环控制表达式会陷入死循环。

【C0123】for循环语句:for( 表达式1 ; 表达式2 ; 表达式3 )语句,以下叙述正确的是_______。
A.for语句中的3个表达式一个都不能少

B.for语句中的循环体至少要执行一次

C.for语句中的循环体可以是一个复合语句

D.for语句只能用于循环次数已经确定的情况

答案:C

【C0124】关于break和continue,以下说法正确的是_______。
A.break语句只应用在循环体中

B.continue语句只应用在循环体中

C.break是无条件跳转语句,continue不是

D.break和continue语句的跳转范围不够明确,容易产生错误

答案:B

体会:continue语句和break语句都可用于对循环进行内部控制,但二者对流程的控制效果不同。当执行循环体遇到break语句时,循环将立即终止,从循环语句后的第一条语句开始继续执行;当循环体中遇到continue语句时,程序将跳过continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。注意!在嵌套循环的情况下,break语句和continue语句只对包含它们最内层的循环语句起作用,不能用break语句跳出多重循环。

【C0121】下面程序的功能是计算1到10之间的奇数之和及偶数之和,请完善程序。
#include<stdio.h>
int main(){
  int a,b,c,i;
  a=c=0;
  for(i=0;i<=10;i+=2){
    a+=i;      
    b=i+1;
    c+=b ;
  }
  printf("sum of the even = %d\n",a) ;
  printf("sum of the odd = %d\n",c-11) ;
  return 0 ;
}
【C0125】下面程序的运行结果是1,2,0。
#include<stdio.h>
#include<math.h>
int  main( ){
  int  a = 1 , b = 2 , c = 2 , t ;
  while( a < b < c ){
    t = a ;
    a = b ;
    b = t ;
    c -- ;
  }
  printf( "%d,%d,%d\n" , a , b , c ) ;
  return  0 ;
}
【C0126】有以下程序

#include<stdio.h>
int  main( ){
  int  a , b , m , n ;
  m = n = 1 ;
  scanf( "%d%d" , &a , &b ) ;
  do{
    if( a > 0 ){
      m = 2 * n ;
      b++ ;
    }
    else{
      n = m + n ;
      a += 2 ;
      b++ ;
    }
  }
  while( a == b ) ;
  printf( "m=%dn=%d" , m , n ) ;
  return  0 ;
}
若输入输入-1     0↙。程序的运行结果是m=4n=2。
【C0127】下面程序的运行结果是A2C4E6。
#include<stdio.h>
int  main( ){
  char  c1 , c2 ;
  int  a ;
  c1 = '1' ;
  c2 = 'A' ;
  for( a = 0 ; a < 6 ; a++ ){
    if( a % 2 )
      putchar( c1 + a ) ;
    else
      putchar( c2 + a ) ;
  }
  return  0 ;
}
【C0128】下面程序的运行结果是132。
#include<stdio.h>
int  main( ){
  int  i , m = 0 , n = 0 , k = 0 ;
  for( i = 9 ; i <= 11 ; i++ ){
    switch( i / 10 ){
      case 0 : 
        m++ ;
        n++ ;
        break ;
      case 10 :
        n++ ;
        break ;
      default :
        k++ ;
        n++ ;
    }
  }
  printf( "%d%d%d\n" , m , n , k ) ;
  return  0 ;
}
【C0129】下面程序的运行结果是4。
#include<stdio.h>
int  main( ){
  int  a = 1 , b ;
  for( b = 1 ; b <= 10 ; b++ )    {
    if( a >= 8 )
      break ;
    if( a % 2 == 1 ){
      a += 5 ;
      continue ;
    }
    a = a - 3 ;
  }
  printf( "%d\n" , b ) ;
  return  0 ;
}
【C0130】下面程序的运行结果是k=0,m=5。
#include<stdio.h>
int  main( ){
  int  m = 0 , k = 0 , i , j ;
  for( i = 0 ; i < 2 ; i++ ){
    for( j = 0 ; j < 3 ; j++ )
      k++ ;
    k = k - j ;
  }
  m = i + j ;
  printf( "k=%d,m=%d\n" , k , m ) ;
  return 0 ;
}
【C0131】下面程序的运行结果是x=8。
#include<stdio.h>
int  main( ){
  int  i , j , x = 0 ;
  for( i = 0 ; i < 2 ; i++ ){
    x++ ;
    for( j = 0 ; j <= 3 ; j++ ){
      if( j % 2 )
        continue ;
      x++ ;
    }
    x++ ;
  }
  printf( "x=%d\n" , x ) ; 
  return 0 ;
}
【C0132】有以下程序

#include<stdio.h>
#include<math.h>
int  main( ){
  float  x , y , z ;
  scanf( "%f,%f" , &x , &y ) ;
  z = x / y ;
  while( 1 ){
/* fabs( )是计算绝对值的函数,包含在math.h文件中,此时计算|Z| */
    if( fabs( z ) > 1.0 ){
      x = y ;
      y = z ;
      z = x / y ;
    }
    else
      break ;
  }
  printf( "%3.1f\n" , y ) ;
  return  0 ;
}
若输入数据3.6,2.4↙。程序的运行结果是1.6。
【C0133】有以下程序

#include<stdio.h>
int  main( ){
  char  c ;
  c = getchar( );
  while ( c != '\n' ){
    switch ( c - '2' ){
      case 0 :
      case 1: putchar( c + 4 ) ;
      case 2: putchar( c + 4 ) ;
            break;
      case 3: putchar( c + 3 ) ;
      case 4: putchar( c + 2 ) ;
            break;
    }
    c = getchar( );
  }
  printf( "\n" ) ;
  return  0 ;
}
若输入数据7654↙。程序的运行结果是8878。
【C0134】下面程序的功能是:按规律将电文变成密码,即将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D;非字母字符保持原状不变。如“boy”转换为“fsc”。从键盘输入一行字符,用换行符结束输入,输出其相应的密码。请填空。

#include<stdio.h>
int main() {
    char ch;
    printf( " please enter:\n" );
    ch=getchar();
    while(ch!='\n'){
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
            ch=ch+4 ;
            if((ch>'Z'&&ch<='Z'+4)||(ch>'z'))
                ch=ch-26;
        }
        printf("%c",ch);
        ch=getchar();
    }
    printf("\n") ;
    return 0;
}
【C0135】下面程序的功能是:计算100至1000之间有多少个数其各位数字之和是5。请填空。

#include<stdio.h>
int main(){
  int i,s,k,count=0;
  for(i=100;i<=1000;i++){
    s=0;
    k=i;
    while(k){
      s=s+k%10;
      k=k/10; 
    }                   
    if(s!=5)
      continue ; 
    else
      count++;
  }
  printf("%d",count) ;
  return 0;
}
【C0136】下面程序的功能是计算:s=1+12+123+1234+12345。请填空。

#include<stdio.h>
int main(){
  int t=0,s=0,i;
  for(i=1;i<=5;i++){
    t=i+t*10;
    s=s+t;
  }
  printf("s=%d\n",s);
  return 0 ;
}
【C0137】下面程序的功能是:用公式 
的近似值,直到发现某一项的绝对值小于
为止(该项不累加)。请填空。
#include<stdio.h>
#include<math.h> 
int main(){
  int f=1;
  float pi=0.0,n=1,t=1;
  while(fabs(t)>=1e-6){
    pi=pi+t;
    n=n+2;
    f=-f;
    t=f/n;
  }
  pi=pi*4;
  printf("pi=%8.6f\n",pi) ;
  return 0;
}
【C0138】下面程序的功能是:计算100以内能被3整除,且个位数为4的所有整数。请填空。

#include<stdio.h>
int main(){ 
  int i,j;
  for(i=0;i<10;i++){
    j=i*10+4;
    if(j%3!=0)  
      continue;
    printf("%d\n",j);  
  }
  return 0;
}

编程题!!

第一题

7-1 【C0139】输出所有的水仙花数
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。编写一个程序,输出所有的水仙花数。

输入格式:
无输入

输出格式:
按照从小到大的顺序输出所有水仙花数,一行输出一个数。

输入样例:
在这里给出一组输入。例如:


输出样例:
在这里给出相应的输出。例如:

153
370
371
407
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
    int n,g,s,b;
    for(n=100;n<1000;n++)
    {
        g=n%10;
        s=n%100/10;
        b=n/100;
        if(n==g*g*g+s*s*s+b*b*b)
            printf("%d\n",n);
    }
    return 0;
}

----------分割线----------

第二题

7-2 【C0140】输入两个整数,用辗转相除法计算其最大公约数和最小公倍数
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
编写一个程序,输入两个整数,用辗转相除法计算其最大公约数和最小公倍数。。

输入格式:
在一行中输入两个以逗号为间隔的整数。

输出格式:
以逗号为间隔输出这两个整数的最大公约数和最小公倍数。

输入样例:
在这里给出一组输入。例如:

24,36
输出样例:
在这里给出相应的输出。例如:

12,72
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
    int m,n,gbs,t,j,i;
    scanf("%d,%d",&m,&n);
    if(m<n)
    {
        t=n;
        n=m;
        n=t;
    }
    j=m*n;
    while(n!=0)
    {
        i=m%n;
        m=n;
        n=i;
    }
    gbs=j/m;
    printf("%d,%d",m,gbs);
    return 0;
}

----------分割线----------

第三题

7-3 【C0141】计算阶乘和
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
编写一个程序,计算s=1!+2!+3!+…+n!。其中!为阶乘运算,n由输入决定。

输入格式:
输入正整数n。

输出格式:
输出1!+2!+3!+…+n!的值。

输入样例:
在这里给出一组输入。例如:

3
输出样例:
在这里给出相应的输出。例如:

9
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
    int n,x=0,y=1,sum;
    scanf("%d",&n);
    for(x=1;x<=n;x=x+1)
    {
        y=y*x;
        sum=sum+y;
    }
    printf("%d",sum);
    return 0;
}

----------分割线----------

第四题

7-4 【C0142】计算数列和
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
编写一个程序,计算

其中m由输出决定。

输入格式:
输入正整数m。

输出格式:
计算

并输出。

输入样例:
在这里给出一组输入。例如:

3
输出样例:
在这里给出相应的输出。例如:

0.833333
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
    int i,m;
    double sum=0,t=1;
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        sum=sum+t/i;
        t=-t;
    }
    printf("%f\n",sum);
    return 0;
}

总结:1966年,C.Bohm和G.Jacopini首先证明了只用顺序、选择和循环三种基本控制结构就能实现任何“单入口、单出口”的程序,这给结构化程序设计奠定了理论基础。结构化程序设计的基本思想归纳起来有以下三个要点:(1)采用顺序、选择和循环三种基本结构作为程序设计的基本单元,具有a.只有一个入口b.只有一个出口c.无不可达语句,即不存在永远都执行不到的语句d.无死循环,即不存在永远都执行不完的循环(2)尽量避免使用goto语句,因为它破坏了结构化设计风格,并且容易带来错误的隐患(3)采用自顶而下、逐步求精的模块化程序设计方法。

每日一mo:原来我已经见过好多人最后一面了.......

 

标签:语句,循环体,int,c++,坐牢,第六天,while,循环,include
From: https://www.cnblogs.com/R-f-12/p/17342637.html

相关文章

  • 01-目录---C/C++
    第01章:数据类型typedef与typeid.name():链接数据类型:链接类型转换:链接X:链接X:链接X:链接X:链接X,链接x:链接X:链接第02章:常量与变量常量:链接变量:链接变量跨文件使用,链接有关变量声明的关键字:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接X:链接第03......
  • C++实现职工管理系统
    1、管理系统需求1.1考察知识点:C++的面向对象性,文件的读写操作1.2需求分析职工管理系统可以用来管理公司内所有员工的信息利用C++来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责普通......
  • c++打卡第十一天
    一、问题描述牛顿迭代法求方程根。编写一个函数用来实现牛顿迭代法求方程根。方程为为ax^4+bx*3+cx^2+dx+e=0,系数由系统输入,求x在1附近的一个实根,由主函数输出。x=x0-f(x0)/fd(x0),当x减去x0的绝对值小于等于1e-5即十的负五次方时,程序结束。二、设计思路。①一个简单的函数,......
  • C++实现通讯录管理系统
    C++实现简单的通讯录管理系统1.功能设计通讯录是一个可以记录亲人、好友信息的工具。本代码主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:●添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人●显示联系人:显......
  • c++万能头文件
    #include<bits/stdc++.h>//C++includesusedforprecompiling-*-C++-*-//Copyright(C)2003-2014FreeSoftwareFoundation,Inc.////ThisfileispartoftheGNUISOC++Library.Thislibraryisfree//software;youcanredistributeitand/......
  • C/C++课程信息管理系统[2023-04-21]
    C/C++课程信息管理系统[2023-04-21]综合应用所学C语言知识,设计完成一个软件工程专业课程信息管理系统。本系统拟实现以下功能:【数据文件】课程信息数据文件。每门课程的信息包含:课程编号,课程名称,理论课时实验课时、学分、开课学期(8个学期)、课程性质《分为必修、选修、限......
  • c++训练打卡(13)
    分糖果问题:10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样......
  • 开心档之C++ 类 & 对象
    C++类&对象C++在C语言的基础上增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++类定义定......
  • 开心档之C++ 基本语法
    C++基本语法C++程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象- 对象具有状态和行为。例如:一只狗的状态-颜色、名称、品种,行为-摇动、叫唤、吃。对象是类的实例。类- 类可以定义为描述对......
  • [c/c++]3.如何查看和更改程序运行栈的大小
    进程内存布局 我们写程序运行栈的栈帧保存在栈区,函数调用深度太多将导致爆栈栈的大小有上限,每个进程可以指定软上限,操作系统可指定硬上限linux查看栈上限方法linux可以通过ulimit命令查看栈上限和设置上限ulimit-a查看进程所有资源上限ulimit-sxx修改栈上限......