经典C 1-10

<span style="color:#990000;">【程序1】</span>
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

<pre name="code" class="cpp">#include<stdio.h>
void main(){
	int a,b,c;
	int num=0;
	for(a=1;a<5;a++){
		for(b=1;b<5;b++){
			for(c=1;c<5;c++){
				if(a!=b&&a!=c&&b!=c){
					num++;
					printf("%d%d%d\n",a,b,c);
				}
			}
		}
	}
	printf("%d   \n",num);
}


 
getch()作用:所在头文件conio,用于在控制台上读取一个字符,<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;">用getch()会等待你按下任意键再继续执行下面的语句</span>
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;"><span style="color:#990000;">【程序2】</span>
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
   成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
   100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

</span>
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;"></span><pre name="code" class="cpp">#include<stdio.h>
void main(){
	int i;
	float num;
	printf("input the profits please:"); 
	scanf("%d",&i);
	if(i>100)
	num=(i-100)*0.01+3.95;
	if(i<=100&&i>60)
		num=(i-60)*0.015+3.35;
	if(i<=60&&i>40)
		num=(i-40)*0.03+2.75;
	if(i<=40&&i>20)
		num=(i-20)*0.05+1.75;
	if(i<=20&&i>10)
		num=(i-10)*0.075+1;
	if(i<=10)
		num=i*0.1;
	printf("%f",num);
}


 
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;">可以用else嵌套,减少代码量!</span>
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;"><span style="color:#990000;">【程序3】</span>
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

</span>
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;"></span><pre name="code" class="cpp">#include<stdio.h>
#include<math.h>
void main(){
	int i,b;
	float a ;
	for(i=1;i<168;i++){
		a=sqrt(i+100)+sqrt(i+168);
		b=(int)a;
		if(b==a)
			printf("%d",i);
	}
}
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?


#include<stdio.h>
void main(){
	int a,b,c,num;
	printf(" input the date please:");
	scanf("%d %d %d ",&a,&b,&c);
	num=30*b+c;
	printf("%d ",num);
}

【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。

#include<stdio.h>
void main(){
	int x,y,z,t;
	scanf("%d %d %d",&x,&y,&z);
	if(x>y){
		t=x;x=y;y=t;
	}
	if(x>z){
		t=z;z=x;x=t;
	}
	if(y>z){
		t=y;y=z;z=t;
	}
	printf("small to big: %d %d %d\n",x,y,z);
}

【程序6】
题目:用*号输出字母C的图案。


#include<stdio.h>
void main(){
	printf("*****\n");
	printf("*\n");
	printf("*\n");
	printf("*\n");
	printf("*****\n");
}

【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
#include "stdio.h"
#include "conio.h"
main()
{
  char a=76,b=19;
  printf("%c%c%c%c%c\n",b,a,a,a,b);
  printf("%c%c%c%c%c\n",a,b,a,b,a);
  printf("%c%c%c%c%c\n",a,a,b,a,a);
  printf("%c%c%c%c%c\n",a,b,a,b,a);
  printf("%c%c%c%c%c\n",b,a,a,a,b);
  getch(); 
}

【程序8】
题目:输出9*9口诀。

#include<stdio.h>
void main(){
	int a,b ;
	for(a=1;a<=9;a++){
		for(b=1;b<=a;b++)
			printf("%d*%d = %d   ",b,b,b*b);
		printf("\n");
	}
}

【程序9】
题目:要求输出国际象棋棋盘。


#include<stdio.h>
 void main(){
	int i , j ;
	for(i=1;i<9;i++){
		if(i%2!=0){
			for(j=1;j<=4;j++)
				printf("* ");
			printf("\n");
		}
		else{
			for(j=1;j<=4;j++)
				printf("* ");
			printf("\n");
		}
	}
	
 }

这个题不适合我。。。

 
<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 24px; text-indent: 28px;">
</span>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
0-1背包问题是一个经典的动态规划问题,可以用C语言进行求解。 问题描述:给定一个背包,容量为C;有n个物品,每个物品有自己的重量w[i]和价值v[i]。要求在不超过背包容量的情况下,选择一些物品放入背包,使得背包中物品的总价值最大。 解决方法:使用动态规划算法,定义一个二维数组dp[i][j]表示前i个物品中,容量为j的背包能够获得的最大价值。则对于第i个物品,有两种选择:放入背包或不放入背包,因此状态转移方程为: dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i]), 其中w[i]是第i个物品的重量,v[i]是第i个物品的价值。 最终的解为dp[n][C],即前n个物品中,容量为C的背包能够获得的最大价值。 以下是C语言代码实现: ```c #include <stdio.h> #include <string.h> #define max(a, b) ((a) > (b) ? (a) : (b)) int knapsack(int n, int C, int w[], int v[]) { int dp[n+1][C+1]; memset(dp, 0, sizeof(dp)); // 初始化dp数组为0 for (int i = 1; i <= n; i++) { for (int j = 1; j <= C; j++) { if (j < w[i]) { dp[i][j] = dp[i-1][j]; } else { dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i]); } } } return dp[n][C]; } int main() { int n = 5; int C = 10; int w[] = {0, 2, 2, 6, 5, 4}; // 物品重量 int v[] = {0, 6, 3, 5, 4, 6}; // 物品价值 int ans = knapsack(n, C, w, v); printf("最大价值为:%d\n", ans); return 0; } ``` 以上代码中,我们使用了max宏定义来求两个数的最大值。在knapsack函数中,我们定义了一个二维数组dp来存储状态转移方程的结果。接着,使用两个嵌套的for循环,依次计算dp[i][j]的值。最终,返回dp[n][C]即为所求的最大价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值