C语言编程入门训练(二)

C语言编程入门训练(二)


接上篇入门训练(一)—— 博客入口


练习十一:ASCII码

题目描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。

73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

转换输出题目中给出的所有ASCII到对应的字符。

代码如下:

#include  <stdio.h>

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

练习十二:出生日期输入输出

题目描述

输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

输入描述:

输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。

输出描述:

三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。

示例1
输入

20130225

输出

year=2013
month=02
date=25

代码如下:

#include <stdio.h>

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("date=%02d\n",day);
    return 0;
}

备注:
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。


练习十三:按照格式输入并交换输出

题目描述

输入两个整数,范围-231~231-1,交换两个数并输出。

输入描述:

输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔。

输出描述:

把两个整数按格式输出,中间用“,”分隔。

示例1

输入

a=1,b=2

输出

a=2,b=1

代码如下:

#include <stdio.h>

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

备注:

如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

练习十四:字符转ASCII值

题目描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码。

输入描述:

一行,一个字符。

输出描述:

一行,输出输入字符对应的ASCII码。

示例1

输入

c

输出

99

代码如下:

#include <stdio.h>

int main()
{
    char ch;
    scanf("%c",&ch);
        printf("%d",ch);
    return 0;
}

练习十五:计算表达式的值

题目描述

请计算表达式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。

输入描述:

无。

输出描述:

(-8+22)×a-10+c÷2计算之后的结果,为一个整数。

代码如下:

#include <stdio.h>
int main()
{
    int a=40;
    int c=212;
    int sum=0;
        sum=(-8+22)*a-10+c/2;
    printf("%d\n",sum);
    return 0;
}

练习十六:计算带余除法

题目描述

给定两个整数a和b (-10,000 < a,b < 10,000),计算a除以b的整数商和余数。

输入描述:

一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。

输出描述:

一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。

示例1

输入

15 2

输出

7 1

代码如下:

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

练习十七:kiki算数

题目描述

问题:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:

  1. 只保留该数的最后两位,例如:对KiKi来说1234等价于34;
  2. 如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。

例如:45+80 = 25
要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。

输入描述:

一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 231-1)。

输出描述:

针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。

示例1

输入

45 80

输出

25

代码如下:

#include <stdio.h>

int main()
{
    int a;
    int b;
    scanf("%d %d",&a,&b);
    printf("%d\n",(a%100+b%100)%100);
    //printf("%d",(a+b)%100);
    
    return 0;
}

练习十八:浮点数的个位数字

题目描述

给定一个浮点数,要求得到该浮点数的个位数。

输入描述:

一行,包括一个浮点数。

输出描述:

一行,包含一个整数,为输入浮点数对应的个位数。

示例1

输入

13.141

输出

3

代码如下:

#include <stdio.h>
int main()
{
    float c;
    scanf("%f",&c);
    printf("%d",(int)c%10);
    return 0;
}

练习十九:你能活多少秒?

题目描述

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

输入描述:

一行,包括一个整数age(0<age<=200)。

输出描述:

一行,包含一个整数,输出年龄对应的秒数。

示例1
输入

20

输出

631200000

代码如下:

#include <stdio.h>
int main()
{
	int age=0;
	scanf("%d", &age);
	long long ret = age*3.156e7;
		printf("%lld", ret);

	return 0;
}

备注:c语言的指数形式表示要注意,还有int类型的数据值的大小是有限的,对于比较大的数,我们要有long 类型或者 long long 储存。


练习二十:时间转换

题目描述

给定秒数seconds (0< seconds < 100,000,000),把秒转化成小时、分钟和秒。

输入描述:

一行,包括一个整数,即给定的秒数。

输出描述:

一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。

示例1

输入

3661

输出

1 1 1

代码如下:

#include <stdio.h>

int main()
{
    int sec=0;
    scanf("%d",&sec);
    printf("%d %d %d",sec/60/60,sec/60%60,sec%60);
    return 0;
}

备注:注意题目中时,分,秒的正确表达形式。


练习二十一:总成绩和平均分计算

题目描述

依次输入一个学生的3科成绩,在屏幕上输出该学生的总成绩以及平均成绩。

输入描述:

一行,3科成绩,成绩之间用一个空格隔开。

输出描述:

一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。

示例1

输入

79.5 80.0 98.0

输出

257.50 85.83

代码如下:

#include <stdio.h>
int main()
{
    float a,b,c;
    scanf("%f %f %f",&a,&b,&c);
    printf("%.2f %.2f",a+b+c,(a+b+c)/3.0);
    return 0;
}

练习二十二:计算体重指数

题目描述

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

输入描述:

一行,两个整数,分别表示体重(公斤),身高(厘米),中间用一个空格分隔。

输出描述:

一行,BMI指数(保留两位小数)。

示例1

输入

70 170

输出

24.22

代码如下:

#include <stdio.h>
#include<math.h>
int main()
{
    int wei,high;
    scanf("%d %d",&wei,&high);
   printf("%.2f",wei/(pow((high/100.0),2)));
    return 0;
}

备注:数学指数函数要引用头文件<math.h>,要熟悉基本数学符号的函数


练习二十三:计算三角形的周长和面积

题目描述

根据给出的三角形3条边a, b, c(0 < a, b, c < 100,000),计算三角形的周长和面积。

输入描述:

一行,三角形3条边(能构成三角形),中间用一个空格隔开。

输出描述:

一行,三角形周长和面积(保留两位小数),中间用一个空格隔开,输出具体格式详见输出样例。

示例1

输入

3 3 3

输出

circumference=9.00 area=3.90

代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d%d%d", &a, &b, &c);
	double circumference = a + b + c;
	float p = (a + b + c) / 2.0;
	float area = sqrt(p*(p - a)*(p - b)*(p - c));
		
		printf("circumference=%.2f area=%.2f", circumference, area);

		return 0;
}

备注:熟悉平方函数的应用,还有计算三角形面积的海伦公式要知道。


练习二十四:计算球体的体积

题目描述

给定一个球体的半径,计算其体积。其中球体体积公式为 V = 4/3*πr3,其中 π= 3.1415926。

输入描述:

一行,用浮点数表示的球体的半径。

输出描述:

一行,球体的体积,小数点后保留3位。

示例1

输入

3.0

输出

113.097

代码如下:

#include  <stdio.h>
#include  <math.h>
int main()
{
    double r=0.0;
    double pi=3.1415926;
    scanf("%lf",&r);
    printf("%.3lf",4.0/3*pi*r*r*r);
    return 0;
}

练习二十五:大小写转换

题目描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。

示例1
输入

A
B

输出

a
b

代码如下:

#include <stdio.h>
int main()
{
	char ch ;
	while ((ch = getchar()) != EOF)
	{
		getchar();
		putchar(ch+32);

		printf("\n");
	}
	return 0;
}

备注:多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。


练习二十六:2的n次方计算

题目描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

输入描述:

多组输入,每一行输入整数n(0 <= n < 31)。

输出描述:

针对每组输入输出对应的2的n次方的结果。

示例1

输入

2
10

输出

4
1024

代码如下:

#include <stdio.h>

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

备注:要熟悉位操作符的使用!!!





未完待续…

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RAIN 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值