题目:统计字符:
在 30 个字符组成的一行输入中包括了大写字母、小写字母、数字和空格(值包含空格,不包含\t一类的字符)。我们通过循环将这 30 个字符读入了循环,并将读入的 30 个字符传入了无需返回值的四个函数。
练习对字符的操作和使用
练习使用 if,结合查询的 ASCII 码学会判断字符类型
练习自定义函数的实现,强化对自定义函数调用的理解
从给出的代码中学习数组做函数参数的传参方式
样例输入
1728SHr29 kselEs 28Jr8S919dKrz
样例输出
6
10
12
2
代码:
#include <stdio.h>
void upper_case_count(char arr[31]) {
// 请在下面实现统计并输出大写字母个数的功能
int i = 0;
int j = 0;
for (i = 0; i<= 30; i++){
if ((arr[i]>='A')&&(arr[i]<='Z')){
j++;
}
}
if (i==31){
printf("%d\n",j);
}
}
void lower_case_count(char arr[31]) {
// 请在下面实现统计并输出小写字母个数的功能
int i = 0;
int j = 0;
for (i = 0; i<= 30; i++){
if ((arr[i]>='a')&&(arr[i]<='z')){
j++;
}
}
if (i==31){
printf("%d\n",j);
}
}
void digit_count(char arr[31]) {
// 请在下面实现统计并输出数字个数的功能
int i = 0;
int j = 0;
for (i = 0; i<= 30; i++){
if ((arr[i]>='0')&&(arr[i]<='9')){
j++;
}
}
if (i==31){
printf("%d\n",j);
}
}
void space_count(char arr[31]) {
// 请在下面实现统计并输出空格个数的功能
int i = 0;
int j = 0;
for (i = 0; i<= 30; i++){
if (arr[i]==32){
j++;
}
}
if (i==31){
printf("%d\n",j);
}
}
int main() {
char string[31];
int i;
for (i = 0;i < 31; i++){
scanf("%c",&string[i]);
}
upper_case_count(string);
lower_case_count(string);
digit_count(string);
space_count(string);
return 0;
}
注意这里:
if (arr[i]==32){
如果写成if (arr[i]==' '){
也可以的,要写成双引号可是不行的哦。
辗转相除法实现求最大公约数和最小公倍数
练习函数定义
练习函数嵌套调用
练习函数递归调用
样例输入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) {
int t;
if (m <= n) {
// 请在这里继续完成 gcd 函数
t = n - m;
n = m;
m = t ;
if (t == 0){
return n;
}else{
return gcd(m, n);
}
} else{
t = m - n;
m = n;
n = t;
if (t == 0){
return m;
}else{
return gcd(m, n);
}
}
}
int lcm(int n, int m) {
// 请在这里继续完成 lcm 函数
return (n*m)/gcd(n,m);
}
迭代的关键就在于每次函数如果需要进一步进行迭代,那么其返回值要再次调用函数。
题目
给定一个 m行、n 列的矩阵 A和一个 n行、m列的矩阵B。你需要用矩阵 A与矩阵 B相乘,并且将 m行 m 列的乘积结果输出。
输入格式
测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的m 和 n(1≤m,n≤10),两个整数之间用一个空格分隔。接下来 m行,每行包含 n个整数,每两个整数之间用一个空格分隔。对应 m行 n列的矩阵 A。
再接下来n 行,每行包含 m个整数,每两个整数之间用一个空格分隔。对应 n行 m列的矩阵 B。
注:矩阵中的整数均大于等于 -100,小于等于 100
样例输入1
2 2
2 3
3 1
3 2
4 3
样例输出1
18 13
13 9
样例输入2
2 3
1 2 3
3 4 6
1 2
3 4
5 6
样例输出2
22 28
45 58
样例输入3
3 2
1 2
3 4
5 6
1 2 3
3 4 6
样例输出3
7 10 15
15 22 33
23 34 51
代码如下:
#include <stdio.h>
int main() {
int matrix_a[10][10];
int matrix_b[10][10];
int matrix_c[10][10];
int m;
int n;
int i,j,k;
scanf("%d%d",&m,&n);
for (i = 0 ; i < m ; i++){
for ( j = 0 ; j < n ; j++){
scanf("%d",&matrix_a[i][j]);
}
}
for (i = 0 ; i < n ; i++){
for ( j = 0 ; j < m ; j++){
scanf("%d",&matrix_b[i][j]);
}
}
for (i = 0 ; i < m ; i++){
for ( j = 0 ; j < m ; j++){
matrix_c[i][j] = 0;
for (k = 0 ; k < n ; k++){
matrix_c[i][j] = matrix_a[i][k]*matrix_b[k][j]+matrix_c[i][j];
}
if (j==(m-1)){
printf("%d\n",matrix_c[i][j]);
}else{
printf("%d ",matrix_c[i][j]);
}
}
}
return 0;
}
网友评论