跑步进入数组......不懂的东西还有很多。
10. (程序题)
题目编号:Exp02-Basic10,GJBook3-04-15
题目名称:爱因斯坦阶梯
问题描述:设有阶梯,不知其数,但知:每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨7阶,正好到楼顶。编程序求最少共有多少阶。
输入:无
输出:台阶数目
样例:无。详见输入输出说明。
#include<stdio.h>
int main()
{
int n , k = 0;
for(n=6;k==0;n++)
{
if (n % 2 == 1 && n % 3 == 2 && n % 5 == 4 && n % 7 == 0) {
printf("%d", n);
k=k+1;
}
}
return 0;
}
不难。
11. (程序题)
题目编号 :Exp02-Basic11,GJBook3-04-03
题目名称:勒让德多项式
题目描述:
编一个程序,输入x、n,计算勒让德(Legendre)多项式的第 n 项(此题假定n取0时,为勒让德多项式第0项)。
输入:一个浮点数和一个整数,分别对应x和n(0<=n<=20)。
输出:一个浮点数,即勒让德多项式第n项的值,注意小数点后保留到第2位。
样例1:
输入:3.4 2
输出:16.84
样例2:
输入:3.4 10
输出:30143685.82
样例3:
输入:-3.4 2
输出:16.84
#include<stdio.h>
int main()
{
double x, p=0, a , b ;
int n,k;
scanf_s("%lf%d", &x, &n);
if (n == 0) p = 1;
else
if (n == 1) p = x;
else {
b = x; a = 1;
for (k = 2; k <= n; k++) {
p = ((2 * k - 1) / (double)k) * x * b - ((k - 1) /(double) k) * a;
a = b;
b = p;
}
}
printf("%.02lf", p);
return 0;
}
12. (程序题)
题目编号 :Exp02-Basic12,GJBook3-04-13
题目名称:数字金字塔
题目描述:编程序,制打印如下所示的n行数字金字塔(n由用户从键盘输入)。
输入:一个正整数 n (≤10)
输出:如上所示的类似数字金字塔。输出由数字 0~9构成的n行数字三角矩阵:其中第一行有1个数,第二行有3个数,依次类推,每个数字占用2位英文字符宽度,宽度不足2位的的在数字左侧补空格;整个数字三角阵,除必要的空格、数字、回车换行符,无多余字符。
样例1:
输入:1
输出:
(注:1的前面有一个空格)
样例2:
输入:3
输出:
(注:末行的第一个数字1前面有一个空格)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m=1,a,b=1;//m控制行
scanf_s("%d", &n);
system("cls");
for (; m <= n; m++)
{
for (a = 1; a <= (2*n-2*m); a++)printf(" ");
for (a = 1; a <= 2 * m - 1; a++)
{
if(a<=m){
if (b != 10) printf(" %d", b);
else printf(" 0");
if (b == m)continue;
b++;
}
else {
b--;
printf(" %d", b);
}
}
b = 1;
a++;
printf("\n");
}
}
打这个的时候状态奇差,感觉可以更好。
13. (程序题)
题目编号 :Exp02-Enhance01,GJBook3-04-02
题目名称:计算 e^x
题目描述:请计算上述序列的前101项的和(截止到n取100)
输入:一个浮点数,对应x值。
输出:一个浮点数,即e^x的近似值,小数点后保留到第2位。
注:本题不允许使用math.h头文件和相关的pow和exp等函数。
样例1:
输入:0
输出:1.00
样例2:
输入:4.3
输出:73.70
#include<stdio.h>
int main()
{
double x, y=0,z=1;
int n,t;
scanf_s("%lf", &x);
for (n=0; n <= 100; n++)
{
for (t = 0; t <= n; t++)
{
if (t != 0) { z =z* x / t; }
}
y = y + z;
z = 1;
}
printf("%.02lf", y);
return 0;
}
14. (程序题)
题目编号:Exp02-Enhance03
题目名称:公式累加
题目描述:用如下的展开式计算当n为某给定值时,sh(x)的值。
编写程序,对上面的公式读入x,输出序列的和直到尾项的绝对值 小于10^-5。
输入:一个浮点数作为x的值。
输出:一个浮点数,保留小数点后6位。
样例1:
输入:1
输出:1.175198
样例2:
输入:1.5
输出:2.129277
#include<stdio.h>
#include<math.h>
double lyl(double x,double n) {
int a=1;
double b = 1;
for (; a <= 2*n+1; a++) {
b = b * x / a;
}
return b;
}
int main()
{
double x, sh=0,k;
int n=1;
scanf_s("%lf", &x);
k = x;
for (; fabs(k) >= 1e-5; n ++) {
sh = sh + k;
k = lyl(x, n);
}
printf("%.06lf", sh);
return 0;
}
用了函数,同学昨天打的那个没用。
15. (程序题)
题目编号:Exp02-Enhance04,GJBook3-04-14
题目名称:字母矩阵
题目描述:用循环语句控制打印如下图形,其中输出的每个字母占用2个字符宽度(空格在前,字母在后)。
输入:无
输出:如上图字母矩阵
说明:请同学们根据字母、位置的规律实现该程序。打表爽一时,考试两行泪~
#include<stdio.h>
int main()
{
int a=1, b, c,n=0;//a行b列c存
char m = 'A';
while (a <= 5)
{
b = 1;
while (b <= 9)
{
printf(" %c", m+n);
b++;
n++;
if (n==9) n=0;
if ((b - 1) != 9) continue;
printf("\n");
n++;
}
a++;
}
while (a > 5 && a <= 11)
{
b = 1;
while (b <= 9)
{
printf(" %c", m + n);
b++;
n++;
if (n == 9) n = 0;
if ((b - 1) != 9) continue;
printf("\n");
n--;
}
a++;
}
return 0;
}
打这个的时候头痛得很,但是状态很好,很顺畅。
明天晚上出03数组,mooc的已经打完了,觉得还得继续精进。