C语言练习题

1.矩形的面积与周长

对于一个给定长和宽的矩形,输出它的周长和面积。

输入格式

你的程序将会接受一组由空格分隔开的整数,表示矩形的长和矩形的宽(长和宽均大于 0,小于等于 1000)。

输出格式

  • 输出第一行是这个矩形的周长。
  • 输出的第二行是这个矩形的面积。
  • 请注意不要多输出任何要求之外的内容。

习题目的

  • 练习使用 scanf
  • 练习基本运算
  • 练习使用 printf

小贴士

虽然程序将会接受的一组整数是由空格分隔开的,我们无需在 scanf 中将描述输入格式的第一个参数写成 "%d %d" 或者 "%d %d\n",而只需要写 "%d%d" 即可。这是因为 scanf 在处理输入时,如果格式占位符不是用于读入单个字符的 %c,它就会将空白字符(空格符、制表符和换行符)都视为一次输入的终止标记。

例如,当我们输入形如 3 5 这样的输入时,"%d%d" 会先用第一个 %d 匹配到 3,遭遇到一个空白字符(空格符)后,第二个 %d 会再匹配到 5,完成两个数字的读入。如果,我们的输入不是 3 5 而是先输入 3,回车后再输入 5,最终完成的输入效果也会是一样的(因为回车带来的换行符 \n 也是一个等效的空白字符)。

样例输入1

3 4

样例输出1

14
12

样例输入2

4 12

样例输出2

32
48

完整代码:

#include <stdio.h>
int main() {int a, b, C, S;scanf("%d %d\n", &a, &b);C  =  (a + b)*2;S  = a * b;printf("%d\n%d\n", C, S);return 0;
}

2.三角形的面积与周长

对于一个给定底和高的直角三角形,输出它的周长和面积。

提示:根据我们中学学习过的知识,直角三角形周长是两条直角边的长度 a, ,b 加一条斜边的长度 c,斜边的长度 c 可以由勾股定理计算获得:
c2=a2+b2c^2=a^2+b^2 c2=a2+b2

输入格式

你的程序将会接受一组由空格分隔开的实数,表示直角三角形的底和高(底和高均是大于 0.0,小于等于 1000.0 的实数)。

输出格式

  • 输出第一行是这个直角三角形的周长,保留小数点后 2 位数字(四舍五入)。
  • 输出的第二行是这个直角三角形的面积,保留小数点后 2 位数字(四舍五入)。
  • 请注意不要多输出任何要求之外的内容。

习题目的

  • 练习使用 double 类型的变量确保计算精度
  • 练习使用 math.h 引入数学库,并使用平方根函数 sqrt 和勾股定理完成斜边长计算
  • 尝试使用 "%lf %lf" 作为 scanf 的第一个参数,浮点数变量获取值的占位符
  • 尝试使用 "%.2f\n" 作为 printf 的第一个参数,确保输出的数字保留小数点后 2 位数字

样例输入1

3.0 4.0

样例输出1

12.00
6.00

样例输入2

5.0 7.0

样例输出2

20.60
17.50

完整代码:

#include <stdio.h>
#include<math.h>
int main() {double a, b, c, C, S;scanf("%lf %lf",&a, &b);c = sqrt(a * a + b * b);C = a + b + c;S = (a * b)/2;printf("%.2f\n%.2f", C, S);return 0;
}

3.圆形的面积与周长

对于一个给定的半径 r,计算对应圆的周长和面积。在计算过程中,π 的值请近似地取 3.14159。

提示 1:圆的周长公式是
2∗π∗r2*π*r 2∗π∗r
提示 2:圆的面积公式是
∗π∗r2*π*r^2 ∗π∗r2
输入格式

你的程序将会接受一个实数,表示圆的半径(半径是大于 0.0,小于等于 1000.0 的实数)。

输出格式

  • 输出第一行是这个圆的周长,保留小数点后 3 位数字(四舍五入)。
  • 输出的第二行是这个圆的面积,保留小数点后 3 位数字(四舍五入)。
  • 请注意不要多输出任何要求之外的内容。

习题目的

  • 复习 #define 宏替换
  • 输入、输出浮点数
  • 尝试使用 "%.3f\n" 作为 printf 的第一个参数,确保输出的数字保留小数点后 3 位数字

样例输入1

3.4

样例输出1

21.363
36.317

样例输入2

6.0

样例输出2

37.699
113.097

完整代码:

#include <stdio.h>
#define PI 3.14159
int main() {double r, C, S;scanf("%lf\n", &r);C = 2 * r * PI;S =  PI * r * r;printf("%.3f\n%.3f\n", C, S);return 0;
}

4.N阶数字

(1.N阶数字正方形

对于给定的整数 n。输出一个 n 行数字,n* 行数字中的第 ii 行包含 n 个由空格隔开的整数 i(1≤in)。

提示:请注意每行的末尾不要有多余的空格。

输入格式

你的程序将会接受一个整数,表示 n(0<n≤30)。

输出格式

  • 输出 n行数字
  • 对于 n行数字中的第 i 行包含 n个由空格隔开的整数 i

习题目的

  • 练习使用循环
  • 练习循环嵌套
  • 练习使用 if 控制行尾是否输出空格

样例输入1

1

样例输出1

1

样例输入2

3

样例输出2

1 1 1
2 2 2
3 3 3
完整代码:
#include <stdio.h>
int main() {int n;  int i, j;   int c; /* i value and number of row and column, j value in row */  scanf("%d", &n);  for (i = 1; i <= n; i++)  {  printf("%d", i);  for (j = i,c = 1; c < n; c++)  {  if (c <= n-1)  {  printf(" ");  }  printf("%d",j);  }  if (i <= n-1)  {  printf("\n");  }  }  return 0;
}

(2.N阶数字三角形

给定一个整数 n。输出一个 n 行数字,n 行数字中的第 i 行包含 ni*+1 个由空格隔开的整数 i*( 1≤in)。

提示:请注意每行的末尾不要有多余的空格。

输入格式

你的程序将会接受一个整数,表示 n*(0 <*n≤30)。

输出格式

  • 输出 n 行数字
  • 对于 n* 行数字中的第 ii 行包含 n - i + 1 个由空格隔开的整数 i*(1≤i≤*n)
  • 如果对输出格式理解有一定困难,请参考样例输出

习题目的

  • 练习使用循环
  • 练习循环嵌套
  • 练习使用 if 控制行尾是否输出空格

​ 样例输入1

2

样例输出1

1 1
2

样例输入2

4

样例输出2

1 1 1 1
2 2 2
3 3
4
完整代码:
#include <stdio.h>
int main() {int n, c;int i, j;scanf("%d", &n);for (i = 1; i <= n; i++){printf("%d", i);for (j = i, c = n - i; c > 0; c--){if (i < n){printf(" ");}            printf("%d", j);                      }if (i < n){printf("\n");}}return 0;
}

(3.N阶数字递减三角形

给定一个整数 n。输出一个 n 行数字,n行数字中的第 i行包含 n - i + 1个由空格隔开的整数,其中第一个数为 n - i + 1,之后每一个数都比前一个数小 1(1 ≤i≤n)。

提示:请注意每行的末尾不要有多余的空格。

输入格式

你的程序将会接受一个整数,表示 n(0 <n≤30)。

输出格式

  • 输出一个 n* 行数字
  • n 行数字中的第 ii 行包含 n - i + 1 个由空格隔开的整数(1 ≤in
  • 每行第一个数为 n - i + 1,之后每一个数都比前一个数小 1(1≤in
  • 如果对输出格式理解有一定困难,请参考样例输出

习题目的

  • 练习使用循环
  • 练习循环嵌套
  • 练习使用 if 控制行尾是否输出空格

样例输入1

2

样例输出1

2 1
1

样例输入2

4

样例输出2

4 3 2 1
3 2 1
2 1
1
完整代码:
#include <stdio.h>
int main() {int n;int i, j;scanf("%d", &n);for (i = n; i > 0; i--) {printf("%d", i);if (i > 1) {printf(" ");}for (j = i-1; j > 0; j--){printf("%d", j);if (j > 1)  {printf(" ");}}if (j = 1){printf("\n");}}return 0;
}

5.乘法表

通过使用两层循环,我们可以打出小学时候就曾经背过的乘法表。这一节,你需要独立输出一个 N×N的乘法表。

例如当 N = 3时,你需要输出一个3×3 的乘法表:

1*1=1   1*2=2   1*3=3
2*2=4   2*3=6
3*3=9

输入格式

测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入一个正整数 N(可以确定测评机输入的 N 小于 40),用于描述你需要输出的乘法表的规模。

输出格式

输出为题目描述中的乘法表,包括 N 行。其中第 r 行(r≥1)应该有 N−(r−1) 个乘法等式,每两个乘法等式之间用一个制表符\t分隔,最后一个等式后面不需要输出制表符\t。请注意,每一个乘法等式的*之前的数字应与行号 r 相同。

习题目的

  • 练习使用循环
  • 练习循环嵌套
  • 练习使用 if 控制行尾是否输出空格

样例输入1

2

样例输出1

1*1=1   1*2=2
2*2=4

样例输入2

3

样例输出2

1*1=1   1*2=2   1*3=3
2*2=4   2*3=6
3*3=9

完整代码:

#include <stdio.h>
int main() {int n;scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){printf("%d*%d=%d",i,j,i*j);if(j!=n){printf("\t");}}printf("\n");}return 0;
}

6.字符计数

在 30 个字符组成的一行输入中包括了大写字母、小写字母、数字和空格(值包含``,不包含\t一类的字符)。我们通过循环将这 30 个字符读入了循环,并将读入的 30 个字符传入了无需返回值的四个函数。

请完成这四个函数,分别在四个函数中输出 30 个字符中的大写字母(upper_case_count 函数)、小写字母(lower_case_count 函数)、数字(digit_count)和空格(space_count)。

输入格式

你的程序将需要接受一行字符输入,输入为大写字母、小写字母、数字和空格组成的共 30 个字符。

输出格式

  • 每个函数中均按照要求输出该种字符的总数并换行
  • 主函数已经完成的部分会保证最终输出的顺序为大写字母数、小写字母数、数字数、空格数

习题目的

  • 练习对字符的操作和使用
  • 练习使用 if,结合查询的 ASCII 码学会判断字符类型
  • 练习自定义函数的实现,强化对自定义函数调用的理解
  • 从给出的代码中学习数组做函数参数的传参方式

样例输入

1728SHr29 kselEs 28Jr8S919dKrz

样例输出

6
10
12
2

完整代码:

#include <stdio.h>
void upper_case_count(char arr[31]) {// 请在下面实现统计并输出大写字母个数的功能int t = 0;for(int i = 0; i < 30; i++) {if(arr[i] >= 'A' && arr[i] <= 'Z') {t++;}}printf("%d\n", t);
}
void lower_case_count(char arr[31]) {// 请在下面实现统计并输出小写字母个数的功能int t = 0;for(int i = 0; i < 30; i++) {if(arr[i] >= 'a' && arr[i] <= 'z') {t++;}}printf("%d\n", t);}
void digit_count(char arr[31]) {// 请在下面实现统计并输出数字个数的功能int t = 0;for(int i = 0; i < 30; i++) {if(arr[i] >= '0' && arr[i] <= '9') {t++;}}printf("%d\n", t);}
void space_count(char arr[31]) {// 请在下面实现统计并输出空格个数的功能int t = 0;for(int i = 0; i < 30; i++) {if(arr[i] == ' ') {t++;}}printf("%d\n", t);}
int main() {char string[31];int i;i = 0;for(i = 0; i < 30; i++) {scanf("%c", &string[i]);}upper_case_count(string);lower_case_count(string);digit_count(string);space_count(string);return 0;}

7.最大公约数与最小公倍数

我们学习了函数和函数的递归调用后,我们可以用它们来实现一个求两个整数最大公因数和最小公倍数的程序。

我们都知道,对于两个整数 n,m,它的最大公因数 gcd(n,m) 是 nn 和 mm 最大的公共因数。我们可以通过 辗转相除法 的方式将它求出。

而最小公倍数 lcm(n,m) 则是 nm 的公共倍数中最小的数。可以通过下面的式子求出:
lcm(n,m)=(n∗m)/gcd(n,m)lcm(n,m)=(n*m)/gcd(n,m) lcm(n,m)=(n∗m)/gcd(n,m)
在这里,你完成的程序将被输入两个正整数 nm(你可以认为测评机给出的 nm 均小于 1000),程序需要求出 nm 最大公因数和最小公倍数,并把它们输出出来。

输入格式

测评机会反复运行你的程序。每次程序运行时,输入为一行,包括一组被空格分隔开的符合描述的正整数 mn

输出格式

输出为两行,每行为一个数字。第一行为 nm 的最大公因数,第二行为 n* 和 m 的最小公倍数。

习题目的

  • 练习函数定义
  • 练习函数嵌套调用
  • 练习函数递归调用

样例输入1

12 33

样例输出1

3
132

样例输入2

131 7

样例输出2

1
917

完整代码:

#include <stdio.h>
int gcd(int n, int m);
int lcm(int n, int m);
int main() {int n, m;scanf("%d%d", &n, &m);  printf("%d\n", gcd(n, m));printf("%d\n", lcm(n, m));return 0;
}
int gcd(int n, int m) {if (m <= n) {// 请在这里继续完成 gcd 函数int c = 1;while( c ){c = n % m;n = m;m = c;}return n;} else {return gcd(m, n);}
}
int lcm(int n, int m) {// 请在这里继续完成 lcm 函数
int c = 0;for (c = n;; c++){if ((c%n == 0) && (c%m == 0)){break;}}return c;
}

C#入门练习题(1-7例)相关推荐

  1. mysql怎么分组计算逾期率_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  2. 蓝桥杯入门练习题斐波那契数列

    蓝桥杯入门练习题 斐波那契数列 #include <stdio.h> #include <stdlib.h>int main() {long long i, j, f1 = 1 ...

  3. Java编程入门与应用 P104—例4-12(学生管理系统——密码的重复验证)

    Java编程入门与应用 P104-例4-12 在第一次进入系统时要求管理员设置一个密码,出于安全考虑密码需要输入两次,如果两次输入的密码一致才生效,否则提示失败 import java.util.Sc ...

  4. Java编程入门与应用 P124——例5-4(计算90度的正弦值、0度的余弦值、1的反正切值、120度的弧度值)

    Java编程入门与应用 P124--例5-4 计算90度的正弦值.0度的余弦值.1的反正切值.120度的弧度值 因为参数里都是double值,需要以弧度代替角度来实现 /*** Java编程入门与应用 ...

  5. Python入门练习题026:字符串写入的行数

    """ 记录下自己自学python和练习写的代码,等以后进阶后,再回来看一下曾经自己写的代码有多蠢Python入门练习题026:字符串写入的行数 把字符串S字符写入行中, ...

  6. MySQL代做题_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  7. Java编程入门与应用 P210 例8-8——演示创建实例的方法

    Java编程入门与应用 P210 例8-8--演示创建实例的方法 显式转换和隐式转换的概念 /*** Java编程入门与应用 P210 例8-8--演示创建实例的方法** 显式转换和隐式转换的概念*/ ...

  8. Java编程入门与应用 P80——例3-24(小明参加一个1000米的长跑比赛每跑完一圈,教练就会问他是否要坚持下去,如果回答yes,则继续跑,否则表示放弃。)

    Java编程入门与应用 P80--例3-24 小明参加一个1000米的长跑比赛,在100米的跑道上,他循环地跑着,每跑一圈,剩余的路程就会减去100米,要跑的圈数就是循环的次数.但是,在每跑完一圈, ...

  9. Java编程入门与应用 P93——例4-2( 使用“+”连接运算符,连接3个数组和1个字符串,学生考试信息)

    Java编程入门与应用 P93--例4-2 使用"+"连接运算符,连接3个数组和1个字符串 学生考试信息 /*** Java编程入门与应用 P93--例4-2* 使用"+ ...

  10. Java编程入门与应用 P173——例7-2(创建包含5个元素的int类型的属猪,然后分别将元素的值设置为1、2、3、4、5、8)

    Java编程入门与应用 P173--例7-2 创建包含5个元素的int类型的属猪,然后分别将元素的值设置为1.2.3.4.5.8 创建一维数组的格式: 数据类型[] 属数组名; 分配空间格式: 数据类 ...

最新文章

  1. 面试官问:线程池除了常见的4种拒绝策略,你还知道哪些?
  2. docker mysql 报错 “Too many connections 1040“ 修改最大连接数 未生效 解决方法
  3. Sun公司因为不懂销售和运营,导致陨落,最终软件还是打败了硬件
  4. Tengine+LUA+Nginx-GridFS+jemalloc编译安装
  5. shell脚本:lvs启动简易脚本
  6. 硬件知识:串口通讯的起始、数据、停止位是怎么分配的?
  7. 说一下output子句
  8. 一道水的不能再水的题目
  9. LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)
  10. mysql binlog查看_MySQL--17 配置binlog-server 及中间件
  11. 面试阿里,我还是挂在了第四轮……
  12. 指数函数中x的取值范围_谨记!高考数学中容易出错的几个地方
  13. wps怎么画网络图_尼玛,WPS竟然悄悄搞了个免费的公文写作AI...【石说】
  14. PPP协议体系的实现
  15. 多线程编程学习总结(转载)
  16. SQL中replace函数
  17. Linux查看和注销用户
  18. 计算机网络数据链路层之高速以太网(含使用以太网进行宽带接入)
  19. JavaScript学习第八天笔记(Function)
  20. Lion Disk Maker让你一键制作Lion系统安装U盘

热门文章

  1. 新购笔记本电脑验机方法(看是否是新机)
  2. mongoDB 修改密码
  3. ORA-15064 ORA-03113 - 测试库案例
  4. 几家线上少儿英语(vipkid、哒哒英语等)试听感想
  5. ES6数组去重的方法
  6. 叶子结点和分支节点_数据结构中,满二叉树,结点,叶子节点,是什么?
  7. 【FPGA】vivado Error:‘launch_simulation‘failed due to earlier errors.
  8. 多旋翼无人机建模之陀螺力矩
  9. SDNU 1102.小树林(水题)
  10. Python游戏制作(一)