linux 操作 day 5 w

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

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

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

答案:

        对于多重循环对程序的影响,“将循环次数小的放在外层,循环次数大的放在内层”是效率较高的。因为在计算机中,循环的程序是储存在内存中,通过cup接受内存中的数据经行处理,

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)(2),可得

    (1)的优点:代码量少,

                缺点:效率低。

    (2)的优点:对于condition要先进行判断,然后进入相应的循环中,循环状态只出现一次,较(1)具有更高的效率。

                缺点:代码量多。

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

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

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

4.求1~100的和,写作for(int s=0,i=1;________;++i) ________; 

答案:

        i<=100

        s+=1

 

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; 
        x2=x2+x1; 
    }
}

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

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

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

7.语句while(!E)中表达式!E等价于( ) (杭州快越科技)

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

 答案:要进入while循环,需要满足判断结果为真,即!0(非零),则E代表0,故E==0。

8.goto语句有什么作用?

无条件转移,让程序转移到标号语段执行程序。与条件判断语句配合可构成循环语句。

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

分析:在上示语句中,1所在位置为循环条件,直接填写!0数,程序会识别循环条件成立,故程序会一直循环,陷入死循环。

 

答案:死循环

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

 int main(){

   float a=3;   

    switch(a) 

//switch后面的表达式只能为整型值或字符型值

{

      case 3:

         printf("a");

    }

    return 0;

}

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

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

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

C. 跳出多重循环

D. 只能修改控制变量

 

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

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. 改变x 原值 3 为 5 ,写作“ x==5 ;”                //改变x 原值 3 为 5的原以为“x=3     x=5”

B. 花括号不配对

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

D. 变量有引用、无定义

答案:A

 

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”);

}

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

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

16.请实现一下功能:

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

输入:XXX XXX

输出:

XXX 到XXX偶数之和为:XXX

示例:

输入 1 10

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, const char *argv[])
{
	int n1, n2;
	printf("请输入两个数:");
	scanf("%d %d",&n1,&n2 );
	if(n1<INT_MIN||n1>INT_MAX||n2<INT_MIN||n2>INT_MAX){
		printf("输入值存在越界");
	return 0;
	}
	// 大值排前
	int x,y;
	if(n2>n1){
	x=n2 ,y=n1;
	}else{
	x=n1  ,y=n2;
	}
	// 两数之间偶数相加
	
	int sum;
	for(x,y; x>y; y=y+2){
	
		if(x%2==0){
			sum=y;
		}else{
			sum=x;
			sum+=y;
		}
	}printf("两数之间偶数相加和:%d",sum);
	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, num=0;
	printf("number:\n");
	scanf("%d" , &n);

	if(n<INT_MIN||n>INT_MAX/10){
		printf("0");
		return 0;}
	
	while(n!=0){
		int ys = n%10;//获取n的个位数、十位、百位、...位
		num = num*10 + ys;
		n = n/10;
	}
	printf("%d\n", num);

	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值