C语言基础题(大合集1)

 1. Hello World!

写一个程序 , 在控制台上输出 : Hello World!

#include <stdio.h>
int main()
{
	printf("Hello World!\n");
	return 0;
}

  • main 函数是程序的入口一个工程有且仅有一个 main函数 
  • 代码是从 main 函数的第一行开始的

2.sizeof 

 求 short , int , long ,long long 的数据类型所占的空间大小

#include <stdio.h>
int main()
{
	printf("The size of short is %zd types.\n", sizeof(short));
	printf("The size of int is %zd types.\n", sizeof(int));
	printf("The size of long is %zd types.\n", sizeof(long));
	printf("The size of long long is %zd types.\n", sizeof(long long));
	return 0;
}

C语言规定:

所以在一些编译器里面 , long 所占的空间大小是 8 .

 3. 8进制与16进制

打印一个十进制数的八进制和十六进制 ,并且显示出前置标志

  •  012  ---> 数字前面放0 , 默认是8进制数
  • 0x12  ---> 数字前面放0x , 默认是16进制数
  • %o  打印八进制数
  • %X  打印大写的十六进制数
  • %x   打印小写的十六进制数

法一 : 手动添加前置标志

#include <stdio.h>
int main()
{
	printf("0%o 0x%X", 1234, 1234);
	return 0;
}

法二 : 使用 #   : 控制前导显示

#include <stdio.h>
int main()
{
	printf("%#o %#X", 1234, 1234);
	return 0;
}

 4. 逆置打印整数

通过 % 取余 拿到最后一个数

再通过 / 取整 得到 除了拿走最后的数的数值

#include <stdio.h>
int main()
{
	int input = 0;
	scanf("%d", &input);
	while (input)
	{
		printf("%d ", input % 10);
		input /= 10;
	}
	return 0;
}

 5. 多组数据 - 大写--> 小写

 先了解两个函数 : getchar() , putchar();

 这里的 EOF -----> End Of File

6.打印飞机(无输入)

int main()
{
	printf("     xx\n");
	printf("     xx\n");
	printf("xxxxxxxxxxxx\n");
	printf("xxxxxxxxxxxx\n");
	printf("    x  x\n");
	printf("    x  x\n");
	return 0;
}

7.十六进制转十进制

#include <stdio.h>
//十六进制转十进制
int main()
{
	printf("%15d\n", 0xABCDEF);
	return 0;
}

8.printf 函数的返回值

#include <stdio.h>

//法一
//printf 函数的返回值
int main()
{
	int ret = printf("Hello world!");
	printf("\n");
	printf("%d\n", ret);
	return 0;
}

//法二
//printf 函数的返回值
int main()
{
	printf("\n%d\n", printf("Hello world!"));
	return 0;
}

小练习:

#include <stdio.h>
int main()
{
	printf("%d", printf("%d", printf("%d", 43)));
	return 0;
}

 9. 判断字母

多组输入 , 使用 while 循环输入 , 注意 ---> 还需要消耗掉字符('\n')---> 使用getchar( )

#include <stdio.h>
//判断字母
int main()
{
	int ch = 0;
	//多组输入
	while ((ch = getchar()) !=EOF)
	{
		//判断并输出
		if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
		getchar();//处理\n
	}
	return 0;
}

 还可以使用函数 isalpha 

#include <stdio.h>
//判断字母
#include <ctype.h>
int main()
{
	int ch = 0;
	//多组输入
	while ((ch = getchar()) != EOF)
	{
		//判断并输出
		if (isalpha(ch))
		{
			printf("YES!\n");
		}
		else
		{
			printf("NO\n");
		}
		getchar();
	}
	return 0;
}

10.字符金字塔

输入一个字符,用它构成一个三角形金字塔

#include <stdio.h>
//字符金字塔
int main()
{
	//输入一个字符
	char ch = 0;
	ch = getchar();
	//输出金字塔
	int i = 0;
	//每循环一次,打印一行
	//每一行有两部分组成,空格和字符
	for (i = 0; i < 5; i++)
	{
		//空格
		int j = 0;
		for (j = 0; j < 4-i; j++)
		{
			printf(" ");
		}
		//字符
		for (j = 0; j <=i; j++)
		{
			printf("%c ", ch);
		}
		printf("\n");
	}
	return 0;
}

 11. 字符转ASCII码值

//字符转ASCII码值
int main()
{
	//输入字符
	char ch = 0;
	ch = getchar();
	//输出
	printf("%d\n", ch);
	return 0;
}

12.按照格式输入并交换输出 

int main()
{
	int a = 0;
	int b = 0;
	scanf("a=%d,b=%d", &a, &b);
	//交换
	int tmp = 0;
	tmp = a;
	a = b;
	b = tmp;
	printf("a=%d,b=%d", a, b);
	return 0;
}

 13. 2的n次方计算

不使用累计乘法的基础上,通过移位运算( << )来实现

int main()
{
	int n = 0;
	while (scanf("%d", &n) != EOF)
	{
		printf("%d\n", 1 << n);
	}
	return 0;
}

 14. 出生日期的输入输出

//出生日期的输入输出
int main()
{
	int year = 0;
	int month = 0;
	int day = 0;

	//按照格式输入
	scanf("%4d%2d%2d", &year, &month, &day);
	//输出
	printf("year=%4d\n", year);
	printf("month=%02d\n", month);
	printf("day=%02d\n", day);
	return 0;
}

15.输出一组ASCII码值

//ASCII码值
int main()
{
	char arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

 16.计算MBI指数

#include <stdio.h>
//计算体重指数  --- MBI
int main()
{
	//输入
	int weight = 0;
	int high = 0;
	double BMI = 0.0;
	scanf("%d %d", &weight, &high);

	//计算BMI指数
	BMI = weight / ((high / 100.0) * (high / 100.0));

	//输出
	printf("%.2lf\n",BMI);
	return 0;
}

注意 : 进行除法时 , 如果等号两边都是整数 , 进行的是整数除法 ;只要除号两边至少有一个浮点数时 , 进行的是小数的除法;

17.计算三角形的周长和面积 

C 语言提供了一个库函数 ---> 计算开方 ---> sqrt

 书写时需要包含头文件 <math.h>

#include <math.h>
int main()
{
	double a = 0.0;
	double b = 0.0;
	double c = 0.0;
	double circumference = 0.0;//周长
	double area = 0.0;
	//输入
	scanf("%lf %lf %lf", &a, &b, &c);

	//计算
	circumference = a + b + c;
	double p = circumference / 2;
	area = sqrt(p * (p - a) * (p - b) * (p - c));
	//输出
	printf("circumference=%.2lf area=%.2lf\n", circumference, area);
	return 0;
}

 18.计算球体的体积

//计算球的体积
#define PI 3.1415926
int main()
{
	double r = 0.0;//半径
	double v = 0.0;//体积
	//输入
	scanf("%lf", &r);
	
	//计算
	v = 4.0 / 3 * PI * r * r * r;

	//输出
	printf("%.3lf\n", v);
	return 0;
}

拓展 : 求某个数字的 n 次方 , 可以使用库函数 pow ---> 例如 :求2的6次方

//次方 -- pow
#include <math.h>
int main()
{
	int ret = (int)pow(2, 6);
	printf("%d\n", ret);
	return 0;
}

19.成绩的输入输出

//成绩输入输出
int main()
{
	int s1 = 0;
	int s2 = 0;
	int s3 = 0;
	
	//输入
	scanf("%d %d %d", &s1, &s2, &s3);

	//输出
	printf("score1=%d,score2=%d,score3=%d\n", s1, s2, s3);
	return 0;
}

20.变种水仙花数

把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个变种水仙花数。 

655   = 6* 55 + 65 * 5

1461 =1*461 + 14*61 + 146*1 

//变种水仙花数
// 求5位数中的所有Lily Number
//655  = 6*55 + 65*5
//1461 = 1*461 + 14*61 + 146*1
int main()
{
	int i = 0;
	for (i = 10000; i < 99999; i++)
	{
		//判断 i 是否为Liny Number
		int j = 0;
		int sum = 0;
		for (j = 10; j <= 10000; j *= 10)
		{
			sum += (i / j) * (i % j);
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

 21.浮点数的个位数

//浮点数的个位数字
//方法一
int main()
{
	//从根源上获取整数
	int n = 0;
	scanf("%d", &n);//13.141 --> 13
	printf("%d\n", n % 10);
	return 0;
}

//方法二
int main()
{
	double d = 0.0;
	scanf("%lf", &d);
	int n = (int)d;
	printf("%d\n", n % 10);
	return 0;
}

22.你能活多少秒?

一年约有3.156*10^7s,输入年龄,计算秒数

int main()
{
	int age = 0;
	//输入
	scanf("%d", &age);

	//计算
	long long second = age * 3.156e7;

	//输出
	printf("%lld\n", second);
	return 0;
}
  • 3.156e7   ---->  3.156*10^7
  • 当输入值为 200 时,int 类型的空间大小远远不够 ,应使用 long long 型 , 打印格式为 %lld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值