7-12 实验2_6_幂计算
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知两个整数x和y(x为任意整数,y为非负整数),利用循环结构计算x的y次幂并输出。假设x,y及x的y次幂不会超过int型范围。
输入格式:
只有一行,为两个用空格分隔的整数,依次代表x与y的值。
输出格式:
也只有一行,为一个整数,即x的y次幂的计算结果(测试数据中保证没有0的0次幂)。例如输出2的4次幂结果,即16。
输入样例:
-7 5
输出样例:
-16807
answer:
#include<stdio.h>
int main()
{
int a,b;
int result=1;
scanf("%d %d",&a,&b);
if(b==0){
result=1;
}else{
for(int i=0;i<b;i++){
result *=a;
}
}
printf("%d",result);
return 0;
}
7-13 实验2_7_统计字符
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
给定一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
输入格式:
只有一行,为一个字符序列,字符序列长度小于100,以回车键结束。
输出格式:
只有一行,为4个用空格分隔的整数,依次代表输入字符序列中英文字符,空格,数字以及其他字符的数量。
输入样例:
Happy new year #100101 !
输出样例:
12 4 6 2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
char str[1000];
fgets(str, sizeof(str), stdin);
int letterCount = 0;
int spaceCount = 0;
int digitCount = 0;
int otherCount = 0;
for (int i = 0; str[i]!= '\0'; i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
letterCount++;
} else if (str[i] == ' ') {
spaceCount++;
} else if (str[i] >= '0' && str[i] <= '9') {
digitCount++;
} else {
otherCount++;
}
}
printf("%d %d %d %d",letterCount,spaceCount,digitCount,otherCount-1);
return 0;
}
当然也是可以不采用字符串的方法,不过会麻烦一点
7-14 实验2_8_打印实心菱形
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个整数n,你要根据n打印出n阶的实心菱形。
输入格式:
只有一个整数n(0<n<40,代表要打印的菱形阶数)。测试用例保证合法。
输出格式:
n阶实心菱形(占2乘n-1行)。
输入样例:
5
输出样例:
*
***
*****
*******
*********
*******
*****
***
*
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
// 打印上半部分
for (int i = 1; i <= n; i++) {
for (int j = n - i; j > 0; j--) {
printf(" ");
}
for (int k = 0; k < 2 * i - 1; k++) {
printf("*");
}
printf("\n");
}
// 打印下半部分
for (int i = n - 1; i > 0; i--) {
for (int j = n - i; j > 0; j--) {
printf(" ");
}
for (int k = 0; k < 2 * i - 1; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
打印图形就是去寻找规律
7-15 实验2_9_数列求和
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知正整数n与数列公式:
An = 1*2*3+2*3*4+3*4*5+…+(n-2)*(n-1)*n (n>=3)
An = 0 (n=1,2)
请根据n值计算该数列的前n项和的值,并输出。n的取值范围是(1<=n<=3000)。
注意:这里的An 只是一项,而我们要求的是计算该数列的前n项和。
提示:由于n值很大,建议使用long long型变量存储结果。
输入格式:
只有一个正整数n(1<=n<=3000)。
输出格式:
只有一个整数,为计算结果。
输入样例:
3000
输出样例:
12149993250000600
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
long long sum=0;
long long a=0;
for(long long i=3;i<=n;i++){
a+=i*(i-1)*(i-2);
sum+=a;
}
printf("%lld",sum);
return 0;
}
7-16 实验2_10_数字统计一
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
请你写一段程序,统计各类数字的占比。
提示:输出%时需要用%%才能输出。
输入格式:
只有一行,为用空格分隔的若干整数,最后一个整数为0。测试用例保证输入中只包含这一个0。
输出格式:
共三行,依次分别输出3、5、7的倍数的占比(如果某个数同时为多个数的倍数,如15,70等,则不参与统计,但要计到总数中)。占比采用百分数形式,且保留2位小数。这里的占比指的是这类数字的数量跟所有数字的总数(不包括最后的0)比。测试用例保证所有整数可以用int存储。
输入样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0
输出样例:
25.00%
15.00%
10.00%
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
int num, count = 0, threeCount = 0, fiveCount = 0, sevenCount = 0;
while (1) {
scanf("%d", &num);
if (num == 0)
break;
count++;
if (num % 3 == 0 && num % 5!= 0 && num % 7!= 0) threeCount++;
if (num % 5 == 0 && num % 3!= 0 && num % 7!= 0) fiveCount++;
if (num % 7 == 0 && num % 3!= 0 && num % 5!= 0) sevenCount++;
}
printf("%.2f%%\n%.2f%%\n%.2f%%",threeCount*100.0/count,fiveCount*100.0/count,sevenCount*100.0/count);
return 0;
}
7-17 实验2_11__双11优惠
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
双十一快到了,网上的各个商家纷纷推出各种优惠活动,某商家的优惠方式为满100减30,满200减70,满300减110,满400减160。
请你写一段程序,根据给定条件,计算用户某单实际该付多少钱。
输入格式:
第一行为一个整数t代表测试数据组数。
后边是t行测试数据,每行均为若干个用空格分隔的整数,其中第一个整数为n,代表用户买的商品的个数,后边为n个正整数,分别代表这n件商品的价格。
输出格式:
为t行,每行依次对应输入的t行测试数据用户实际付钱的计算结果。测试用例保证所有整数(包括求和的结果)可以用int存储。
特别说明:虽然程序在本地实际运行时输入和输出是混合在一起显示的,但在OJ上输入和输出是完全分开的,互相不干扰。所以输入整数T后,只要输入一行测试数据,应该立刻输出一行优惠结果;然后是输入下一行测试数据,输出下一个优惠结果。
输入样例:
2
4 10 20 30 40
5 10 20 30 40 50
输出样例:
70
120
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
int totalPrice = 0;
for (int i = 0; i < n; i++) {
int price;
scanf("%d", &price);
totalPrice += price;
}
int discount = 0;
if (totalPrice >= 400) {
discount = 160;
} else if (totalPrice >= 300) {
discount = 110;
} else if (totalPrice >= 200) {
discount = 70;
} else if (totalPrice >= 100) {
discount = 30;
}
printf("%d\n", totalPrice - discount);
}
return 0;
}
7-18 实验3_1_简单问题
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
任意给定n个整数,求这n个整数序列的和、最小值和最大值。
输入格式:
第一行为一个整数n(0<n<100),代表要输入的整数个数;第二行为用空格分隔的n个整数。测试用例保证所有整数及求和结果等均可以用int存储。
输出格式:
只有一行,为三个空格分隔的,依次代表整数序列的和、最大值和最小值。
输入样例:
5
10 20 30 40 50
输出样例:
150 50 10
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int num, sum = 0, max, min;
scanf("%d", &num);
sum = max = min = num;
for (int i = 1; i < n; i++) {
scanf("%d", &num);
sum += num;
if (num > max) max = num;
if (num < min) min = num;
}
printf("%d %d %d", sum, max, min);
return 0;
}
7-19 实验3_2_密码文
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个英文单词,该单词中只包含大写字母“A—Z”与小写字母“a—z”。你的任务是将英文单词翻译成密码文。翻译规则是把所有字母用它后面的第三个字母替换,并假设字符a接在字符z后面,字符A接在字符Z后面。例如:zero将被翻译成chur。
输入格式:
只有一行,为一个长度不超过100,只包含英文大小写字母的字符串(以回车换行符‘\n’结尾)。
输出格式:
只有一行,为对应字符串的密码文。
输入样例:
AZazbf
输出样例:
DCdcei
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
char str[101];
fgets(str, 101, stdin);
int i = 0;
while (str[i]!= '\n' && str[i]!= '\0') {
if ((str[i] >= 'a' && str[i] < 'x') || (str[i] >= 'A' && str[i] < 'X')) {
str[i] += 3;
} else if ((str[i] >= 'x' && str[i] <= 'z') || (str[i] >= 'X' && str[i] <= 'Z')) {
str[i] -= 23;
}
i++;
}
printf("%s", str);
return 0;
}
7-20 实验3_3_确定成绩等级
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
将百分制成绩score按下列原则划分其等级:
score≥90等级为A;
80 ≤score<90,等级为B;
70≤score<80,等级为C;
60≤score<70,等级为D;
score<60,等级为E。
输入格式:
只有一个整数,代表成绩score。测试用例保证所有整数可以用int存储。
输出格式:
只有一行,当成绩小于0或大于100时为"The score is out of range!"(不包括引号),否则为输入的学生成绩对应的等级。
输入样例:
89
输出样例:
B
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main() {
int score;
scanf("%d", &score);
if (score < 0 || score > 100) {
printf("The score is out of range!");
} else if (score >= 90) {
printf("A");
} else if (score >= 80) {
printf("B");
} else if (score >= 70) {
printf("C");
} else if (score >= 60) {
printf("D");
} else {
printf("E");
}
return 0;
}
7-22 实验3_5_整除与平方
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个自然数,求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方s。s保证在int范围之内。
输入格式:
只有一行,为自然数n。
输出格式:
只有一行,为一个自然数,代表计算结果。
输入样例:
43
输出样例:
3969
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include<stdio.h>
int main()
{
int n,i,y=0;
scanf("%d", &n);
for (i = 1; i < n; i++)
if (i % 3 == 0 && i % 7 == 0)
y += i;
printf("%d", y * y);
return 0;
}
7-24 实验3_7_数字拆分
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个正整数n,n的范围是1—999999999。你的任务是把这个整数分解为单个数字,然后从左至右依次打印出每一个数字。例如将整数“12345”分解,得到“1 2 3 4 5”。
输入格式:
只有一个正整数。测试用例保证合法。
输出格式:
只有一行,为输入整数的拆分结果,相邻两个数字之间有一个空格,最后一个数字后是换行符。例如12345的拆分结果为:1 2 3 4 5。
输入样例:
12345
输出样例:
1 2 3 4 5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include<stdio.h>
int main()
{
long x;
long sum=0;//sum ~ 反转数
scanf("%ld",&x);
if(x%10==0)
{
int t=0;
while(x%10==0)
{
x=x/10;
t++;
}
while(x>0)
{
sum=sum*10+x%10;
x=x/10;
}
while(sum>0)
{
printf("%d ",sum%10);
sum=sum/10;
}
while(t>1)
{
printf("0 ");
t--;
}
printf("0\n");
}
else
{
while(x>0)
{
sum=sum*10+x%10;
x=x/10;
}
while(sum>9)
{
printf("%d ",sum%10);
sum=sum/10;
}
printf("%d\n",sum);
}
return 0;
}
7-25 实验3_8_位数对调
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个正整数n(可以用int存储),你的任务是将n的最低位与最高位上的数字对调,次低位与次高位上的数字对调,以此类推,直到中间位。最后得到一个新整数并将新的数字输出。需要注意的是:如果当最低位数字与最高位数字对调后,数字的长度变短(也就是最低位为0),则不能对这个数进行位数对调处理。
输入格式:
只有一个正整数,即n。
输出格式:
当n可以进行数字对调时,例如n=123,你应输出“321”;当n不可以进数字对调时,例如n=980,你应输出“The number cannot be changed.”。
输入样例:
1365
输出样例:
5631
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n,t=0;
while(scanf("%d",&n)==1)//输入值为整数
{
if(n%10==0)//n不可以进行数字对调的情况
{
printf("The number cannot be changed.");
}
else if(n<10)//n为个位数
printf("%d",n);
else
{
while(n>=10)
{
t=n%10;
n/=10;
printf("%d",t);
}
printf("%d",n);
}
}
return 0;
}