C题目
1、打印符号
#define S " "
#include <stdio.h>
int main(){
int n,i,j;
printf("请输入行数:");
scanf("%d",&n);
for(i = 1;i<=n;i++){
printf(S);
for(j=1;j<=2*(n-i);j++){
putchar(' ');
}
for(j = 1;j <= 2*i-1;j++){
printf("*");
}
printf("\\n");
}
for(i = 1;i<=n-1;i++){
printf(S);
for(j=1;j<=2*(n-i)-1;j++){
printf("*");
}
printf("\\n");
}
return 0;
}
2、水仙花数
#include <stdio.h>
#include<math.h>
int main(int argc, char *argv\[\])
{
int i,sum;
for(i = 100;i < 1000;i++){
sum = pow(i/100,3)+pow(i/10%10,3)+pow(i%10,3);
if(sum == i){
printf("%d 是水仙花数!\\n",i);
}
}
return 0;
}
3、泰勒级数计算sin(x)
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv\[\])
{
int i,x,j;
float f,sum = 0,factorial;
printf("请输入x:");
scanf("%d",&x);
i = 0;
do{
factorial = 1.0;
for(j = 1;j <= 2*i+1;j++){
factorial *= j;
}
f = (pow(-1,i)\*pow(x,2\*i+1)/factorial)*1.0;
sum += f;
printf("%f\\n",f);
i++;
}while(fabs(f) > 1.0e-6);
printf("sin(%d)的值为:%f,累加了:%d次",x,sum,i+1);
return 0;
}
4、编写程序输出2~1000之间的亲密数对。说明:若a、b为一对亲密数对,则a的因子和等于b,b的因子数和为a。且a不等于b
#include <stdio.h>
int main(int argc, char *argv\[\])
{
int i,j,tempa,tempb;
for(i = 2;i < 1000;i++){
tempa = 0;
for(j = 2;j < i;j++){
if(i%j == 0){
tempa += j;
}
}
tempb = 0;
for(j = 2 ;j < tempa;j++){
if(tempa%j == 0){
tempb += j;
}
}
if(i == tempb && i != tempa){
printf("%d 和 %d 是一对亲密数\\n",i,tempa);
}
}
return 0;
}
5、打印杨辉三角:
#include <stdio.h>
#define N 14
int main()
{
int i, j, k, n=0, a\[N\]\[N\]; /*定义二维数组a\[14\]\[14\]*/
while(n<=0||n>=13){ /*控制打印的行数不要太大,过大会造成显示不规范*/
printf("请输入要打印的行数:");
scanf("%d",&n);
}
printf("%d行杨辉三角如下:\\n",n);
for(i=1;i<=n;i++)
a\[i\]\[1\] = a\[i\]\[i\] = 1; /*两边的数令它为1,因为现在循环从1开始,就认为a\[i\]\[1\]为第一个数*/
for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a\[i\]\[j\]=a\[i-1\]\[j-1\]+a\[i-1\]\[j\]; /*除两边的数外都等于上两顶数之和*/
for(i=1;i<=n;i++){
for(k=1;k<=n-i;k++)
printf(" "); /*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/
for(j=1;j<=i;j++) /\*j<=i的原因是不输出其它的数,只输出我们想要的数\*/
printf("%6d",a\[i\]\[j\]);
printf("\\n"); /*当一行输出完以后换行继续下一行的输出*/
}
printf("\\n");
return 0;
}