首页 > 其他分享 >C语言--选择结构、循环结构练习题

C语言--选择结构、循环结构练习题

时间:2024-09-08 17:20:47浏览次数:12  
标签:练习题 语句 -- C语言 int 循环 printf include 输入

1.考虑到多重循环对程序效率的影响,以下哪种实现效率较高?为什么?

(a)循环次数大的放在外层,循环次数小的放在内层;

(b)循环次数小的放在外层,循环次数大的放在内层;

答:(b);因为循环次数小的放在外层,当cpu处理完内层循环后从缓冲区拿取外层循环数据的次数会减少,在cpu内处理数据的时间比从缓冲区拿取数据短,因此缩短了处理时间;

2.请简述以下两个 for 循环的优缺点。

(1)、

for(i=0; i<N; i++)

{

    if(condition)

        DoSomething();

    else

        DoOtherthing();

}

(2)、

if(condition)

{

    for(i=0; i<N; i++)

        DoSomething();

}

else

{

    for(i=0; i<N; i++)

        DoOtherthing();

}

答:(1)优点:代码简单,逻辑清晰;缺点:效率低,每执行一次for循环就要判断(2)优点:高效,只用执行if或else语句;缺点:代码冗长;

3.do-while语句的循环体(D ) 

A. 可能一次都不执行           B. 至少执行一次

C. 由循环条件决定次数      D. BC均正确

4.求1~100的和,写作for(int s=0,i=1;_i<=100___;++i) _s+=i_______;

5.程序如下,运行结果为:

#include <stdio.h>

#define N 4

void main()

{

    int i;

    int x1=1,x2=2;

    printf("\n");

    for(i=1;i<=N;i++)

    {

        printf("%4d%4d",x1,x2);

        if(i%2==0)

        printf("\n");

        x1=x1+x2; //3 8 21

        x2=x2+x1; //5 13 34

    }

}

结果为:1 2 3 5

              8 13 21 34

6.有以下程序段,int k=0; while(k=1) k++;则while循环执行的次数是( D) 

A. 一次也不执行                   B. 执行1次

B. 有语法错,不能执行      D. 无限次

k=1是赋值语句,不管k为多少,while()循环语句的条件控制永远为1(真),所以会一直执行下去,陷入死循环;

7.语句while(!E)中表达式!E等价于( D) 

A.E == 1                  B. E != 0           C. E != 1           D. E==0

while()语句中应是非零值,E==0时指的是E为假,而!为逻辑非运算符,那么!E就是非零值符合要求;

8.goto语句有什么作用?

goto语句可以实现程序的跳转,会影响程序的走向

9.语句for( ;1 ;) 有问题吗?它是什么作用?

有问题;for循环语句当条件控制表达式永远为1,即为真时,语句会永远执行下去;

10.下面代码是否有错,如果有,错在哪里?

int main()

{

   float a=3;

    switch(a)

    {

      case 3:

         printf("a");

    }

    return 0;

}

switch语句的表达式可以是任意合法表达式,但其结果必须是一个整型或单字符型;

11.break 语句的正确的用法是 (B )

A. 无论在任何情况下,都中断程序的执行,退出到系统下一层

B. 在多重循环中,只能退出最靠近的那一层循环语句

C. 跳出多重循环

D. 只能修改控制变量

12.若输入 B,则以下程序运行后的输出结果是 (D ) 

int main(void)

{

    char grade;

    scanf("%c", &grade);

    switch (grade)

    {

        case 'A':

                          printf(">=85");

        case 'B':

        case 'C':

                          printf(">=60") :

                  case 'D':

            printf("<60");

        default:

            printf("error.");

    }

}

A. error. B. >=60   C. >=85   D. >=60<60error.

13.下列各个错误中,哪一个不属于编译错误 ( A) 

A. 改变x 原值 3 为 5 ,写作“ x==5 ;”

B. 花括号不配对

C. 复合语句中的最后一条语句后未加分号

D. 变量有引用、无定义

B、C、D都属于编译错误,如果出现编译器会识别并报错;

14.下面代码的功能是输出以下形式的金字塔图案是:

*

***

*****

*******

int  i, j;

for(i = 1; i<= 4; i++)

{

        for(j = 1; j<= 4 - i; j++)

        {

            printf(“ “);

        }

        for(j = 1; j <= _______; j++)

        {

            printf(“*”);

        }

        printf(“\n”);

}

在下划线处应填入的是:(B  )

A. i           B. 2 * i - 1                 C. 2 * i + 1                D. i + 2

15.请实现如下功能:

输入一排n个数,第一个数为后面所有的数的个数。统计这后面所有数中,正数、零和负数的个数。

输入:

XXX

输出:

正数个数:XXX

零个数:XXX

负数个数:XXX

示例:

输入 7 -2 0 6 5 -3.2 0 2.5

程序输出 正数个数:3

零个数:2

负数个数:2

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	float b;
	int z=0,l=0,f=0;
	printf("请输入多个数:");
	scanf("%d",&n);
	while(n!=0){
		scanf("%f",&b);
		if(b>0)
			z++;
		else if(b==0)
			l++;
		else
			f++;
		n--;
	}
	printf("正数个数:%d\n零个数:%d\n负数个数:%d\n",z,l,f);
	return 0;
}

运行结果如图所示:

16.请实现一下功能:

输入任意两个数,输出两数之间(包括这两个数)偶数之和。

输入:

XXX XXX

输出:

XXX 到XXX偶数之和为:XXX

示例:

输入 1 10

程序输出 1到10偶数之和为:30

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    //声明三个整数变量分别存储输入数据和偶数之和
	int num1,num2,temp=0;
	printf("请输入任意两个数:");
	scanf("%d %d",&num1,&num2);
    //输入的两个数据必须是前数小于后数
	if(num1>=num2){
		printf("输入有误,请重新输入\n");
		return 0;
	}
    //使用for循环获取偶数之和
    //声明循环变量使其等于第一个输入数据,并且小于等于第二个数据
	for(int i =num1;i<=num2;i++){
        //如果该数能被2整除便将其赋给temp变量
		if(i%2==0){
			temp += i;
		}
	}
	printf("%d到%d偶数之和为:%d\n",num1,num2,temp);
	return 0;
}

运行结果如图所示:

17.编程求 2000 以内的所有“完数”。所“完”是指一个数恰好等于它的因子值之和,例如:6是完数,因为 6=1+2+3。

18.完成一个 32 位整数型数按 10 进制倒置的程序;当越界后返回值为 0。 

例如: 输入 1234;输出为 4321

输入-1234;输出为-4321

输入为 1023456789,输出为 0

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, const char *argv[])
{
    //定义整数变量,存储输入数值和倒置后数据
	int n,sum=0;
	printf("请输入一个数:");
	scanf("%d",&n);
    //确认输入数值未越界,否则显示0
	if(n<INT_MIN || n>INT_MAX/10){
		printf("0\n");
		return 0;
	}
    //运用while循环语句生成倒置数值
	while(n!=0){
        //整数模除10取余部分为数值个位
		int ys=n%10;
        //后位数字变前位数字需要乘10加上余数
		sum=sum*10+ys;
        //处理完个位后除10使十位成为尾数
		n/=10;
	}
	printf("%d\n",sum);
	return 0;
}

运行结果如图所示:

标签:练习题,语句,--,C语言,int,循环,printf,include,输入
From: https://blog.csdn.net/KBDYD1010/article/details/141901024

相关文章

  • C语言练习题--一维、二维字符串数组
    1.下列对C语言字符数组的描述中错误的是(D) A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.不可以用关系运算符对字符数组中的字符串进行比较D.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值分析:D只能逐个字符进行复制或者利用字......
  • AI苏格拉底提问学习记录
       ......
  • 小猪佩奇学英语——第五天——hide and seek
    例句hideandseek,捉迷藏seek,寻找find,找到了ItisGeorge'sturntohide.It'sourturn.用is是因为虽然我们是2个以上的人,但是我们是一组,轮到我们的只有一轮,所以是单数。It'syourturn.轮到你们了It'stheriturn.轮到他们了。It'ssb'sturnto..........
  • 小猪佩奇学英语——第六天——The Playgroup
    第六天——ThePlaygroup例句George,areyoulookingforwardtotheplaygroup?乔治,你现在是不是正期待去托儿所。lookforwardtosth期待某物lookforwardtodoing...期待做某事用looking表示正期待....maybeGeorgeistoosmalltogotomyplaygroup?too......
  • Python cheatsheet 速查表
    Python速查表中文版本手册是Pythoncheatsheet的中文翻译版。原作者:ArianneColtonandSeanChen([email protected])编译:ucasFL目录常规数值类类型数据结构函数控制流面向对象编程常见字符串操作异常处理列表、字典以及元组的推导表达式单元测......
  • LOJ4218 「IOI2024」尼罗河船运 题解
    题目描述有\(n\)件手工艺品,第\(i\)件重量为\(w_i\),有参数\(a_i\)和\(b_i\)。每艘船最多可以运输两件手工艺品:如果只运输第\(i\)件,重量没有要求,代价为\(a_i\)。如果同时运输第\(i\)和第\(j\)件,要求\(|w_i-w_j|\leD\),代价\(b_i+b_j\)。\(q\)次询问,给......
  • Einstein 大战 Eisenstein 大战 Eppstein
    \[\newcommand{\Co}{\operatornameC}\newcommand{\Am}{\operatornameA}\newcommand{\Vo}{\operatornameV}\newcommand{\Me}{\operatornamem}\newcommand{\Se}{\operatornames}\newcommand{\Ne}{\operatornameN}\newcommand{\Fa}{\operatorn......
  • 51nod 石子分配
    可以发现步数限制把数轴变为了环。环之间不可以交换,环内相邻两点可以交换,然后我们只需要对每个环操作,最后累加。对于环上的每个石子堆,我们需要将其石子数调整到均值\(avg\)。因此,我们首先计算每个堆石子相对于\(avg\)的偏差,即\(nowa[i]-avg\)。因为相邻节点不一定能凑齐......
  • csp-s模拟1
    A.喜剧的迷人之处在于切入点在\(a\),考虑\(a\)是不是完全平方数,是的话直接找最小能匹配的完全平方数即可,不是的话\(a\)一定可以表示成\(kx^2\)的形式,倒着找到最大的平方因子除去,只需要在\(L\)~\(R\)间找到一个最小的数也等于\(kx^2\)即可点击查看代码#include<bits......
  • 实现人形角色的攀爬
    在Unity实现角色攀爬前言开放世界类型的游戏近年也热门起来了,自由攀爬也成了这一类游戏的一大特色。攀爬给了玩家更多探索路径的选择,也让地图设计有了更多思路。这次,我们就来尝试在Unity中制作一个人形角色的攀爬。注:攀爬是一个角色完整动作系统的一部分,本文暂且抛开其它动......