7-1 sdut-C语言实验-A+B for Input-Output Practice (Ⅳ)
Your task is to Calculate a + b.
输入格式:
Your task is to Calculate a + b.
输出格式:
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.
输入样例:
在这里给出一组输入。例如:
2
1 5
10 20
输出样例:
在这里给出相应的输出。例如:
6
30
#include<stdio.h>
int main()
{
int a,b,n,i;//定义计数器i,计算次数n,加数a,b
scanf("%d",&n);
for( i = 0; i < n; i ++) //循环n次
{
scanf("%d %d",&a,&b);
printf("%d\n",a+b);//不要忘记换行符号⭐
}
return 0;
}
7-2 sdut-C语言实验—两个数比较
求2个数中较大者。
输入格式:
第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数。
输出格式:
输出N行,每一行的值为每组数中较大的整数。
输入样例:
2
1 2
15 10
输出样例:
在这里给出相应的输出。例如:
2
15
#include<stdio.h>
int main()
{
int N,i,a,b;//定义输入组数N,计数器i,待比较整数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;
}
7-3 sdut- C语言实验-计算1到n的和(循环结构)
从键盘上输入任意一个整数n,计算1到n的和。
输入格式:
从键盘输入任意整数n。
输出格式:
输出1到n的和。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
6
#include<stdio.h>
int main()
{
int n,i;//定义计数器i,循环次数n
int sum = 0;//一定要定义sum的初始值啊啊啊啊啊啊啊啊啊😫
scanf("%d",&n);
for( i = 1; i <= n; i ++)//从1加到n,i从1开始,注意n取等号
{
sum += i;//自增运算符 等价于 sum = sum + i;
}
printf("%d",sum);
return 0;//耶耶
}
7-4 sdut-C语言实验-求阶乘(循环结构)
从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。
提示: 0!是 1 。
输入格式:
输入任意一个大于等于0的整数n。
输出格式:
输出n!
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
6
#include<stdio.h>
int main()
{
int n,i;
int mul = 1;//这里乘积mul要定义为1,0*任何数=0,0!=1
scanf("%d",&n);
for( i = 1; i <= n; i ++)
{//不满足条件时,n==0,此时n<i,不符合循环条件,直接输出1
mul *= i;//自乘运算符
}
printf("%d",mul);
return 0;😘
}
7-5 sdut-C语言实验- 做乘法
请用C语言编写一个程序。此程序接收一个正整数N,然后打印输出“N次N*(1->N)格式”的数据。例如:此程序接收正整数5,那会输出以下格式的数据:
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
输入格式:
只有一个正整数N(N<=100)。
输出格式:
输出共N行数据,如上面的例子所示。
输入样例:
在这里给出一组输入。例如:
5
输出样例:
在这里给出相应的输出。例如:
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
#include<stdio.h>
int main()
{
int N,i;
scanf("%d",&N);//不要忘记取地址😶
for( i = 1; i <= N; i ++)//依然是从1开始呐
{
printf("%d*%d=%d\n",N,i,N*i);
}//第一次提交又忘了换行符!!😢
return 0;
}
7-6 sdut-C语言实验-数列求和
数列求和是一类常见的问题,本题有一定的代表性:
求s=a+aa+aaa+aaaa+……+aa…aa(n位)
其中,a的值由键盘输入,位数n也由键盘输入。
输入格式:
第一行输入a的值;
第二行输入位数n。
输出格式:
输出对n个数完成求和运算后的结果。
比如a=3,n=6时,s=3+33+333+3333+33333+333333
输入样例:
3
6
输出样例:
在这里给出相应的输出。例如:
370368
/*思路:
观察每一项都是可以拆开,拆成前面最大的位数+后面→
有一种迭代10倍关系,所以可以利用累加:a = a + c,类似形式
最后再找一个加和sum存起所有的项*/
#include<stdio.h>
int main()
{
int n,i;//定义一共加和的次数&位数
int temp = 0;//保存每个项
int item;//每位的数字
int sum = 0;//定义累加器😴一定要初始化为0
scanf("%d \n %d",&item,&n);
for( i = 0; i< n; i ++)
{//下面三步运算过程一定要在草稿纸上写,非常关键⭐⭐⭐→体现思考过程
temp = temp + item;//temp表示每一项,如33 333 3333
sum += temp;//预先加
item = item*10;
/*拆成两项相加:30+3/300+33/3000+333/后数是上一步
的temp,前数是上一步的item*10,从而都累加到sum里😙*/
}
printf("%d",sum);
return 0;
}
7-7 求Fibonacci(斐波那契)数列的n项和
已知斐波那契数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,……。本题要求编写程序,计算该数列的前n项和。
输入格式:
键盘输入n(2≤n≤40)。
输出格式:
sum=S,S为斐波那契数列的前n项和。
输入样例:
10
输出样例:
sum=143
题解1:常规实现
#include<stdio.h>
/*考虑到斐波那契数列的特殊性,同样要用一个变量temp把
每一次的前两项存起来,再累加到sum里,在这个过程中
更要注意i的取值问题*/
int main()
{
int n,i,num1,num2;
num1 = 1;
num2 = 1;
int item = 0;
int sum = 0;//不要忘记初始化
item = num1 + num2;//⭐
scanf("%d",&n);
//1、1、2、3、5、8、13
//这里怎么去找这个规律呢
/* num1 num2 item
1 1 2
1 2 3
3 5
8
sum累加的是item其他的是中间变量,找到num
和item的关系*/
//显而易见:num2 = item(上一次的)
for( i = 1; i < n; i ++)
{//✌值得注意这里加了n-1次,而不是n次,所以i从1开始到n
sum += item;//item是第一次的和,所以在前面⭐要有初值
item = num1 + num2;
num1 = num2;
num2 = item;
}
printf("sum=%d",sum);//注意这里的格式,养成审题好习惯
return 0;
}
题解2:数组实现
#include<stdio.h>
int main()
{
int n,i;
int sum = 2;//递推形式加不到前两项,前两项和为2⭐
int arr[40]={1,1};//只定义数组前两个变量
scanf("%d",&n);
for( i = 2; i < n; i ++)
{
arr[i] = arr[i-1] + arr[i-2];//满足斐波那契递推形式
sum += arr[i];//利用计数器,每次加和arr[2]+arr[3]+arr[4]……
}
printf("sum=%d",sum);//注意打印格式😶
return 0;
}
7-8 sdut-C语言实验- 简单计算
接受从键盘输入的N个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)。
输入格式:
第一行一个正整数N(N<=100);
第二行有N个用空格隔开的整数Ti (1 <= i <= N, 0 <= Ti <= 10000000)
输出格式:
三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。
输入样例:
在这里给出一组输入。例如:
5
1 2 3 5 4
输出样例:
在这里给出相应的输出。例如:
5 1 3