赞
踩
C语言练习题
对于一个给定长和宽的矩形,输出它的周长和面积。
输入格式
你的程序将会接受一组由空格分隔开的整数,表示矩形的长和矩形的宽(长和宽均大于 0,小于等于 1000)。
输出格式
习题目的
scanfprintf小贴士
虽然程序将会接受的一组整数是由空格分隔开的,我们无需在 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;
}
对于一个给定底和高的直角三角形,输出它的周长和面积。
提示:根据我们中学学习过的知识,直角三角形周长是两条直角边的长度 a, ,b 加一条斜边的长度 c,斜边的长度 c 可以由勾股定理计算获得:
c
2
=
a
2
+
b
2
c^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;
}
对于一个给定的半径 r,计算对应圆的周长和面积。在计算过程中,π 的值请近似地取 3.14159。
提示 1:圆的周长公式是
2
∗
π
∗
r
2*π*r
2∗π∗r
提示 2:圆的面积公式是
∗
π
∗
r
2
*π*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;
}
对于给定的整数 n。输出一个 n 行数字,n* 行数字中的第 ii 行包含 n 个由空格隔开的整数 i(1≤i≤n)。
提示:请注意每行的末尾不要有多余的空格。
输入格式
你的程序将会接受一个整数,表示 n(0<n≤30)。
输出格式
习题目的
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; }
给定一个整数 n。输出一个 n 行数字,n 行数字中的第 i 行包含 n−i*+1 个由空格隔开的整数 i*( 1≤i≤n)。
提示:请注意每行的末尾不要有多余的空格。
输入格式
你的程序将会接受一个整数,表示 n*(0 <*n≤30)。
输出格式
习题目的
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; }
给定一个整数 n。输出一个 n 行数字,n行数字中的第 i行包含 n - i + 1个由空格隔开的整数,其中第一个数为 n - i + 1,之后每一个数都比前一个数小 1(1 ≤i≤n)。
提示:请注意每行的末尾不要有多余的空格。
输入格式
你的程序将会接受一个整数,表示 n(0 <n≤30)。
输出格式
习题目的
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; }
通过使用两层循环,我们可以打出小学时候就曾经背过的乘法表。这一节,你需要独立输出一个 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;
}
在 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; }
我们学习了函数和函数的递归调用后,我们可以用它们来实现一个求两个整数最大公因数和最小公倍数的程序。
我们都知道,对于两个整数 n,m,它的最大公因数 gcd(n,m) 是 nn 和 mm 最大的公共因数。我们可以通过 辗转相除法 的方式将它求出。
而最小公倍数 lcm(n,m) 则是 n 和 m 的公共倍数中最小的数。可以通过下面的式子求出:
l
c
m
(
n
,
m
)
=
(
n
∗
m
)
/
g
c
d
(
n
,
m
)
lcm(n,m)=(n*m)/gcd(n,m)
lcm(n,m)=(n∗m)/gcd(n,m)
在这里,你完成的程序将被输入两个正整数 n 和 m(你可以认为测评机给出的 n 和 m 均小于 1000),程序需要求出 n 和 m 最大公因数和最小公倍数,并把它们输出出来。
输入格式
测评机会反复运行你的程序。每次程序运行时,输入为一行,包括一组被空格分隔开的符合描述的正整数 m 和 n。
输出格式
输出为两行,每行为一个数字。第一行为 n 和 m 的最大公因数,第二行为 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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。