物联网工程学院学生科协第一次软件培训

物联网工程学院学生科协第一次软件培训

国庆大礼包基础组解答

1.输入两个整数a、b,交换它们的数值

核心代码

int t;
 t = a;
 a = b;
 b = t;

2.从键盘输入一个整形数据,编写程序判断该数的位数

核心代码

do {
      cnt++;
      a = a/10;
} while (a != 0);

tips:比较/与%的差别

3.求0到1000(包括0和1000)既可以被5整除又可以被13整除的数

核心代码

i%5 == 0 && i%13 == 0

4.一枝钢笔5元,一枝铅笔3元,三块橡皮共1元。用100元买100件文具(钢笔、铅笔、橡皮都可),问钢笔、铅笔、橡皮能买多少只

核心代码

for(i = 0;i <= 20;i++)
	for(j = 0; j <= (100 - i*5) / 3; j++)
	{
		x = i;
		y = j;
		n = 100 - i*5 - j*3;
		if ((3*n + i + j) == 100)
		{
			z = n * 3;
			printf("x=%d, y=%d, z=%d\n", x, y, z);
		}
	}

5.从键盘输入一个整数,这个数如果为正数,输出Yes,否则输出No。

if else

6.输入一个整数,输出它的阶乘

注意题目数据范围

int n;
long long m = 1;
scanf("%d", &n);
int i;
for (i = 2; i <= n; i++) {
	m = m * i;
}
printf("%lld", m);

7.输入一个华氏温度,输出摄氏温度,计算公式为c=5/9*(F-32).要求结果保留两位小数

tips:

1)整数除法需注意小数除大数,结果为零

2)保留小数点后x位则为%.xd

float F,c;
scanf("%f", &F);
c = 5.0 / 9 * (F - 32);
printf("%.2f", c);

8.输入两个数,求这两个数的最大公约数

tips:辗转相除法

核心代码

while (y != 0) {
	t = x % y;
	x = y;
	y = t;
}

9.输入圆的半径,计算并输出圆面积与周长,要求结果保留三位小数

tips:宏定义

#define PI 3.14

核心代码

float r;
float c, s;
scanf("%f", &r);
c = 2 * PI * r;
s = PI * r * r;
printf("%.3f\n%.3f\n", s, c);

10.计算两点之间的距离,结果保留三位小数。两个点分别为(x1, y1), (x2, y2)。

tips:

1)头文件(math.h)

2)sqrt()函数

核心代码

scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
x = x1 - x2;
y = y1 - y2;
ans = sqrt(x*x + y*y);

国庆大礼包提高组解答

1.输入一个数列,输出数列中的奇数

tips:奇数的判断:(i%2==1)

核心代码

for (i = 0; i < n; i++) {
	scanf("%d", &a);
	if (a%2 == 1)
		printf("%d ", a);
}

2.输入n和a的值,计算a+aa+……+aaaaaaa(n个),注:"aa"是指a*a哦

tips:

两个变量:一个存放乘积 一个存放和

核心代码

for (i = 1;i <= n; i++) {
	s = s * a;
	sum = sum + s;
}

3.求三行三列矩阵a[3] [3]={1,2,3,4,5,6,7,8,9}的对角元素的和

tips:二维数组,形如a[i] [j],利用双重循环进行遍历

对角元素:i==j 非对角元素:i!=j

核心代码

for (i = 0; i <= 2; i++) {
	for (j = 0; j <= 2; j++) {
		if (i == j) {
			ans = ans + a[i][j];
		}
	}
}

4.输入三个学生四门课程的成绩,计算每个学生的总分和平均成绩并输出结果保留一位小数

tips:数组,形如a[i],利用循环遍历

核心代码

int s, a;
double sum[3], avg[3];
int i, j;
for (i = 0; i < 3; i++) {
	sum[i] = 0;
	for (j = 0; j < 4; j++) {
		scanf("%d", &a);
		sum[i] = sum[i] + a;
	}	 
	avg[i] = sum[i] / 4;
}
for (i = 1; i <= 3; i++) {
	printf("%.1lf ", sum[i]);
	printf("%.1lf\n", avg[i]);
}

5.输入整数n的值,计算并输出 1 2 1^2 12 + 2 2 2^2 22 + 3 2 3^2 32 + …… + n 2 n^2 n2的值,要求编写函数实现求平方的功能

核心代码

int f(int m)
{
	int s;
	s = m * m;
	return s;
}

6.输入一个不多于5位的自然数,判断它是几位数,并逆序输出各位数字

先判断位数,再逆序输出

char s[100000];
scanf("%s", s);
n = strlen(s);
printf("%d\n" ,n);
for (i = n - 1; i >= 0; i--) {
	a = s[i] - '0';
	printf("%d ", a);
}

7.输出Fibonacci数列的前40项

tips:

  1. 第一项为0,第二项为1

  2. F[i]=F[i-1]+F[i-2]

核心代码

int a[40] = { 0, 1 };
int i, j;
for (i = 0; i < 40; i++) {
	j++; 
	a[i+2] = a[i] + a[i+1];
	printf("%-10d", a[i]);
	if (j%8 == 0) {
		printf("\n");
	}
}

8.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数(保留小数点后三位)

#include<stdio.h>

int main() {
	int n;
	double s = 0;
	scanf("%d", &n);
	if (n <= 100000) {
		s = n * 0.1;
	}
	else if (n > 100000 && n <= 200000) {
		s = 100000 * 0.1 + (n-100000) * 0.075;
	}
	else if (n > 200000 && n <= 400000) {
		s = 100000 * 0.1 + 100000 * 0.075 + (n-200000) * 0.05;
	}
	else if (n > 400000 && n <= 600000) {
		s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (n-400000) * 0.03;
	}
	else if (n > 600000 && n <= 1000000) {
		s = 100000*0.1 + 100000*0.075 + 200000*0.05 + 200000*0.03 + (n-600000)*0.015;
	}
	else {
		s = 100000*0.1 + 100000*0.075 + 200000*0.05 + 200000*0.03 + 400000*0.015 + (n-1000000)*0.01;
	}
	printf("%.3f", s);
	return 0;
}

9.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月兔子共有多少对?

斐波那契数列典型应用

#include <stdio.h>

int main() {
	int f[50];
	int n, i;
	f[1] = 1;
	f[2] = 1;
	scanf("%d", &n);
	for (i = 3; i <= n; i++) {
		f[i] = f[i-1] + f[i-2];
	}
	printf("%d", f[n]);
}

10.编写函数实现将输入的小写字母转换为大写字母(若输入小写则转换,大写字母直接输出,其他字符输出提示“请输入字母”)

tips:

  1. 函数

  2. 小写字母转换

  3. ASCII码的应用

核心代码

char change(char b) {
	char c = '#';
	if (b >= 'a' && b <= 'z') {
		c = b - 32;
	}
	else if (b >= 'A' && b <= 'Z') {
		c = b;
	}
	return c;
}

编程tips

  1. 程序框架
int main() {
	// 代码块
	// ...
	return 0;
}
  1. “=”是赋值,“==”是相等

  2. (目前)用scanf必加&,printf不能用,&为取地址

  3. const int 常量,常量用大写字母

  4. 整型变量的除法,若希望结果保留小数,两种方案:a.1.0*整型变量;b.定义变量为double型

  5. 优先级:算数运算符>关系运算符>赋值运算符

  6. 循环需注意:循环内部须有改变退出循环条件的操作

  7. do while 语句:do{……}while;

  8. 阶乘的小技巧:若定义一变量存放乘积,则变量初始化为1;若变量存放加和,则变量初始化为0

培训作业

自由开放型:

大家利用培训中所讲的知识点,小技巧,易错点,自己编写至少三个题目并写出解决方案。

(题目上限:不限,能设计出涉及所有培训所讲的内容当然最棒啦!)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值