C语言考核

C语言考核

猴子偷桃

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>

int sum = 1;
int f(int n, int sum) {
	if (n > 0) {
		return f(n - 1, 2 * sum + 2);
	}
	else {
		return sum;
	}
}
int main() {
	int n = 9, sum = f(n, 1);
	printf("%d\n", sum);
}

成绩等级

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <Windows.h>

int main(void)
{
	float score;
	printf("请输入您的考试成绩:");
	scanf("%f", &score);
	if (score >= 90 && score <= 100)
	{
		printf("优秀!\n");
	}
	else if (score >= 80 && score <= 89)
	{
		printf("良好!\n");
	}
	else if (score >= 60 && score <= 79)
	{
		printf("及格!\n");
	}
	else if (score >= 0 && score <= 59)
	{
		printf("补考!继续努力!\n");
	}
	else
	{
		printf("请重新输入!\n");
	}
	return 0;
}

降序输出三个数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>  
#include <stdlib.h>
int main()
{
	int a, b, c, t;
	printf("请输入三个数:\n");
	scanf("%d%d%d", &a, &b, &c);

	if (a < b)
	{
		t = a;
		a = b;
		b = t;
	}
	if (a < c)
	{
		t = a;
		a = c;
		c = t;
	}
	if (b < c)
	{
		t = b;
		b = c;
		c = t;
	}
	printf("%d %d %d\n", a, b, c);
	system("pause");
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>  
#include <stdlib.h>

void Swap(int* px, int* py)
{
	int tmp = 0;
	tmp = *px;//解引用
	*px = *py;
	*py = tmp;
}

int main()
{
	int a, b, c;
	printf("请输入三个数:\n");
	scanf("%d%d%d", &a, &b, &c);

	if (a < b)
	{
		Swap(&a, &b);
	}
	if (a < c)
	{
		Swap(&a, &c);
	}
	if (b < c)
	{
		Swap(&b, &c);
	}
	printf("%d %d %d\n", a, b, c);
	system("pause");
	return 0;
}

9*9乘法表

int main() {
	int i, j, n;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++)
			printf("%d*%d=%2d  ", i, j, i * j);

		printf("\n");
	}
	return 0;
}
 http://c.biancheng.net/cpp/html/2808.html
int main()
{
	//外层循环变量,控制行
	int i = 0; 
	//内层循环变量,控制列
	int j = 0;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%dx%d=%d\t", i, j, i * j);
		}
		//每行输出完后换行
		printf("\n");
	}
}

水仙花

int main()
{
	int a, b, c, d;
	printf("输出100-999的水仙花");
	for (d = 100; d <= 999; d++)
	{
		a = d / 100;
		b = (d - a * 100) / 10;
		c = d % 10;
		if (d == a * a * a + b * b * b + c * c * c)
			printf("%d ", d);
	}
	printf("\n");
}

质因数

#include <stdio.h>

int main()
{
    int i=2,n;
    printf("请输入一个正整数:");
    scanf("%d",&n);
        while(n!=i)             //若i=n,则质因数就是n本身
        {
            if(n%i==0)          //若i是质因数,则打印出i的值,并用商给n赋新值
            {
                printf("%d\n",i);
                n=n/i;
            }
            else i++;         //若不能被L整除,则算下一个i
        }
    printf("%d\n",n);
    return 0;
}

同学捐款

#include <stdio.h>

int main()
{
    int i;
    float amount,aver,total;
    for(i=1,total=0;i<=10;i++)
    {
        printf("请%d个同学捐款:",i);
        scanf("%f",&amount);
        total=total+amount;
        if(total>=100000)
            break;
    }
    aver=total/(i-1);
    printf("总捐款人数为%d\n",(i-1));
    printf("人均捐款金额为%f\n",aver);
    return 0;
}

累加和

#include <stdio.h>int main(){    int i,n;    double factorial;    printf("输入n的值:");    scanf("%d",&n);    factorial=1;    for(i=1;i<=n;i++)        factorial=factorial*i;    printf("%d!=%.0f\n",n,factorial);    return 0;}

输入15个数升序输出10个数字,冒泡and选择排序

#define NUMBER 15
void bsort(int x[], int n)
{
	int i, j;
	for (i = 0; i < n - 1; i++)
	{
		for (j = 1; j < n - i; j++)
		{
			if (x[j] < x[j - 1])
			{
				int tmp = x[j];
				x[j] = x[j - 1];
				x[j - 1] = tmp;
			}
		}
	}
}
int main(void)
{
	int i, a[NUMBER];
	puts("please input the elements.");
	for (i = 0; i < NUMBER; i++)
	{
		printf("NO.%d = ", i + 1); scanf("%d", &a[i]);
	}
	bsort(a, NUMBER);
	puts("\n====================");
	for (i = 0; i < NUMBER-5; i++)
	{
		printf("a[%d] = %d\n", i, a[i]);
	}
	return 0;
}
int main(void)
{
	int a[10];
	int i, j, t;
	printf("input 10 numbers:\n");
	for (i = 0; i < 10; i++) {
		scanf("%d", &a[i]);
	}
	printf("\n");
	//一共排9趟序,因为最后一趟只剩一个数,不需要排
	for (i = 0; i < 9; i++) {
		//每趟从第一个数开始排,第一趟排完将最大的一个数沉底(即放在数组最后一个位置),第二趟不需要再管最后一个数了,后面同理,第i趟只需要管前面9 - i个数就够了。
			for (j = 0; j < 9 - i; j++) {
				//前面一个数比后面一个数大时,交换他俩的位置
				if (a[j] > a[j + 1]) {
					t = a[j];
					a[j] = a[j + 1];
					a[j + 1] = t;
				}
			}
	}
	printf("the sorted numbers:\n");
	//最后将排好序的数组顺序输出
	for (i = 0; i < 10; i++) {
		printf("%d\t", a[i]);
	}
	printf("\n");
}
 #include<stdio.h> void main(){int t,i,j,a[10]={1,3,5,7,8.10,2,4,6,9};for(i=1;i<10;i++){	for(j=0;j<i;j++){	if(a[i]<a[j])	{		t=a[i];		a[i]=a[j];		a[j]=t;	}	}}for(i=0;i<10;i++)	printf("%3d",a[i]); printf("\n"); } http://c.biancheng.net/cpp/html/3463.html

百钱买百鸡

#include <stdio.h>int main(){    int i, j, k;    printf("百元买百鸡的问题所有可能的解如下:\n");    for( i=0; i <= 100; i++ )        for( j=0; j <= 100; j++ )            for( k=0; k <= 100; k++ )            {                if( 5*i+3*j+k/3==100 && k%3==0 && i+j+k==100 )                {                    printf("公鸡 %2d 只,母鸡 %2d 只,小鸡 %2d 只\n", i, j, k);                }            }    return 0;}
#include <stdio.h>

int main()
{
    int chick, female, male;
    for (chick = 0; chick <= 100; chick++)
    {
        for (female = 0; female <= 33; female++)
        {
            for (male = 0; male <= 20; male++)
            {
                if (chick / 3 + female * 3 + male * 5 == 100 && chick % 3 == 0 && chick + female + male == 100)
                    printf("小鸡有%d只,母鸡有%d只,公鸡有%d只.\n", chick, female, male);
            }
        }
    }
}

输入10个数字输出最大值和最小值,MIN和MAX函数

#include <stdio.h>
int main ()
{
 int i,max,min;
 printf("输入数字:");
 scanf("%d\n",&max);//先输入一个数字当作最大值
 for(i=1;i<=9;i++)//10-1=9,循环9次之后得到结果
 {
  scanf("%d",&min);//把每一次输入的数字当作最小值
  if(max>min)//比较大小
  {
   max=max;
   min=min;
  }
  else
  {
   max=min;
   min=max;
  }
 }
 printf("最大值是%d,最小值是%d",max,min);//输出!
 }

#include <stdio.h>
#include <math.h>
int main(){
	int a,b,c,d;
	int temp, temp1,temp2;
	int max(int a,int b);
	int min(int a,int b);
	printf("请输入a的值:");
	scanf("%d",&a);
	printf("请输入b的值:");
	scanf("%d",&b);
	printf("请输入c的值:");
	scanf("%d",&c);
	printf("请输入d的值:");
	scanf("%d",&d);
	temp1=max(a,b);	
	temp2=max(c,d);
	temp=max(temp1,temp2);
	printf("四个数中最大的是:%d",temp);
	temp1=min(a,b);	
	temp2=min(c,d);
	temp=min(temp1,temp2);
	printf("四个数中最小的是:%d",temp);
}
	int max(int a,int b){
		if(a>b){
			return a;
		}else{
			return b;
		}
	}
	int min(int a,int b){
		if(a<b){
			return a;
		}else{
			return b;
		}
	}

直角三角形

int main(void){	int i, j, n;  	printf("请输入图形的行数");	scanf("%d", &n);	for ( i = 0; i < n; i++)  //i代表行数,假如当n=6i就要进行6次循环	{		for (j = i; j >= 0; j--) //j负责打印星星			printf("* ");		printf("\n");	}	system("pause");	return EXIT_SUCCESS;}https://blog.csdn.net/qq_42855675/article/details/81412200https://blog.csdn.net/wgajc4840/article/details/103652479https://www.sqlsec.com/2018/10/for.htmlhttps://blog.csdn.net/ccjsj1/article/details/5448732

菱形

int main() {    int line;  // 菱形总行数    int column;  // 菱形总列数    int i;  // 当前行    int j;  // 当前列    printf("请输入菱形的行数(奇数):");    scanf("%d", &line);    if (line % 2 == 0) {  // 判断是否是奇数        printf("必须输入奇数!\n");        exit(1);    }    column = line;  // 总行数和总列数相同    for (i = 1; i <= line; i++) {  // 遍历所有行        if (i < (line + 1) / 2 + 1) {  // 上半部分(包括中间一行)            for (j = 1; j <= column; j++) {  // 遍历上半部分的所有列                if ((column + 1) / 2 - (i - 1) <= j && j <= (column + 1) / 2 + (i - 1)) {                    printf("*");                }                else {                    printf(" ");                }            }        }        else {  // 下半部分            for (j = 1; j <= column; j++) {  // 遍历下半部分的所有列                if ((column + 1) / 2 - (line - i) <= j && j <= (column + 1) / 2 + (line - i)) {                    printf("*");                }                else {                    printf(" ");                }            }        }        printf("\n");    }    return 0;}
int main()
{
	int n;
	scanf("%d", &n);
	n = n | 1;
	for (int r = 0; r < n; r++) {
		for (int c = 0; c < n; c++) {
			int n2 = n / 2;
			if (r <= n2 && c >= n2 - r && c <= n2 + r) {
				printf("*");
			}
			else if (r > n2 && c >= r - n2 && c < n - r + n2) {
				printf("*");
			}
			else {
				printf(" ");
			}
		}
		printf("\n");
	}
	return 0;
}

鸡兔同笼

 https://mp.weixin.qq.com/s/F_7ScNWbsAKay-XONGpwIQ
 int main() {

    int a, b, x, t = 1;

    printf("请输入鸡和兔子总数:");
    scanf("%d", &a);
    printf("请输入鸡和兔子脚的总数:");
    scanf("%d", &b);

    for (x = 0; x <= a; x++)

        if (x * 2 + (a - x) * 4 == b)

            printf("有%d鸡,%d兔子\n", x, a - x);
    t = 0;
    if (t == 1)
        printf("无解,输入错误\n");
    return 0;
}
int main()
{
	int a, b, c, d;//a:鸡,b:兔,c:头数,d:脚数
	int i = 1;
	printf("请输入鸡和兔总的头数:");
	scanf("%d", &c);
	while (i)
	{
		printf("请输入鸡和兔总的脚数:");
		scanf("%d", &d);
		if (d % 2 == 1)
		{
			printf("鸡兔的总脚数不能是奇数\n");
			continue;
		}
		else if (d % 2 == 0)
			i = 0;
	}
	for (a = 1; a < c; a++)
	{
		b = c - a;
		if (a * 2 + b * 4 == d)
			break;
	}
	printf("鸡的数量:%d只\n兔的数量:%d只\n\n", a, b);
	return 0;
}
int main(){
	int a,x,y,n,m;
	scanf("%d",&a);
	while(a--){
		scanf("%d%d",&n,&m);
		if(!(m%2)){//总腿数应为偶数
			x=2*n-m/2;//鸡的个数
			y=m/2-n;//兔的个数
			if(x>=0&&y>=0){
				printf("%d %d\n",x,y);
				continue;
			}
		}
		printf("No answer\n");
	}
	return 0;
}

int main(){
	int a,x,y,n,m;
	scanf("%d",&a);
	while(a--){
		scanf("%d%d",&n,&m);
		if(!(m%2)){//总腿数应为偶数
			x=2*n-m/2;//鸡的个数
			y=m/2-n;//兔的个数
			if(x>=0&&y>=0){
				printf("%d %d\n",x,y);
				continue;
			}
		}
		printf("No answer\n");
	}
	return 0;
}
https://blog.dotcpp.com/a/8639
int main()
{
	int a,b,n, m;
	// a鸡的数量
	// b兔的数量
	// n鸡兔总数
	// m总脚数
	scanf("%d %d", &n,&m);
	a = (4 * n - m) / 2;//算出鸡的数量
	b = n - a;//算出兔的数量

	if (a <= 0 || b <= 0)
	{
		//结果小于等于0,答案不成立,无解
		printf("No answer");
	}
	else
	{
		//结果大于0
		printf("%d %d", a, b);
	}
	return 0;
}

int main(void)
{
	int head, foot, num1, num2;
	printf("请输入鸡和兔的总头数和总脚数,用空格隔开:\n");
	scanf("%d %d", &head, &foot);
	if (foot % 2 == 1 || foot < head * 2)
	{
		printf("输入有误!\n");
		return 0;
	}
	num1 = (foot - head * 2)/(4 - 2);
	num2 = head - num1;
	if ((num1 >= 0) && (num2 >= 0))
		printf("兔子个数:%d,鸡的个数:%d\n", num1, num2);
	else
		printf("输入有误!\n");

	return 0;
}

鸡兔鸟

void Find(int n);
void Find(int n)
{
	int i, j, k;//循环变量,分别为鸟鸡兔
	int sumi = 0;//算法优化测试1
	int sumj = 0;//2
	int sumk = 0;//3
	for (i = 1; i <= n; i++)
	{
		sumi++;
		for (j = 1; j <= n - i; j++)
		{
			sumj++;
			for (k = 1; k <= n - i - j; k++)
			{
				sumk++;
				//头和脚都要相等
				if (((i * 9 + j * 1 + k * 1) == n) && ((i * 2 + j * 2 + k * 4) == n))
				{
					printf("%d %d %d\n", i, j, k);
				}

			}
		}
	}
	printf("i一共循环了多少%d次\n", sumi);
	printf("j一共循环了多少%d次\n", sumj);
	printf("k一共循环了多少%d次\n", sumk);
}
int main()
{
	int number;
	scanf("%d", &number);
	Find(number);
	return 0;
}

结构体

#include<iostream>
#include<cstring>
#define PERSON 10 
#define COURSE 3
using namespace std;
struct Student{
	char name[10];
	int  numbers;
	int  age;
	int  score[COURSE];
	int  Total_score;
};

int main(){
	Student student[PERSON],student_T,max1[COURSE];
	int i,j,k,t,m;
	cout<<"				姓名	学号	年龄	语文成绩	数学成绩	英语成绩"<<endl;
	for(i=0;i<PERSON;i++){
		cout<<"现在请输入第"<<i+1<<"位小学生的信息";
		cin>>student[i].name>>student[i].numbers>>student[i].age;
		if(student[i].age<6||student[i].age>14){
			cout<<"年龄超出有效范围,请重新输入:";
			cin>>student[i].age;
		}
		for(j=0;j<COURSE;j++){
			cin>>student[i].score[j];
			if(student[i].score[j]<0||student[i].score[j]>100){
				cout<<"成绩超出有效范围,请重新输入第"<<j+1<<"门成绩:";
				cin>>student[i].score[j];
			}
		}		
	}
	for(i=0;i<PERSON;i++)//求总分 
		student[i].Total_score=student[i].score[0]+student[i].score[1]+student[i].score[2];
	
	cout<<"\n"<<"\n"<<"---------------------------------------------------------------------------------------------------------"<<endl;
	cout<<"			姓名	学号	年龄	语文成绩	数学成绩	英语成绩	总分"<<endl;			 
	cout<<"---------------------------------------------------------------------------------------------------------"<<endl;			
	for(i=0;i<PERSON;i++){
		cout<<"第"<<i+1<<"位小学生的信息"<<"\t"<<student[i].name<<"\t"<<student[i].numbers<<"\t"<<student[i].age<<"\t";
		for(j=0;j<COURSE;j++)
			cout<<student[i].score[j]<<"\t"<<"\t";
		cout<<student[i].Total_score<<endl;
		} 
	for(i=0;i<PERSON-1;i++){//总分排序
		k=i;
		for(j=i+1;j<PERSON;j++){
			if(student[j].Total_score>student[k].Total_score)
				k=j;
		}
		student_T=student[k];
		student[k]=student[i];
		student[i]=student_T;
	}
	cout<<"\n"<<"\n"<<"	总分排名"<<endl; 
	cout<<"----------------------"<<endl;
	cout<<"排名	姓名	总分"<<endl;
	cout<<"----------------------"<<endl;
	for(i=0;i<PERSON;i++)//输出总分排名 
		cout<<i+1<<"\t"<<student[i].name<<"\t"<<student[i].Total_score<<endl;

	for(m=0;m<COURSE;m++){//最高分排序
		for(i=0;i<PERSON-1;i++){
			k=i;
			for(j=i+1;j<PERSON;j++){
				if(student[j].score[m]>student[k].score[m])
					k=j;
			}
			student_T=student[k];
			student[k]=student[i];
			student[i]=student_T;
		}
		max1[m]=student[0];
	}
	cout<<"\n"<<"\n"<<"		单科最高分"<<endl;
	cout<<"------------------------------------"<<endl;
	cout<<"科目	最高分	姓名	学号	年龄"<<endl;
	cout<<"------------------------------------"<<endl;
	for(i=0;i<COURSE;i++){
		if(i==0)                 //输出科目 、最高分  
			cout<<"语文"<<"\t"<<max1[0].score[0]<<"\t";
		else if(i==1)
				cout<<"数学"<<"\t"<<max1[1].score[1]<<"\t";
			else if(i==2)
					cout<<"英语"<<"\t"<<max1[2].score[2]<<"\t";
		cout<<max1[i].name<<"\t"<<max1[i].numbers<<"\t"<<max1[i].age<<endl;
	}
	system("pause");
	return 0;
}

上一篇:c/c++下常用输入问题汇总


下一篇:c语言中的%d,&y是什么意思?