C语言:练习

C语言:练习_第1张图片

 

目录

题一

题二

题三

题四

题五

题六

题七

题八

题九:

题十

题十一:

题十二:

做错的选择题:

当然这些只是个人的见解,并不是最佳解,欢迎大家互相讨论!


题一:求最大值

写一个函数求两个整数的较大值
如:
输入:10 20
输出较大值:20

#include 

int Compare(int x, int y)
{
	return x > y ? x : y;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int big = 0;
	
	big = Compare(a,b);
	printf("%d\n", big);
	return 0;
}

题二:小乐乐上楼

小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。
电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。
请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)

#include 

int main()
{
	int n = 0;
	int time = 0;
	scanf("%d", &n);
	n = n + 1;
	while (n > 0)
	{
		if (n > 12)
		{
			time += 4;
			n -= 12;
		}
		else
		{
			time += 2;
			break;
		}

	}
	
	printf("%d\n", time);

	return 0;
}

更简洁的方法:

#include 
int main()
{
    int n = 0;
    scanf("%d", &n);
    printf("%d\n", n/12*4+2);
    
    return 0;
}

题三:返回值

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,
你能帮他写个程序输出printf(“Hello world!”)的返回值吗?

#include 

int main()
{
	int n = printf("Hello world!");
	printf("\n%d", n);
	return 0;
}

题四:判断三角形

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,
判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

#include 

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;


	while (scanf("%d %d %d", &a, &b, &c) == 3)
	{


		if (a + b > c && a + c > b && b + c > a)
		{
			if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a))
			{
				printf("Isosceles triangle!\n");
			}
			else if (a == b && a == c)
			{
				printf("Equilateral triangle!\n");
			}
			else
			{
				printf("Ordinary triangle!\n");
			}

		}
		else
			printf("Not a triangle!\n");
	}

	return 0;
}

题五:BMI指数

计算BMI指数(身体质量指数)。BMI指数(即身体质量指数,简称体质指数又称体重,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于统计用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,BMI值是一个中立而可靠的指标。

#include 
#include 

int main()
{
    int kg = 0;
    int cm = 0;
    float BMI = 0;
    scanf("%d %d", &kg, &cm);
    BMI = kg / (cm/100.0) / (cm/100.0);
    printf("%.2f\n", BMI);

    return 0;
}

题六:时间转换

问题:一年约有 3.156×107 s,要求输入您的年龄,显示该年龄合多少秒。


#include 
#include 

int main()
{
    long long age = 0;
    scanf("%ld", &age);
    age = age * (3.156 * pow(10, 7));
    printf("%ld", age);
    return 0;
}

更简洁的方法:

#include 

int main()
{
    int age = 0;
    //输入
    scanf("%d", &age);
    //计算
    long sec = age*3.156e7;
    printf("%lld\n", sec);
    return 0;
}

题七:睡眠计算

输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour : minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)

#include 

int main()
{
    int hour = 0;
    int minute = 0;
    int m = 0;
    char a = 0;
    scanf("%d%c%d %d", &hour, &a, &minute, &m);
    while (m >= 60)
    {
        if (m >= 60)
        {
            hour++;
            m -= 60;
        }
        if (hour == 24)
        {
            hour = 0;
        }
    }
    minute += m;
    if(minute >=60)
    {
        hour++;
        minute -= 60;
    }
    if (hour == 24)
    {
        hour = 0;
    }

    printf("%02d:%02d\n", hour, minute);
    return 0;
}

更简洁的方法:

#include 

int main()
{
    int h = 0;
    int m = 0;
    int k = 0;
    scanf("%d:%d %d", &h, &m, &k);
    h = ((m+k)/60+h)%24;
    m = (m+k)%60;
    printf("%02d:%02d\n", h, m);
    return 0;
}

题八:打印三的倍数

写一个代码打印1 - 100之间所有3的倍数的数字

#include 

int main()
{
	int i = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
		}
	}

	return  0;
}

题九:排序

写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1

#include 

int main()
{
	int arr[3] = { 0 };
	int i = 0;
	int max = 0;
	for (i = 0; i < 3; i++)
	{
		scanf("%d",&arr[i]);
	}
	for (i = 1; i < 3; i++)
	{
		if (arr[0] <= arr[i])
		{
			max = arr[0];
			arr[0] = arr[i];
			arr[i] = max;
		}
	}
	for (i = 0; i < 3; i++)
	{
		printf("%d ", arr[i]);
	}
	

	return 0;
}

题十:素数

写一个代码:打印100~200之间的素数
只能被1和本身整除的数

#include 
#include 

int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
				break;
		}
		if (j == i)
		{
			printf("%d\n", i);
		}
	}

	return 0;
}

更好的方法

int is_prime(int n)
{
	int j = 0;
	for (j = 2; j <= sqrt(n); j++)
	{
		if (n % j == 0)
		{
			return 0;
		}
	}

	return 1;
}

int main()
{
	int i = 0;
	int count = 0;
	for (i = 101; i <= 200; i += 2)
	{
		//判断i是否为素数
		//是素数就打印
		//拿2~i-1之间的数字去试除i
		if (is_prime(i))
		{
			printf("%d ", i);
			count++;
		}

	}
	printf("\ncount = %d\n", count);

	return 0;
}

题十一:判断闰年

打印1000年到2000年之间的闰年

#include 

int main()
{
	int i = 0;
	int count = 0;
	for (i = 1000; i <= 2000; i++)
	{
		if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
		{
			count++;
			printf("%d\n", i);
			
		}
	}
	printf("%d\n", count);
	return 0;
}

题十二:最大公约数

给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20

#include 

int main()
{
	int a = 0;
	int b = 0;
	int min = 0;
	int max = 0;
	int i = 0;
	scanf("%d %d", &a, &b);
	min = a > b ? b : a;
	max = a > b ? a : b;
	for (i = min; i > 0; i--)
	{
		if (max % i == 0)
		{
			printf("%d\n", i);
			break;
		}
	}

	return 0;
}

做错的选择题:

关于if语句说法正确是:( )

A.if语句后面只能跟一条语句

B.if语句中0表示假,1表示真

C.if语句是一种分支语句,可以实现单分支,也可以实现多分支

D.else语句总是和它的对齐的if语句匹配

  A:错误,if之后可以跟多条语句,跟多条语句时需要使用{}括起来

  B:错误,0表示假,非零表示真

  C:正确

  D:不一定,要看具体的代码,如果代码不规范,可能没有对齐

下面那个不是转义字符?

A.'\n'

B.'\060'

C.'\q'

D.'\b'

A:'\n' 转义字符,代表换行

B:'\060' 转义字符,060八进制数据,十进制为48,表示ASCII码为48的'0'

C:'\q' 什么都不是

D:'\b' 转义字符,表示退格

下面代码的结果是:( )

#include 
#include 

int main()
{
    char arr[] = {'b', 'i', 't'};
    printf("%d\n", strlen(arr));
	return 0;
}

A.3

B.4

C.随机值

D.5

strlen是用来获取字符串的有效长度的,结尾标记'\0'不包含在内。

strlen获取的规则非常简单:从前往后依次检测,直到遇到'\0'是就终止检测。

关于C语言关键字说法正确的是:( )

A.关键字可以自己创建

B.关键字不能自己创建

C.关键字可以做变量名

D.typedef不是关键字

  A:错误,关键字是语言自身定义的

  B:正确

  C:错误,关键字具有特殊含义,不能作为变量名

  D:错误,typedef是用来给类型取别名的关键字

关于static说法不正确的是:( )

A.static可以修饰局部变量

B.static可以修全局变量

C.static修饰的变量不能改变

D.static可以修饰函数

 C:错误,const修饰的变量不能改变

当然这些只是个人的见解,并不是最佳解,欢迎大家互相讨论!

你可能感兴趣的:(C语言练习,c语言,笔记,学习,算法)