9.4 C语言基础-循环语句

题目:考虑到多重循环对程序效率的影响,以下哪种实现效率较高?为什么?(泰华智慧)

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

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

答案选b,将外层循环次数多的放在内层,可以减少CPU跨切循环层的次数,从而提高效率。这是因为当内层循环执行时,外层循环的计数器不会频繁更新,减少了cache更新数据的次数,从而提高了效率‌。

题目:请简述以下两个 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();

}

分析:第一个代码比第二个代码简洁,代码量少;第二个代码if-else语句只执行一次,然后进行循环语句,而第一个代码需要执行N次if-else语句,相比较第二个代码执行效率更快。

题目:do-while语句的循环体( ) (鲁科安全)

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

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

答案:D

分析:do-while语句至少执行一次,同时由循环条件决定需要循环的次数

题目:求1~100的和,写作for(int s=0,i=1;________;++i) ________;(富士安全)

答案:for(int s=0,i=1;i<=100;++i)s+=i;

题目:程序如下,运行结果为:(中科四平)

#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

题目:有以下程序段,int k=0; while(k=1) k++;则while循环执行的次数是( ) (杭州快越科技,山东大齐通讯,山东信通电子)

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

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

 答案:D

分析:因为k=1为赋值语句,此时k=1结果始终为1即为真恒成立,所以while(k=1)循环条件恒为真,即一直循环无限次

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

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

答案D

分析:!E逻辑为真的情况是当E==0时,!E才为真,非0都为假,所以E==0与!E等价

题目:goto语句有什么作用?(深圳元征信息科技)

答案:goto语句是一个跳转语句,可以通过goto语句实现循环,对于深层循环使用goto可以快速跳出循环,但goto语句会影响程序执行的顺序,一般不推荐使用,C高级中仍保留goto语句。

题目:语句for( ;1 ;) 有问题吗?它是什么作用?(深圳元征信息科技)

答案:没有,表示循环语句恒成立,出现死循环

题目:下面代码是否有错,如果有,错在哪里?(深圳元征信息科技)

int main()

{

   float a=3;

    switch(a)

    {

      case 3:

         printf("a");

    }

    return 0;

}

答案:有错,switch语句()中的表达式可以是任意合法的表达式,但表达式的结果只能是整型或单字符型,而a是float浮点型,所以有误。

题目:break 语句的正确的用法是 ( ) (福建新大陆)

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

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

C. 跳出多重循环

D. 只能修改控制变量

答案:选B,break语句在多重循环中,只能退出到最靠近的那一层循环语句。

题目:若输入 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.

答案:D

分析:输入字符'B',程序跳转到case 'B',因为剩余语句都没有break语句结束,所以会依次执行直到结束,所以会打印D选项内容

题目:下列各个错误中,哪一个不属于编译错误 ( ) (苏州特点电子科技)

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

B. 花括号不配对

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

D. 变量有引用、无定义

答案:A,因为BCD都属于语法错误,程序编译时会报错,而A将赋值写成关系判断,程序不会编译出错,只是执行结果不是我们想要的结果,需要做逐步分析查找代码错误。

题目:下面代码的功能是输出以下形式的金字塔图案是:(华三外协,紫光云数,新华三)

*

***

*****

*******

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

答案:B,首先图案拆分成两部分,一个是空白区域通过打印空格实现,一个是打印*,对于第i行需要打印4-i个空格和2*i-1个*,所以在行数循环里面嵌套两个for循环依次打印空格和*以及每次行打印末尾增加换行。

题目:请实现如下功能:(威海精讯畅通)

输入一排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 m;
	int count1=0,count2=0,count3=0;
	//提示输入n确定个数
	printf("请输入要输入的个数\n");
	scanf("%d",&n);
	//通过while循环确定你要输入几次数值
	while(n--){
		scanf(" %f",&m);
		if(m>0.0){
			count1++;
		}else if(m<0.0){
				count2++;
		}else{
				count3++;
		}
	}
	printf("正数个数:%d\n零个数:%d\n负数个数:%d\n",count1,count2,count3);
	return 0;
}

题目:请实现一下功能:(威海精讯畅通)

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

输入:

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 n,m,sum=0;
	//提示输入两个数
	printf("请输入任意两个数\n");
	scanf("%d %d",&n,&m);
	if(n>m){
		printf("请重新输入两个由小到大的数\n");
		return 0;
	}
	for(int i=n;i<=m;i++){
		if(i%2==0){
			sum+=i;
		}
	}
	printf("%d到%d之间偶数和为:%d",n,m,sum);
	return 0;
}

题目:编程求 2000 以内的所有“完数”。所“完”是指一个数恰好等于它的因子值之和,例如:6是完数,因为 6=1+2+3。 (戈尔特西斯)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,sum=0;
	//使用for循环找出2000以内所有完数,即自身等于所有因子之和
		for(i=1;i<=2000;i++){
			//先得到一个数的因子之和即再嵌套一个for循环
			for(int j=1;j<i;j++){
 				if(i%j==0){
					sum=sum+j;
				}
			}
			//判断因子之和是否等于自身
			if(sum==i){
				printf("%d ",i);
			}
			sum=0;
		}
	return 0;
}

题目: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("请输入一个数\n");
	scanf("%d",&n);
	if(n<=INT_MIN||n>=INT_MAX/10){
		printf("输入值越界\n");
		return 0;
	}
	while(n!=0){
		sum=sum*10+n%10;
		n=n/10;
	}
	printf("该值逆序后结果为:%d\n",sum);
	return 0;
}

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用`<text>`元素来在SVG图标下方显示文本。以下是一个简单的示例,在SVG图标下方添加了"重置"这个文本: ```html <svg id="screenOper" height="15" viewBox="0 0 512 512" style="margin-right:10px"> <path d="M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z"/> <text x="256" y="180" text-anchor="middle" font-size="12" fill="black">重置</text> </svg> ``` 在这个例子中,我们添加了一个`<text>`元素,设置了文本内容为"重置",位置为图标中心下方。`x`和`y`属性用于设置文本位置,`text-anchor`属性用于设置文本在x轴方向上的对齐方式,这里设置为"middle"表示居中对齐。`font-size`属性用于设置文本字体大小,`fill`属性用于设置文本颜色。 您也可以使用JavaScript和D3来动态添加文本元素和设置文本内容和位置。例如,以下代码使用D3添加文本元素,并将其放置在图标下方: ```javascript // 选择SVG元素 var svg = d3.select("#screenOper"); // 添加文本元素 svg.append("text") // 设置文本内容 .text("重置") // 设置文本位置 .attr("x", 256) .attr("y", 180) // 设置文本样式 .style("font-size", "12px") .style("fill", "black"); ``` 在这个例子中,我们首先使用`d3.select`方法选择SVG元素,然后使用`append`方法添加一个`text`元素。我们设置了文本内容为"重置",并使用`attr`方法设置了文本的位置。最后,我们使用`style`方法设置文本的字体大小和颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值