字符串
题目描述 :
输入一个字符串,将其中所有的大写和小写字母改成该字母的下一个字母,z 的下一个字母为 a。输入 输入一个不包含空格的字符串。字符串长度小于 50。
输出 输出一行,为转换后的字符串。
样例输入
ABCDZ123abcdefz
样例输出
BCDEA123bcdefga
#include<stdio.h>
char str[55];
int main(){
scanf("%s", str);
for(int i = 0; str[i]; i++){
if(str[i] <= 'z' && str[i] >= 'a' || str[i] <= 'Z' && str[i] >= 'A'){
if(str[i] == 'z' || str[i] == 'Z') str[i] -= 25;
else ++str[i];
}
}
printf("%s\n", str);
return 0;
}
字符反转
题目描述 :
输入一个字符串,然后把这个字符串反转输出。输入 输入一个字符串,不包含空格。(长度小于 50)
输出 输出这个字符串的反转。
样例输入
1234567890
样例输出
0987654321
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
char str[55];
int main(){
scanf("%s", str);
int len = strlen(str);
for(int i = len - 1; i >= 0; i--){
printf("%c", str[i]);
}
printf("\n");
return 0;
}
字符串中A的数量
题目描述 :
输入一个字符串,统计其中字符 A 的数量并输出。输入 输入一个不带空格的字符串,字符串长度不超过 100。
输出 输出字符串中字符 A 的数量。
样例输入
AabdkeaoektA
样例输出
2
#include<stdio.h>
char str[105];
int main(){
scanf("%s", str);
int cnt = 0;
for(int i = 0; str[i]; i++){
if(str[i] == 'A') ++cnt;
}
printf("%d\n", cnt);
}
抽奖
题目描述 :
公司举办年会,为了活跃气氛,设置了摇奖环节。参加聚会的每位员工都有一张带有号码的抽奖券。 现在,主持人一次公布n个不同的获奖号码,小谢看着自己抽奖券上的号码num,无比紧张。
请编写一个程序,如果小谢获奖了,请输出他中奖的是第几个号码;如果没有中奖,请输出0。
输入 第一行一个正整数n表示有n个获奖号码,2<n≤100。
接下来n行包含n个正整数,每行一个数,表示依次公布的n个获奖号码。
最后一行一个正整数num,表示小谢抽奖券上的号码。
输出 一行一个整数,如果小谢中奖了,表示中奖的是第几个号码;如果没有中奖,则为0。
样例输入
7 17 2 3 4 9555 6 1 3
样例输出
3
#include<stdio.h>
int num[105];
int main(){
int n, i = 0;
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &num[i]);
int x, flag = 0;
scanf("%d", &x);
for(i = 0; i < n; i++){
if(num[i] == x){
flag = 1;
break;
}
}
if(flag){
printf("%d\n", i + 1);
} else {
printf("0");
}
return 0;
}
校门外的树
题目描述:
学校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置,数轴上的每个整数点(即0,1,2,……,L)都有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任意区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。请计算将这些树都移走后,马路上还有多少棵树。输入 第一行有两个正整数L(1≤L≤10000)和M(1≤M≤100), L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。
接下来的M行,每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
输出 一行一个整数,表示马路上剩余的树的数目。
样例输入
500 3 150 300 100 200 470 471
样例输出
298
#include<stdio.h>
int arr[100005];
int main(){
int l, m, cnt = 0;
scanf("%d%d", &l, &m);
for(int i = 0; i <= l; i++){
arr[i] = 1;
}
while(m--){
int x, y;
scanf("%d%d", &x, &y);
for(int i = x; i <= y; i++){
arr[i] = 0;
}
}
for(int i = 0; i <= l; i++){
if(arr[i]) ++cnt;
}
printf("%d\n", cnt);
return 0;
}
方阵对角线
题目描述 :
理工学院的老师让同学们排成了一个 n∗n 的方阵。好奇的你想知道这个方阵的对角线 上的同学的身高都是怎么样的。
现已知所有同学的身高,数值为整数,单位:厘米。要求输出所有对角线上(自左向右、自上 向下编号时行列编号相同)的同学的身高。输入 输入共有n+1行:
第一行有一个整数 n 表示方阵中的学生行、列数(0<n≤30 ) 之后 行每行有
n个由空格分隔的整数,分别表示方阵中对应位置同学的身高(大于等 于 140 ,小于 190 ),单位:厘米。
输出 输出共有 n行,每行一个整数,为对角线上同学的身高。
样例输入
3
140 160 140
183 172 170
180 181 174
样例输出
140
172
174
#include<stdio.h>
int arr[35][35];
int main(){
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
scanf("%d", &arr[i][j]);
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i == j){
printf("%d\n", arr[i][j]);break;
}
}
}
return 0;
}
矩阵旋转
题目描述 :
给出一个 n∗m 的整数矩阵,将这个矩阵顺时针旋转 90o 后输出。输入 第一行输入两个整数 n,m。(1≤n,m≤200)
接下来 n 行,每行输入 m 个元素,表示输入的矩阵。矩阵中的元素都是绝对值小于 10000 的整数。
输出 输出 m 行,每行 n 个元素,表示旋转后的矩阵。
样例输入
3 4
-1 3 6 3 7 7 9 1 10 3 4 6
样例输出
10 7 -1 3 7 3 4 9 6 6 1 3
#include<stdio.h>
int arr[205][205];
int main(){
int n, m;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
scanf("%d", &arr[i][j]);
for(int i = 0; i < m; i++){
for(int j = n - 1; j >= 0; j--){
j == n - 1 || printf(" ");
printf("%d", arr[j][i]);
}
printf("\n");
}
return 0;
}
队列行平均数
题目描述:
理工学院的老师让同学们排成了一个 n∗m 的长方形队列,老师想知道现在每行同学的 身高平均数是多少,你可以帮他求一下吗。
现已知所有同学的身高,数值为整数,单位:厘米。要求输出每一行同学们身高的平均数。输入 输入共有 n+1 行:
第一行有两个整数 n,m,分别表示长方形队列中的学生行、列数(0<N≤30) 之后 n行每行有 m
个由空格分隔的整数,分别表示长方形队列中对应位置同学的身高 (大于等于140 ,小于190 ),单位:厘米。 输出
输出共有n行,每行一个实数,为每一行所有同学身高的平均值,保留小数点后六位。样例输入
3 3 140 160 140 183 172 170 180 181 174
样例输出
146.666667
175.000000
178.333333
#include<stdio.h>
int main(){
int n, m;
scanf("%d%d", &n, &m);
int sum = 0;
for(int i = 0; i < n; i++){
sum = 0;
for(int j = 0; j < m; j++){
int x;
scanf("%d", &x);
sum += x;
}
printf("%.6lf\n", 1.0 * sum / m);
}
return 0;
}
队列列求和
题目描述 :
理工学院的老师让同学们排成了一个 n∗m 的长方形队列,每一个同学手里都拿了一个捐款袋,袋子里面有一定数量的硬币。
现已知所有同学的捐款袋里面的钱数,数值为整数,单位:元。要求输出每一列同学捐款袋里面的钱数的和。输入 输入共有 n+1 行:
第一行有两个整数 n,m,分别表示长方形队列中的学生行、列数(0<N≤30 ) 之后 n 行每行有 m
个由空格分隔的整数,分别表示长方形队列中对应位置同学身上捐款 袋里面的钱数(大于等于 0 ,小于 200 ),单位:元。 输出 输出共有
m 行,每行一个整数,为每一列所有同学捐款袋里面的钱数总和。样例输入
2 3 1 2 3 2 4 2
样例输出
3 6 5
#include<stdio.h>
int arr[35][35];
int main(){
int n,m;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
scanf("%d", &arr[i][j]);
}
}
int sum = 0;
for(int i = 0; i < m; i++){
sum = 0;
for(int j = 0; j < n; j++){
sum += arr[j][i];
}
printf("%d\n", sum);
}
return 0;
}
回形方阵
题目描述 :
输入一个正整数n,输出n×n的回形方阵。例如,n=5时,输出:1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
输入
一行一个正整数n,2≤n≤9。输出 共n行,每行包含n个正整数,之间用一个空格隔开。
样例输入
5
样例输出
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
#include<stdio.h>
int num[10][10];
int main(){
int n, x = 1;
scanf("%d", &n);
for(int i = 1, I = (n + 1) / 2; i <= I; i++){
for(int j = i; j <= n - i + 1; j++){
for(int k = i; k <= n - i + 1; k++){
num[j][k] = x;
}
}
++x;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
j == 1 || printf(" ");
printf("%d", num[i][j]);
}
printf("\n");
}
return 0;
}