打印n行杨辉三角未完成篇,最后一行第一个数字有空格版,评测了80多次
#include <stdio.h>
void main()
{
int n,i,j,k;
scanf("%d", &n);
int a[n][n];
//生成杨辉三角
for (i = 0; i < n; i++)///行
{
for (j = 0; j <= i; j++)//列
{
if (j == 0 || j == i)
a[i][j] = 1;//让每行首尾数字都为1
else
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];//每个数等于头上两相邻数字之和
}
}
//打印杨辉三角
for (i = 0; i < n; i++)
{
for (k = 0; k < n - i-1 ; ++k)//每一列都打个空格,搞不懂为什么第一个数字前有空格
{
printf(" ");
}
for (j = 0; j <= i; j++)//格式化输出
{
printf("%5d", a[i][j]);
}
printf("\n");
}
}
输出数字各位数之积
#include<stdio.h>
int main()
{
int n,s;
int t=1;
scanf("%d",&n);
while(n!=0)
{
s=n%10; //获取各位数字
//2583%10=3,t=3,n=258
t*=s;//乘起来
//258%10=8,24,25
//25%10=5,120,2
//2%10=2,240,0
n/=10;//每次循环都少一个位数
}
printf("%d\n",t);
//2583,2*5*8*3=240
return 0;
}
求数列的第n项及前n项之和
//数列如下:
//f1=f2=1
//fn=3fn-1+2fn-2
//n>2
#include <stdio.h>
int f(int n);
int main()
{
int n,fn=1,sum=0;
int i;
scanf("%d",&n);
if(n==1)
{
fn=1;
sum=1;
}
else if(n==2)
{
fn=1;
sum=2;
}
//前两项要特殊点
else if(n>2)
{
sum=2;
fn=1;
for(i=3;i<=n;i++)//从第3项开始
{
fn=f(i);//调用函数
sum+=fn;//加上后几项
}
}
printf("%d\n%d",fn,sum);
return 0;
}
int f(n)
{
if(n==3)
return 5;
else if(n==4)
return 17;
else if(n>4)//从第5项开始递归
return 3*f(n-1)+2*f(n-2);
}
计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?
//在 1到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。输入两个整数,第一个数为n的值,第二个为x的值。
#include<stdio.h>
int main(void)
{
int n,x,i,t=0;
scanf("%d%d",&n,&x);
for(i=1;i<=n;i++)//遍历
{
//列举出所有的情况
if((i%10==x)&&(i/10==x))
t+=2;
else if((i/100==x)&&(i%10==x))
t+=2;
else if((i/10==x)&&(i%10!=x))
t+=1;
else if(i/100==x)
t+=1;
else if((i%10==x))
t+=1;
}
printf("%d",t);
return 0;
}
输入打印行数n,输出共2n-1行的菱形
#include<stdio.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(k=0;k<n-i;++k)//先打印每行的空格
{
printf(" ");
}
for(j=1;j<=2*i-1;++j)//再打上半部分的*
{
printf("*");
}
printf("\n");//每次换行
}
for(i=n-1;i>0;i--)//下半部分,从n-1开始,
{
for(k=n-i;k>0;k--)
{
printf(" ");
}
for(j=2*i-1;j>0;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
求最大公约数来求最小公倍数
#include<stdio.h>
int zhanzhuan(int a,int b)
{
if(b==0)//停止调用自己的条件
return a;
return zhanzhuan(b,a%b);
//54 24
//24 6
//6 0,所以6是最小公倍数
}
int main()
{
int a,b,bei;
scanf("%d%d",&a,&b);
if(a<b)
{
int t;
t=a;
a=b;
b=t;
}//辗转相除的条件得是大的数除小的数
int yue=zhanzhuan(a,b);
bei=(a*b)/yue;//两个数的乘积等于它们的最大公约数和最小公倍数的积
printf("最大公约数是:%d\n最小公倍数是:%d",yue,bei);
return 0;
}
直接求最小公倍数
#include<stdio.h>
int lcm(int a, int b)
{
int max = (a > b) ? a : b; //从最大的数开始要快些
while(1)
{
if (max % a == 0 && max % b == 0)
return max;//得到最小的公倍数直接返回
max++;//自身递增直到都能整除a和b
}
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int result = lcm(num1, num2);
printf("最小公倍数是:%d\n", result);
return 0;
}
计算一年有好多天
#include <stdio.h>
int main(void)
{
int i,year, month, day;
scanf("%d-%d-%d", &year, &month, &day);
int totalDays = 0;
for ( i = 1; i < month; i++)
{
switch (i) {
case 12:
totalDays += 31;
break;
case 11:
totalDays += 30;
break;
case 10:
totalDays += 31;
break;
case 9:
totalDays += 30;
break;
case 8:
totalDays += 31;
break;
case 7:
totalDays += 31;
break;
case 6:
totalDays += 30;
break;
case 5:
totalDays += 31;
break;
case 4:
totalDays += 30;
break;
case 3:
totalDays += 31;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) //判断是不是闰年
totalDays += 29;
else
totalDays += 28;
break;
case 1:
totalDays += 31;
break;
}
}
totalDays+= day;
printf("%d\n", totalDays);
return 0;
}
计费,包含取整取大的实际情况
#include <stdio.h>
int main(void) {
int code,a,b,c,d,e,t;
float wei, price;
scanf("%d,%f", &code, &wei);
switch (code) {
case 0:
a=wei;//存储wei的整数部分
if(wei>a){
if (wei <= 1)
price = 10;
else
price = 10 +a* 3.0;
break;
}
else if(wei==a){
if (wei <= 1)
price = 10;
else
price = 10 + (wei - 1) * 3.0;
break;
}
case 1:
b=wei;
if(wei>b){
if (wei <= 1)
price = 10;
else
price = 10 + b* 4.0;
break;
}
else if(wei==b){
if (wei <= 1)
price = 10;
else
price = 10 + (wei - 1) * 4.0;
break;
}
case 2:
c=wei;
if(wei>c){
if (wei <= 1)
price = 15;
else
price = 15 + c* 5.0;
break;
}
else if(wei==c){
if (wei <= 1)
price = 15;
else
price = 15 + (wei - 1) * 5.0;
break;
}
case 3:
d=wei;
if(wei>d){
if (wei <= 1)
price = 15;
else
price = 15 + d * 6.5;
break;
}
else if(wei==d){
if (wei <= 1)
price = 15;
else
price = 15 + (wei - 1) * 6.5;
break;
}
case 4:
e=wei;
if(wei>e){
if (wei <= 1)
price = 15;
else
price = 15 + e * 10.0;
break;
}
else if(wei==e){
if (wei <= 1)
price = 15;
else
price = 15 + (wei - 1) * 10.0;
break;
}
default:
printf("Error in Area\nPrice: 0.00\n");
return 0;
}
printf("Price: %.2f\n", price);
return 0;
}