1.利用泰勒公式计算sin(x)
利用泰勒公式计算sin(x)
代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
double function(int a);
int i = 1, x, flag = 1;
double y = 0, p = 1;
scanf("%d", &x);
while (p >= 1e-5)
{
p = (pow(x, 2 * i - 1)) / function(2 * i - 1);
y = y + flag * p;
flag = -flag;
i++;
}
printf("%.3lf\n%d", y, i - 1);
return 0;
}
double function(int a) //计算阶乘
{
int j;
double z = 1;
for (j = 1; j <= a; j++)
z = z * j;
return z;
}
运行结果如下图:
2.字符串排序输出
输入长度未知的字符串并排序输出字符。
代码如下:
//输入长度未知的字符串并排序输出字符。
#include <stdio.h>
int main()
{
char a[100], t;
int i, j;
scanf("%s", a);
for (i = 0;; i++)
{
if (a[i] == '\0')
break;
for (j = i + 1;; j++)
{
if (a[j] == '\0')
break;
if (a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
printf("%s", a);
return 0;
}
运行结果如下图:
3.数组问题
数组a中存放5个四位十进制整数,统计千位和十位之和与百位和个位之和相等的数据个数,并将满足条件的数据存入数组b中。
代码如下:
#include <stdio.h>
int main()
{
int a[5], b[5], i = 0, j = 0, c, d, e, f;
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
for (i = 0; i < 5; i++)
{
c = a[i] / 1000; //千位
d = (a[i] / 100) % 10; //百位
e = (a[i] / 10) % 10; //十位
f = a[i] % 10; //个位
if ((c + e) == (d + f))
{
b[j] = a[i];
j++;
}
}
for (i = 0; i < j; i++)
printf("%d ", b[i]);
return 0;
}
运行结果如下图:
4.输出矩阵中值最大的元素的值,行号,列号
有一个3*4的矩阵,编程输出矩阵中值最大的元素的值,行号,列号。
代码如下:
#include <stdio.h>
int main()
{
int i, j, row = 0, colum = 0, max;
int a[3][4] = { 1,2,3,4,9,8,7,6,-10,10,-5,2 };
max = a[0][0];
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
row = i;
colum = j;
}
}
}
printf("max=%d\nrow=%d\ncolum=%d", max, row, colum);
return 0;
}
运行结果如下图:
5.字符串复制
将一个字符串中的元音字母(a、e、i、o、u)复制到另一个字符串,然后按照ASCII码从小到大的顺序输出。
代码如下:
#include <stdio.h>
int main()
{
char a[100] = { '\0' }, b[100] = { '\0' }, c;
int i, j = 0;
scanf("%s", a);
for (i = 0;; i++)
{
if (a[i] == '\0')
break;
if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u' || a[i] == 'A' || a[i] == 'E' || a[i] == 'I' || a[i] == 'O' || a[i] == 'U')
{
b[j] = a[i];
j++;
}
}
for (i = 0;; i++)
{
if (b[i] == '\0')
break;
for (j = i + 1;; j++)
{
if (b[j] == '\0')
break;
if (b[i] > b[j])
{
c = b[i];
b[i] = b[j];
b[j] = c;
}
}
}
printf("%s", b);
return 0;
}
运行结果如下图:
6.字符串单词统计
输入一串字符,统计其中有多少个单词,单词之间用空格隔开。
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char a[300] = { '\0' }, c;
int i, count = 0, word = 0;
gets(a);
for (i = 0; (c = a[i]) != '\0'; i++)
{
if (c == ' ')
word = 0;
else if (word == 0)
{
word = 1;
count++;
}
}
printf("%d", count);
return 0;
}
运行结果如下图:
7.判定素日期
判定一个日期是否为素日期。素日期的定义:比如1993年5月1日,变成一个8位整数19930501(注意这里有时需补0),如果这个整数是素数,则定义该日期是素日期。
代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int y, m, d, sum;
int function(int sum);
int judge(int y, int m, int d);
scanf("%d%d%d", &y, &m, &d);
if (judge(y, m, d)) //调用judge()
{
sum = y * 10000 + m * 100 + d;
if (function(sum)) //调用function()
printf("y");
else
printf("n");
return 0;
}
else
{
printf("data error.");
return 0;
}
}
int function(int sum) //判断素数
{
int i, p;
p = sqrt((double)sum);
for (i = 2; i <= p; i++)
{
if (sum % i == 0)
return 0; //不是素数
}
return 1; //素数
}
int judge(int y, int m, int d) //判断日期输入是否有误
{
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) //闰年情况
{
if (y <= 0 || m <= 0 || m > 12 || d <= 0 || ((m == 1 || m == 3 || m == 5
|| m == 7 || m == 8 || m == 10 || m == 12) && d > 31) || (m == 2 && d > 29)
|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30))
return 0;
else
return 1;
}
else
{
if (y <= 0 || m <= 0 || m > 12 || d <= 0 || ((m == 1 || m == 3 || m == 5
|| m == 7 || m == 8 || m == 10 || m == 12) && d > 31) || (m == 2 && d > 28)
|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30))
return 0;
else
return 1;
}
}
运行结果如下图:
8.杨辉三角
输出杨辉三角形(要求输入10行)
代码如下:
#include <stdio.h>
int main()
{
int i, j, k, n = 0, a[10][10];
for (i = 0; i < 10; i++)
a[i][0] = a[i][i] = 1;
for (i = 2; i < 10; i++)
for (j = 1; j <= i - 1; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
for (i = 0; i < 10; i++)
{
{
for (j = 0; j <= i; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
return 0;
}
运行结果如下图:
9.字符串插入
输入整数n,及两个字符串s1,s2,在字符串s1中的第n个字符处插入字符串s2。
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char a[100] = { '\0' }, b[100] = { '\0' }, c[200] = { '\0' };
int i = 0, j = 0, n = 0, l = 0;
scanf("%d%s%s", &n, a, b);
l = strlen(b);
//字符串1的前一部分 放入c
for (i = 0; i < n - 1; i++, j++)
c[j] = a[i];
//字符串2 放入c
for (i = 0; i < l; i++, j++)
c[j] = b[i];
//字符串2后一部分放入c
for (i = n - 1; a[i] != '\0'; i++, j++)
c[j] = a[i];
//输出
printf("%s", c);
return 0;
}
运行结果如下图:
此处评论已关闭