【无标题】

⦁    考虑到多重循环对程序效率的影响,以下哪种实现效率较高?为什么?(泰华智慧)
(a)循环次数大的放在外层,循环次数小的放在内层;
(b)循环次数小的放在外层,循环次数大的放在内层;

答:循环次数小的放在外层,循环次数大的放在内层;因为在正常情况下循环次数大的放在内层会减少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();
}

答:第一个for语句需要先进行判断条件,再进行if判断才能输出需要的内容,而第二个if语句中的for只判断一次for语句中的内容就能输出内容。


⦁    do-while语句的循环体( ) (鲁科安全)
A. 可能一次都不执行         B. 至少执行一次 
C. 由循环条件决定次数     D. BC均正确

答案:D

解析:do-while语句的循环是先对循环体进行判断的然后再对while条件进行判断,至少要进行一次循环,若条件符合则进行多次循环,所以这里B C都是对的。


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

答: 1.i<=100  2. s+=i

解析:由题可知,for(表达式1;表达式2;表达式3)

则i的大小没有进行判断,又因为i=1所以只需要对i的最大值进行表达 只需要输人 i<=100;

2是需要对1~100进行求和,这里定义了一个s 我们可以用s对其进行条件求和,s+=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 

解析: while(k=1),已经给k赋值了,k就一直等于1,不会改变。程序就进入了死循环。
⦁    语句while(!E)中表达式!E等价于( ) (杭州快越科技)
A.    E == 1         B. E != 0         C. E != 1         D. E==0 

答案:D

解析:对!E赋值令E=0 而表达式中的1 0 代表真假 ,不是0 假 就是1真,
⦁    goto语句有什么作用?(深圳元征信息科技)

答:goto语句,实现无条件跳转到指定位置。简单来说跳出程序,直接连接的是想去哪里,实现无缝衔接。(不建议使用,太过于灵活)
⦁    语句for( ;1 ;) 有问题吗?它是什么作用?(深圳元征信息科技)

答:for( ;1; )没有问题;且没有作用,会进入一个死循环。

for(表达式1;表达式2;表达式3)因为表达式1 2 3 都可以省略;但是没有条件的表达式,所以进入了死循环。
⦁    下面代码是否有错,如果有,错在哪里?(深圳元征信息科技)
int main()
{
   float a=3;
    switch(a)
    {
      case 3:
         printf("a");
    }
    return 0;
}

答:有错;错在 float a=3 ;因为swith 语句输出的只有整形和字符不能是浮点型。
⦁    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'A'直接是到case 'B',但是后面语句中都没有break语句,无法中断语句 会一直执行到default前。
⦁    下列各个错误中,哪一个不属于编译错误 ( ) (苏州特点电子科技)
A. 改变x 原值 3 为 5 ,写作“ x==5 ;” 
B. 花括号不配对
C. 复合语句中的最后一条语句后未加分号
D. 变量有引用、无定义

答:A

解析:B答案:花括号必须匹配,是错的。C答案:未加分号会报错;D答案:无定义的变量也会报错;
⦁    下面代码的功能是输出以下形式的金字塔图案是:(华三外协,紫光云数,新华三)
*
***
*****
*******
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
⦁    请实现如下功能:(威海精讯畅通)
输入一排n个数,第一个数为后面所有的数的个数。统计这后面所有数中,正数、零和负数的个数。
输入:
XXX
输出:
正数个数:XXX
零个数:XXX
负数个数:XXXpri
示例:
输入 7 -2 0 6 5 -3.2 0 2.5
程序输出 正数个数:3
零个数:2
负数个数:2

⦁    请实现一下功能:(威海精讯畅通)
输入任意两个数,输出两数之间(包括这两个数)偶数之和。
输入:
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 a,b,sum=0,MAX,MIN;//定义输入a,b变量以及a,b之间的最大值和最小值变量。
	printf("请输入两个数;\n");
	scanf("%d %d", &a, &b);//输入变量。
	if(a<0||b<0){
		printf("请输入两个正数;\n");
		return 0;//输入负数报错并跳出程序。
	}else{
		if(a>b){//判断a,b之间的大小。
			MAX = a;
			MIN = b;
		}else{
			MAX = b;
			MIN = a;
		}
		for(int i=MIN;i>=MIN&&i<=MAX;i++){
			if(i%2==0){    //若能被2整除,就是偶数。
				sum += i;   //进行偶数求和。
			}
		}
	}
	printf("%d到%d之间的偶数和为:%d\n",MIN,MAX,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;   //定义一个i 和 sum 
	float sum=0;
	for(i=1;i<=2000;i++){    //1-2000之间的所有数
		for(int j=1;j<i;j++){   //统计i的真因子数之和
			if(i%j==0){     //判断是否为真因子数
				sum+=j;    //求真因子数之和
			}
			if(sum==1){    //判断 真因子数之和是否等于本身
				printf("%d\n", i);  //输出完数
			}
		}
        sum=0;  //和归零
	}
	return 0;
}


⦁    完成一个 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;
	int sum=0;
	printf("请输入一个数:");
	scanf("%d", &n);
	if(n<INT_MIN || n>INT_MAX/10){
		printf("请输入正确的数字");
		return 0;
	}
		while(n!=0){
			int ys = n%10;
			sum = sum*10+ys;
			n = n/10;
		}
		printf("逆序的结果:%d\n", sum);
	return 0;
}


 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值