2022级《程序设计基础I》实验3-while循环程序设计
A+B for Input-Output Practice (II)
problemId:1011
Description
Your task is to Calculate a + b.
Input
Your task is to Calculate a + b.
Ouput
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
samples
<input>—> 2 1 5 10 20 <output>—> 6 30
Code
#include <stdio.h>
int main(){
int a,b,n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
return 0;
}
两个数比较
problemId:1159
Description
求2个数中较大者。
Input
第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数。
Ouput
输出N行,每一行的值为每组数中较大的整数。
samples
<input>—> 2 1 2 15 10 <output>—> 2 15
Code
#include <stdio.h>
int main(){
int i,n;
int a,b;
scanf("%d",&n);
for (i = 0; i < n; i++)
{
scanf("%d %d",&a,&b);
if(a>=b)
printf("%d\n",a);
else
printf("%d\n",b);
}
return 0;
}
计算1到n的和(循环结构)
problemId:1120
Description
从键盘上输入任意一个整数n,计算1到n的和。
Input
从键盘输入任意整数n。
Ouput
输出1到n的和。
samples
<input>—> 3 <output>—> 6
Code
#include <stdio.h>
int main(){
int n,sum=0;
scanf("%d",&n);
for(;n>0;n--){
sum+=n;
}
printf("%d",sum);
return 0;
}
求阶乘(循环结构)
problemId:1123
Description
从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。
提示: 0!是 1 。
Input
输入任意一个大于等于0的整数n。
Ouput
输出n!
samples
<input>—> 3 <output>—> 6
Code
#include <stdio.h>
int main(){
unsigned int n,result;
scanf("%d",&n);
if(n==0)
printf("%d",1);
else{
for(result=1;n>0;n--){
result*=n;
}
printf("%u",result);
}
return 0;
}
做乘法
problemId:2249
Description
请用C语言编写一个程序。此程序接收一个正整数N,然后打印输出“N次N*(1->N)格式”的数据。例如:此程序接收正整数5,那会输出以下格式的数据:
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
Input
只有一个正整数N(N<=100)。
Ouput
输出共N行数据,如上面的例子所示。
samples
<input>—> 5
<output>—> 51=5 52=10 53=15 54=20 5*5=25
Code
#include <stdio.h>
int main(){
int N,i;
scanf("%d",&N);
for(i=1;i<=N;i++){
printf("%d*%d=%d\n",N,i,i*N);
}
return 0;
}
数列求和
problemId:1134
Description
数列求和是一类常见的问题,本题有一定的代表性:
求s=a+aa+aaa+aaaa+……+aa…aa(n位)
其中,a的值由键盘输入,位数n也由键盘输入。
Input
第一行输入a的值;
第二行输入位数n。
Ouput
输出对n个数完成求和运算后的结果。
比如a=3,n=6时,s=3+33+333+3333+33333+333333
samples
<input>—> 3 6 <output>—> 370368
Code
#include <stdio.h>
int main(){
int a,n,tmp=0,result=0;
int i,j;
scanf("%d%d",&a,&n);
for (i=1,j=1;i<=n;i++){
tmp+=a*j;
j*=10;
result+=tmp;
}
printf("%d",result);
return 0;
}
简单计算
problemId:2250
Description
接受从键盘输入的N个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)。
Input
第一行一个正整数N(N<=100);
第二行有N个用空格隔开的整数Ti (1 <= i <= N, 0 <= Ti <= 10000000)
Ouput
三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。
samples
<input>—> 5 1 2 3 5 4
<output>—> 5 1 3
Code
#include <stdio.h>
int main(){
int min=10000000,n,max=0,avr=0;
int a,i;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a);
avr+=a;
if(a>=max)
max=a;
if(a<=min)
min=a;
}
avr/=n;
printf("%d %d %lld",max,min,avr);
return 0;
}
Code
#include <stdio.h>
int main(){
int min=10000000,n,max=0;
long long avr=0;
int a,i;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a);
avr+=a;
if(a>=max)
max=a;
if(a<=min)
min=a;
}
avr/=n;
printf("%d %d %lld",max,min,avr);
return 0;
}
Code
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
int numbers[N];
int i;
// 从键盘输入N个整数,并将它们存储在数组中
for (i = 0; i < N; i++) {
scanf("%d", &numbers[i]);
}
// 初始化最大值和最小值为第一个数
int max_value = numbers[0];
int min_value = numbers[0];
long long sum_value = numbers[0]; // 使用 long long 存储总和以防溢出
// 计算最大值、最小值和总和
for (i = 1; i < N; i++) {
if (numbers[i] > max_value) {
max_value = numbers[i];
}
if (numbers[i] < min_value) {
min_value = numbers[i];
}
sum_value += numbers[i];
}
// 计算平均值(整除的商)
int average_value = sum_value / N;
// 输出结果
printf("%d %d %d\n", max_value, min_value, average_value);
return 0;
}
C/C++训练1---最大公约数与最小公倍数
problemId:1131
Description
输入两个正整数,求它们的最大公约数与最小公倍数。
Input
输入两个正整数,两个整数之间用空格分开。
数据保证在 int 范围内。
Ouput
第一行输出最大公约数;
第二行输出最小公倍数。
答案保证在 int 范围内。
samples
<input>—> 64 48 <output>—> 16 192
Code
#include <stdio.h>
int main(){
int a,b;
long int max,min;
int i;
scanf("%d %d",&a,&b);
for(i=1;i<=a&&i<=b;i++){
if(a%i==0&&b%i==0)
max=i;
}
for(i=a;;i++){
if(i%a==0&&i%b==0){
min=i;
break;
}
}
printf("%ld\n%ld",max,min);
return 0;
}
判断素数(循环结构)
problemId:1122
Description
从键盘上输入任意一个正整数,然后判断该数是否为素数。
如果是素数则输出”This is a prime.”
否则输出“This is not a prime.”
Input
输入任意一个正整数n(1 <= n <= 1000000)。
Ouput
判断n是否为素数,并输出判断结果:
如果n是素数则输出”This is a prime.”
否则输出“This is not a prime.”
特别提醒:请注意对1的判定,1不是素数。
samples
<input>—> 3 <output>—> This is a prime.
Code
#include <stdio.h>
int main(){
int i,n;
scanf("%d",&n);
for(i=2;i<n;i++){
if (n%i==0)
{
n=0;
break;
}
}
if (n<=1)
printf("This is not a prime.");
else
printf("This is a prime.");
return 0;
}
求绝对值最大值
problemId:1147
Description
求n个整数中的绝对值最大的数。
Input
输入数据有2行,第一行为n,第二行是n个整数。
Ouput
输出n个整数中绝对值最大的数。
samples
<input>—> 5 -1 2 3 4 -5 <output>—> -5
Code
#include <stdio.h>
int main(){
int n,max=0,a,b,max_a;
scanf("%d",&n);
for(;n>0;n--){
scanf("%d",&a);
if(a<0)
b=-a;
else
b=a;
if (b>=max){
max=b;
max_a=a;
}
}
printf("%d\n",max_a);
return 0;
}
Code
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
int max_absolute_value = 0;
int max_absolute_number = 0;
for (int i = 0; i < n; i++) {
int number;
scanf("%d", &number);
// 计算绝对值
int absolute_value = abs(number);
// 如果当前绝对值大于最大绝对值,则更新最大绝对值和对应的数字
if (absolute_value > max_absolute_value) {
max_absolute_value = absolute_value;
max_absolute_number = number;
}
}
// 输出结果
printf("%d\n", max_absolute_number);
return 0;
}
圆周率
problemId:1193
Description
输入n值,并利用下列格里高里公式计算并输出圆周率:

Input
输入公式中的n值。
Ouput
输出圆周率,保留5位小数。
samples
<input>—> 1 <output>—> 2.66667
Code
#include <stdio.h>
int main(){
int n;
double result=0;
for (scanf("%d",&n);n>0;n--){
result+=4*(1.0/(4*n-3)-1.0/(4*n-1));
}
printf("%.5lf",result);
return 0;
}
小鑫の日常系列故事(五)——卡片游戏
problemId:2736