二十三、阶段测评

目录

1.选择

2.选择

3.选择

4.选择

5.选择

6.选择

7.选择

8.选择

9.选择

10.选择

11.选择

12.选择

13.选择

14.选择

15.选择

16.求最小公倍数

17.倒置字符串


1.选择

求cnt,就是统计fib被调用了多少次

B 67

2.选择

D死循环,循环1

3.选择

j=1, i++,则i=2

C 2,1

4.选择

考点:操作符的优先级

i+j=30;k=k*(i+j)=3*30=90

A 90

5.选择

局部变量优先,但是没有返回值,所以只用全局变量的a。

A 1

6.选择

A.或者 应该用||

B.可以没有default语句

C.正确

D.可以没有else语句

7.选择

A.X

B.X

C.正确

D.X

8.选择

A.√

B.√

C.√

D.X

9.选择

A.X

B.X

C.√ C语言的输入/输出函数 - 标准库函数(独立于C语言之外的)

D.X

10.选择

--c;//c为-1

a=a-1;//a=-1

a>0进入循环,此时不进入循环

C -1

11.选择

x=2;

3/2 两边都是整数,所以得到的就是整数,3/2=1;

y=x+3/2=2.0+1=3.0;

D 3.000000

12.选择

(y=123)不是判断了,y被赋值为123;(y=123)为真

C.4次

13.选择

int year=1009;

int* p=&1009;

A.(*p)先执行,然后+=1; *间接访问+优先级高

D. 后缀自增比间接访问优先级高,先是p++,然后(*p),最后p++。

*p;

p++;

D.不能

14.选择

| - 按(2进制)位或,就是a的补码与b的补码按位或(有1为1,两个都为0才为0)

1011 11补码

1010 10补码

1011 11|10 =11

A

15.选择

D

16.求最小公倍数

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

数据范围:1≤a,b≤100000 1≤a,b≤100000

输入描述:输入两个正整数A和B。

输出描述:输出A和B的最小公倍数。

方法1:效率低

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//计算a和b的最小公倍数
	int m = (a > b ? a : b);
	while (1)
	{
		if (m % a == 0 && m % b == 0)
		{
			break;
		}
		m++;
	}

	//打印
	printf("%d\n", m);
	return 0;
}

方法2:高效方法 方法1 135ms,方法2 3ms

a*i==b*j =m

用a*1,*2,*3... 然后整除b

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//计算a和b的最小公倍数
	int i = 1;
	while (a * i % b !=0)
	{
		i++;
	}
	//打印
	printf("%d\n", a*i);
	return 0;
}

17.倒置字符串

将一句话的单词进行倒置,标点不倒置。比如i like you. 经过函数变为:you. like i

两步

1.把整个字符串逆序

2.把每个单词逆序

#include <assert.h>
#include <string.h>
void reverse(char* left, char* right)
{
	assert(left);
	assert(right);
	while (left<right)
	{
		char* tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}

int main()
{
	char arr[101] = { 0 };
	//输入
	gets(arr);
	//逆置
	int len = strlen(arr);
	//1.逆序整个字符串
	reverse(arr, arr+len-1);
	//2.逆序每个单词
	char* start = arr;

	while (*start)   // 如果等于\0,则为假
	{
		char* end = start;
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}
		reverse(start, end - 1);
		if (*end !='\0')
		{
			end++;
		}
		
		start = end;

	}
	//输出
	printf("%s\n", arr);
	return 0;
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值