c语言入门基础题-自己的解法c小白

1:企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

 




int main(){
	int i; 
	int profit;
    printf("输入当月利润i:") ;
    scanf("%d",&i);
    if(i<=100000){
    	profit = i*0.1;
	}else if(i<=200000){
		profit=100000*0.1+(i-100000)*0.075;
	}else if(i<=400000){
		profit =100000*0.1+100000*0.075+(i-200000)*0.05;
	}else if(i<=600000){
		profit =100000*0.1+100000*0.075+200000*0.05+(i-400000)*0.03;
	}else if(i<=1000000){
		profit =100000*0.1+100000*0.075+200000*0.05+200000*0.03+(i-600000)*0.15;
	}else if(i>1000000){
		profit =100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.15+(i-1000000)*0.01;
	} 
	printf("%d",profit);
	return 0;
}

2:一个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

 




int main(){
	int x;
	int i;
	int j;
	int temp=0;
	for(int k=1;k<1000;k++){
	    if(temp == 1){
	    	x=i-100;
			printf("x为%d\n",x);
		}
		i=k*k;
		j=i+168;
		temp=0;
		for(int n=1;n<1000;n++){
			if(n*n == j){
				temp=1;
				break;
			}
		}
	}
	return 0;
}

3:输入某年某月某日,判断这一天是这一年的第几天? 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	int year,month,day;
	int temp=0; 
	int sum=0;
	printf("请输入年月日");
	scanf("%d,%d,%d",&year,&month,&day);
	//判断为闰年 
	if((year%4==0 && year%100!=0) || year%400==0){
		printf("%d年为闰年,所有有366天\n",year);
		temp=1;
	} 
	switch(month){
		case 1:sum=day;break;
		case 2:sum=31+day;break;
		case 3:sum=31+28+day;break;
		case 4:sum=31+28+31+day;break;
		case 5:sum=31+28+31+30+day;break;
		case 6:sum=31+28+31+30+31+day;break;
		case 7:sum=31+28+31+30+31+30+day;break;
		case 8:sum=31+28+31+30+31+30+31+day;break;
		case 9:sum=31+28+31+30+31+30+31+31+day;break;
		case 10:sum=31+28+31+30+31+30+31+31+30+day;break;
		case 11:sum=31+28+31+30+31+30+31+31+30+31+day;break;
		case 12:sum=31+28+31+30+31+30+31+31+30+31+30+day;break;
	}
	if(temp==1 && month>2){
		sum++;
	}
	printf("%d",sum);
	return 0;
}

4:输入三个整数想,x,y,z,三个数从小到大输出 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	int x,y,z;
	int temp;
	scanf("%d %d %d",&x,&y,&z);
	if(x>y){
		temp=x;
		x=y;
		y=temp;
		
	}
	if(y>z){
			temp=y;
			y=z;
			z=temp;
			
	}
	if(x>y){
		temp=x;
		x=y;
		y=temp;
	}
	printf("%d %d %d",x,y,z);
	return 0;
}

5.输出九九乘法表

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	for(int i=1;i<10;i++){
		for(int j=1;j<=i;j++){
			printf("%dx%d=%-3d",j,i,j*i);
			if(j==i) printf("\n");
		}
	}
	return 0;
}

6有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?

#include<stdio.h>//斐波那契
int main() {
	int f1=1,f2=1;
	int sum,month;
	scanf("%d",&month);
	for(int i=1;i<=month;i++){		
		if(i==1 || i==2){
			printf("第%d个月有兔子%d对\n",i,1);
			continue;
		}
		sum=f1+f2;
		f1=f2;
		f2=sum;
		printf("第%d个月有兔子%d对\n",i,sum);
	}
	return 0;

}

7输出101--200之间的素数

#include<stdio.h>
int main() {
	int temp=0;
	for(int i=101; i<200; i++) {
		for(int j=2; j<100; j++) {
			if(i%j == 0) {
				temp=0;
				break;
			}
			else {
				temp=1;
			}
		}
		if(temp==1) printf("%d\n",i);
	}
	return 0;

}

 8打印100-1000内的水仙花数

#include<stdio.h>
int main() {
	for(int i=100;i<1000;i++){
		int a=i/100;
		int b=i/10%10;
		int c=i%10;
		if((a*a*a+b*b*b+c*c*c)==i){
			printf("%d\n",i);
		}
	}
	return 0;
}

 9将一个正整数分解因数。例如:输入90,打印90=2*3*3*5

#include"stdio.h"
int main(){
	int n,i;
	printf("请输入整数:");
	scanf("%d",&n);
	printf("%d=",n);
	for(i=2;i<=n;i++){
		while(n%i==0){
			printf("%d",i);
			n/=i;
			if(n!=1){
				printf("*");
			}
		}
	} 
}
#include<stdio.h>
int main() {
	int a;
	int count=0;
	scanf("%d",&a);
	printf("%d=",a); 
	for(int i=2;i<=a;i++){
		while(i!=a){
			if(a%i == 0){
				printf("%d*",i);
				a=a/i;
				count++;
			}else{
				break; 
			}
		}
	}
	if(count==0){
		printf("%d*1",a);
	}else{
		printf("%d",a);
	}
	return 0;
}

10利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示

#include<stdio.h>
int main() {
	int n;
	scanf("%d",&n);
	(n>=90)?printf("%d:A",n):((n>=60)?printf("%d:B",n):printf("%d:C",n));
	return 0;
}

11辗除法实现输入两个正整数m和n,求最大公约数和最小公倍数。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int a,b;
	int max,min; 
	scanf("%d %d",&a,&b); 
	int m=a;
	int n=b;
	while(a%b!=0){
		int temp=a%b;
		if(temp!=0){
			a=b;
			b=temp;
		}
	}
	max=b;
	min=m*n/max;
	printf("最大公约数为%d,最小公倍数为%d",max,min);
	return 0;
}

 12输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int a;
	int eng=0,spa=0,num=0,other=0;
	while((a=getchar())!='\n') {
		if((a>=97&&a<=122) || (a>=65&&a<=90)) {
			eng++;
		} else if(a==32) {
			spa++;
		} else if(a>=49&&a<=57) {
			num++;
		} else {
			other++;
		}
	}
	printf("英文字母有%d个,空格有%d个,数字有%d个,其他字符有%d个",eng,spa,num,other);
	return 0;
}

13求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字及其变式

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int n,a;
	int temp=0,sum=0;
	printf("请输入多少项,值为多少。\n");
	scanf("%d %d",&n,&a);
	for(int i=0;i<n;i++){
		temp=temp*10+a;
		sum+=temp;
	}
	printf("%d",sum); 
	return 0;
}

14一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int sum=0;
	for(int i=1; i<1000; i++) {
		for(int j=1; j<i; j++) {
			if(i%j == 0) {
				sum=sum+j;
			}
		}
		if(sum==i) {
			printf("%-5d",i);
		}
		sum=0;
	}
	return 0;
}

15一球从100米高度自由落下,每次落地反弹后跳回原来高度的一半,再落下,求十次落地后,共经过多少米?第10次多高?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	float n=100;
	float temp=0;
	float bon=0;
	for(int i=1; i<=10; i++) {
		temp+=n+bon;
		n=n/2;
		bon=n;
		printf("第%d次落地后共经过%f米\n",i,temp);
	}
	printf("十次落地后共经过%f米\n",temp);
	printf("第十次%f",bon);
	return 0;
}

16.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时就只剩一个桃子了。求第一天共摘多少个桃子。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int n=1;
	int sum=0;
	int eat=0;
	for(int i=9;i>0;i--){
		sum=(n+1)*2;
		n=sum;
	}
	printf("第一天共摘取的桃子数量为%d",sum);
	return 0;
}

 17.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。a不和x比,c说不和x,z比,请找出三队选手的比赛名单。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	char a,b,c;
	for(a='x';a<='z';a++){
		for(b='x';b<='z';b++){
			if(a!=b){
				for(c='x';c<='z';c++){
					if(a!=c&&b!=c){
						if(a!='x'&&c!='x'&&c!='z'){
							printf("a对%c,b对%c,c对%c",a,b,c);
						}
					}
				}
			}
		}	
	}
	return 0;
}

 18.打印菱形,数字类图形

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	for(int i=1;i<=5;i++){
		for(int j=1;j<=5-i;j++){
			printf(" ");
		}
		for(int k=1;k<=(2*i-1);k++){
			printf("*");
		}
		printf("\n");
	}
	for(int i=4;i>=1;i--){
		for(int j=1;j<=5-i;j++){
			printf(" ");
		}
		for(int k=1;k<=(2*i-1);k++){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

 19.有一序列 2/1,3/2,5/3,8/5,13/8,21/13...求这个数列的前20项之和。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	float a=2,b=1,t;
	float sum=0;
	for(int i=1; i<=20; i++) {
		sum+=a/b;
		t=a;
		a=a+b;
		b=t;
	}
	printf("%f",sum);
	return 0;
}

20.1+2!+3!+4!+...+20!的和?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	double mul=1;
	double sum=0;
	for(int i=1;i<=20;i++){
		for(int j=1;j<=i;j++){
			mul*=j;
		}
		sum+=mul;
		mul=1;
	}
	printf("%lf",sum);
	return 0;
}

21.将一个数组逆序输出

//编程34:将一个数组逆序输出
//程序分析:将第一个和最后一个互换
#include"stdio.h"
#define N 5
main(){
	int a[N]={1,4,7,5,9},i,temp1;
	for(i=0;i<N;i++){//原数组输出
		printf("%3d",a[i]);	
	}
	printf("\n");
	for(i=0;i<N/2;i++)//取数组的一半值对应下标,对应互换,奇数偶数都符合
	{
		temp1=a[i];//数值互换
		a[i]=a[N-1-i];
		a[N-i-1]=temp1;
	}
	for(i=0;i<N;i++)//一位数组输出
		printf("%3d",a[i]);
		return 0;
}

 22.杨辉三角,输出前十行

//编程35:杨辉三角,输出前十行
/*    1
	  1   1
	  1   2   1
	  1   3   3   1
	  1   4   6   4   1
	  1   5   10  10  5   1
*/
#include"stdio.h"
main() {
	int i,j,a[10][10];//定义
	for(i=0; i<10; i++) { //特殊情况
		a[i][0]=1;
		a[i][i]=1;
	}
	for(i=2; i<10; i++) //规律   某个位置的值=该值上面数值+该值上方左边的数值
		for(j=1; j<i; j++)
			a[i][j]=a[i-1][j]+a[i-1][j-1];	//[i][j]不要写反了
	for(i=0; i<10; i++) { //二维数组输出方式
		for(j=0; j<=i; j++)
			printf("%5d",a[i][j]);
		printf("\n");
	}
	return 0;
}

 23.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,第三、第四、第五都是这样做的。求海滩原来最少有多少个?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int fen=1;
	int shen=0;
	int sum=0;
	int i=1;
	while(1){
		shen=4*fen;
		for(i=1;i<=5;){
			if(shen%4==0){
				sum=shen/4*5+1;
				shen=sum;
				i++;
			}else{
				break;
			}
		}
		if(i==6){
			break;
		}
		fen++;
	}
	printf("%d",sum);
	return 0;
}

 24.10进制-8进制

#include <stdio.h>
/*10进制转换为8进制*/
void fun(int a)
{
	int chu, yu;
	chu=a/8;
	yu=a%8;
	if(chu==0)
	{
		printf("%d",yu);
	}
    else
    {
    	fun(chu);
    	printf("%d",yu);
	}
}
int main()
{
	int x;
	printf("请输入10进制数:");
	scanf("%d",&x);
	printf("转化后的8进制为:");
	fun(x);
    return 0;
}
 
 

25.8进制-10进制

#include <stdio.h>
#include <math.h>

int Trans(int n)
{
    int sum = 0;
    int i = 0;
    while (n) {
        sum += (n%10)*pow(8, i++);
        n /= 10;
    }
    return sum;
}

int main(void)
{
    int n;
    printf("请输入一个八进制数:");
    scanf("%d", &n);
    printf("转化为十进制为:");
    printf("%d", Trans(n));
}

26.10转16进制

#include <stdio.h>
/*10进制转换为16进制*/
int sum(int a,char b[])
{
	int chu, yu;
	chu=a/16;
	yu=a%16;
	if(chu==0)
		printf("%c",b[yu]);
    else
    {
    	sum(chu,b);
    	printf("%c",b[yu]);
	}
}
int main()
{
	int a;
	char b[17]="0123456789ABCDEF";
	printf("请输入10进制数:");
	scanf("%d",&a);
	printf("转化后的16制数为:");
	sum(a,b);
    return 0;
}

27.输入一个整数n,符号的行数(保证n是大于1的奇数),输出沙漏符号,使用“*”打印

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	for(int i=1;i<=(n/2+1);i++){
		for(int j=1;j<=i-1;j++){
			printf(" ");
		}
		for(int k=1;k<=(n-(i-1)*2);k++){
			printf("*");
		}
		printf("\n");
	}
	for(int i=1;i<=(n-(n/2+1));i++){
		for(int j=1;j<=(n-2*i-1)/2;j++){
			printf(" ");
		}
		for(int k=1;k<=(2*i+1);k++){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北沐xxx

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值