C语言 基础40道编程题库汇总

文章目录

        • 1.输入两个整数,求两数的平方和并输出
        • 2.输入一个圆半径( r )当r>=0时,计算并输出圆的面积和周长,否则输出提示信息。
        • 3.函数y=f(x)可表示为y=2x+1(x<0) y=0(x=0) y=2x-1(x>0) 编程实现输入一个x值,输出y值。
        • 4.编写一个程序,从4个整数中找出最小的数,并显示此数。
        • 5.有一函数当x<0时,y=3,当x=0时,y=5 ,编程从键盘输入一个x值,输出y值
        • 6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)
        • 7.从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,并打印最大者的年龄
        • 8.键盘输入两个加数,再输入答案,如果正确,显示“right”,否则显示“error”
        • 9.编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:费用30元,<=10小时。费用每小时3元,10-50小时。费用每小时2.5元,>=50小时。要求当输入每月小时数,显示该月总的上网费用。
        • 10.神州行用户无月租费,话费每分钟0.6元,全球通用户月租费50元,话费每分钟0. 4元。输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。
        • 11.个人所得税计算,应纳税款的计算公式如下:收入<=1000元部分税率为0%,2000元>=收入>1000元的部分税率为5%,3000元>=收入>2000元的部分税率为10%,6000元>=收入>3000元的部分税率为15%,收入>6000元的部分税率为20%。输入某人的收入,计算出应纳税额及实际得到的报酬。(如需连续计算多个人的纳税情况,直到输入负数为止,程序应如何改进?试写出程序)
        • 12.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
        • 13. 编程设计一个简单的计算器程序。从键盘输入2个操作数,1个运算符,当运算符为加(+)、减(-)、乘(*)、除(/)时,输出计算结果。
        • 14. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。
        • 15、编程序实现求1-10之间的所有数的乘积并输出。
        • 16. 从键盘上输入10个数,求其平均值。
        • 17、编程序实现求1-1000之间的所有奇数的和并输出。
        • 18.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……编程求这个序列的前20项之和。
        • 19. 用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。
        • 20、用循环的方法构造一个5行5列的二维数组,使主对角线上的变量为1,其它为0,并将数组中所有项按行按列显示出来。
        • 21.求一个3×3矩阵对角线元素之和。从键盘输入矩阵元素的值并输出和的值。
        • 22.输入n的值,n代表行数,输出如图所示的图形。
        • 23、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。(提示:用数组存放成绩数据)
        • 24.从键盘输入某班学生某门课的成绩及其学号(班级人数最多40人,具体人数由键盘输入),输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分。请编写程序。
        • 25.将一个有5个元素的数组中的值(整数)按逆序重新存放。例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8
        • 26.从键盘上输入一个2*3的矩阵,将其转置后形成3*2的矩阵输出。
        • 27.编写两个函数分别求两个整数的最小公倍数和最大公约数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。
        • 28. 输入一个3*3矩阵,求出其转置矩阵,并求出两个矩阵的和。
        • 29、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)
        • 30. 定义一个5行3列的数组,从键盘输入各数组元素的值,计算各数组元素之和。
        • 31、编写程序,交换两个数组中的对应元素。
        • 32、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。
        • 33.编程实现如下功能:从键盘输入一行字符,统计其中英文字符,数字字符和其他字符的个数。
        • 34.编程实现如下功能:1)在主函数中,实现从键盘输入10名学生某门课的成绩,保存在一维数组中;调用排序函数;对排序后的数组中的元素按从高到低打印输出。2)编写排序函数,使用数组名做函数参数,实现对该成绩的排序。
        • 35.编程实现如下功能: 实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。
        • 36、猜数游戏。系统随机产生一个整数,通过键盘输入数据猜数,猜对为止,并要求统计猜的次数。注:rand()函数可以产生0~32767间的正整数,程序中需包含stdlib.h。
        • 37.输入两个整数,利用指针变量作为函数参数,编程实现两数互换功能,并将交换后的数据重新输出。
        • 38.随机输入若干个学生的体重,以输入负数或零结束,分别求最重和最轻的体重,并计算平均体重。
        • 39.输入m,k的值,编程求下面表达式的值:(要求编写一个求阶乘的函数,调用函数实现本题)
        • 40.编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。

1.输入两个整数,求两数的平方和并输出
#include
int main()
{
	int a,b,c;
	printf("please input a,b:\n");
	scanf("%d%d",&a,&b);
	c=a*a+b*b;
	printf("the result is %d\n",c); 
 } 
2.输入一个圆半径( r )当r>=0时,计算并输出圆的面积和周长,否则输出提示信息。
#include
#define PI 3.14
int main()
{
	float r,s,l;
	printf("please input r:\n");
	scanf("%f",&r);
	if(r>=0)
	{
		s=PI*r*r;
		l=2*PI*r;
		printf("the area is %.2f\n",s);
		printf("the circumference is %.2f\n",l);
	}
	else
	printf("input error!\n");
}
3.函数y=f(x)可表示为y=2x+1(x<0) y=0(x=0) y=2x-1(x>0) 编程实现输入一个x值,输出y值。
#include
int main()
{
	int x,y;
	scanf("%d",&x);
	if(x<0)
		y=2*x+1;
	if(x>0)
		y=2*x-1;
	if(x==0)
		y=0;
	printf("%d",y);
}
4.编写一个程序,从4个整数中找出最小的数,并显示此数。
#include
int main()
{
	int a,b,c,d,t;
	printf("please input a,b,c,d:\n");
	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
	if(a>b)
	{
		t=a;
		a=b;
		b=t;
	}
	if(a>c)
	{
		t=a;
		a=c;
		c=t;	
	}
	if(a>d)
	{
		t=a;
		a=d;
		d=t;
	}
	printf("min = %d\n",a);
}
5.有一函数当x<0时,y=3,当x=0时,y=5 ,编程从键盘输入一个x值,输出y值
#include
int main()
{
	int x,y;
	printf("please input x:"); 
	scanf("%d",&x);
	if(x<0)
		y=1;
	else if(x==0)
		y=5;
	else
		y=3;
	printf("x=%d,y=%d\n",x,y); 
 } 
6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)
#include
int main()
{
	float max(float x,float y);
	float a,b,m;
	scanf("%f,%f",&a,&b);
	m=max(a,b);
	printf("Max is %f\n",m);
}

float max(float x,float y)
{
	float temp;
	if(x<y)
	{
		temp=x;
		x=y;
		y=temp;
	}
	return(x);
}
7.从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,并打印最大者的年龄
#include
int main()
{
	int yourAge,hisAge;
	printf("Please enter your age:");
	scanf("%d",&yourAge);
	printf("Please enter your friend's age:");
	scanf("%d",&hisAge);
	if(yourAge>=hisAge)
	{
		printf("You are older!Your age is=%d\n",yourAge);
	}
	if(yourAge<hisAge)
	{
		printf("You friend is older!HisAge age is=%d\n",hisAge);
	}
}  
8.键盘输入两个加数,再输入答案,如果正确,显示“right”,否则显示“error”
#include
int main()
{
	int a,b,c;
	printf("please input a and b:\n");
	scanf("%d,%d",&a,&b);
	printf("please input the answer for a+b:\n");
	scanf("%d",&c);
	if(c==a+b)
		printf("right!\n");
	else
		printf("error!\n");
}
9.编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:费用30元,<=10小时。费用每小时3元,10-50小时。费用每小时2.5元,>=50小时。要求当输入每月小时数,显示该月总的上网费用。
#include
int main()
{
	int hour;
	float fee;
	printf("please input hour:");
	scanf("%d",&hour);
	if(hour<=10)
		fee=30;
	else if(hour>=10&&hour<=50)
		fee=3*hour;
	else fee=hour*2.5;
	printf("The total fee is %0.2f",fee);
} 
10.神州行用户无月租费,话费每分钟0.6元,全球通用户月租费50元,话费每分钟0. 4元。输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。
#include
int main()
{
	float a,x,y;
	printf("请输入您的话费:");
	scanf("%f",&a);
	x=0.6*a;
	y=50+0.4*a;
	printf("神州行话费为:%0.2f\n",x);
	printf("全球通话费为:%0.2f\n",y);
	if(x>=y)
		printf("建议使用全球通");
	else
		printf("建议使用神行通"); 
}
11.个人所得税计算,应纳税款的计算公式如下:收入<=1000元部分税率为0%,2000元>=收入>1000元的部分税率为5%,3000元>=收入>2000元的部分税率为10%,6000元>=收入>3000元的部分税率为15%,收入>6000元的部分税率为20%。输入某人的收入,计算出应纳税额及实际得到的报酬。(如需连续计算多个人的纳税情况,直到输入负数为止,程序应如何改进?试写出程序)
#include
int main() 
{
	int grade;
	float income,tax,money;
	printf("please input your income:");
	scanf("%f",&income);
	if(income<0)
		printf("the input is error!");
	else	
		{
			grade=(int)income/1000;
			switch(grade)
			{
				case 0:tax=0;break;
				case 1:tax=(income-1000)*0.05;break;
				case 2:tax=50+(income-2000)*0.1;break;
				case 3:tax=150+(income-3000)*0.15;break;
				default:tax=600+(income-6000)*0.2;
			}
			money=income-tax;
			printf("tax=%0.2f,money=%0.2f",tax,money);
		}	
 } 
12.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
#include
int main()
{
	int data;
	char grade;
	printf("please enter the score:");
	scanf("%d",&data);
	switch(data/10)
	{
		case 10:
		case 9:grade='A';break;
		case 8:grade='B';break;
		case 7:grade='C';break;
		case 6:grade='D';break;
		default:grade='E';
	}
	printf("the grade is %c",grade);
}
13. 编程设计一个简单的计算器程序。从键盘输入2个操作数,1个运算符,当运算符为加(+)、减(-)、乘(*)、除(/)时,输出计算结果。
#include
int main()
{
	int data1,data2;  //定义两个操作符 
	char op;          //定义运算符
	printf("Please enter the expression:");
	scanf("%d%c%d",&data1,&op,&data2);
	switch(op)
	{
		case '+':
			printf("%d+%d=%d\n",data1,data2,data1+data2);
			break;
		case '-':
			printf("%d-%d=%d\n",data1,data2,data1-data2);
			break;
		case '*':
			printf("%d*%d=%d\n",data1,data2,data1*data2);
			break;
		case '/':
			if(0==data2)
				printf("Division by zero!\n");
			else
				printf("%d/%d=%d\n",data1,data2,data1/data2);
			break;
		default:
			printf("Unknown operator!\n");
	}
}
14. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。
#include
int main()
{
	int a[10],i,iNum1=0,iNum2=0,iNum3=0;
	
	for(i=0;i<10;i++)
	{
		printf("please input number:");
		scanf("%d",&a[i]);
		if(a[i]>0)
			iNum1++;
		else if(a[i]<0)
			iNum2++;
			else 
				iNum3++;
		printf("正数:%d个,负数:%d个,零:%d\n个",iNum1,iNum2,iNum3);
	}
} 
15、编程序实现求1-10之间的所有数的乘积并输出。
#include
int main()
{
	int i,sum=1;
	for(i=1;i<=10;i=i+1){
		sum=sum*i;
	}
	printf("the sum of odd is:%d",sum);
}
16. 从键盘上输入10个数,求其平均值。
#include
int main()
{
	int a[10],sum=0;
	float ave=0;
	printf("please input number:\n");
	for(int i=0;i<10;i++){
		scanf("%d",&a[i]);
		sum+=a[i];
		ave=(float)sum/10; //ave=sum/10.0;
	}
	printf("ave=%f\n",ave);
}
17、编程序实现求1-1000之间的所有奇数的和并输出。
#include
int main()
{
	int i;
	long sum=0;
	for(i=1;i<=1000;i=i+2){
		sum=sum+i;
	}
	printf("the sum of odd is:%ld",sum);
}
18.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……编程求这个序列的前20项之和。
#include
int main()
{
	int i,t,n=20;
	float num1=2,num2=1,sum=0;
	for(i=1;i<=n;i++){
		sum=sum+num1/num2;
		t=num1;
		num1=num1+num2;
		num2=t;
	}
	printf("sum=%0.2f",sum);
}
19. 用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。
#include
int main()
{
	int i;
	float a[5],sum=0;
	for(i=0;i<5;i++){
		printf("输入第%i个学生的成绩:",i+1); 
		scanf("%f",&a[i]);
		sum=sum+a[i];
	}
	printf("result=%0.2f",sum/5);
}
20、用循环的方法构造一个5行5列的二维数组,使主对角线上的变量为1,其它为0,并将数组中所有项按行按列显示出来。
#include
int main()
{
	int a[5][5],i,j,s=0;
	for(i=0;i<5;i++){
		for(j=0;j<5;j++){
			if(i==j)
				a[i][j]=1;
			else
				a[i][j]=0;
		}
	}
	for(i=0;i<5;i++){
		for(j=0;j<5;j++){
			if(j==0)
				printf("\n");
				printf("%d",a[i][j]);
			}
	}
}
21.求一个3×3矩阵对角线元素之和。从键盘输入矩阵元素的值并输出和的值。
#include
int main()
{
	int a[3][3],sum=0;
	int i=0,j=0;
	printf("Enter data:\n");
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			scanf("%d",&a[i][j]);
		}
	} 
	for(i=0;i<3;i++){
		sum=sum+a[i][j]; 
			}	
	printf("sum=%d",sum);
}
22.输入n的值,n代表行数,输出如图所示的图形。
     *
     *  *  *
     *  *  *  *  *
     *  *  *  *  *  *  *    (此图为n=4时的输出结果)
#include
int main()
{
	int i,j,k;
	for(i=1;i<=4;i++){ //控制行数 
		for(k=1;k<=(2*i-1);k++){ //控制每行输出的*号个数 
			printf("*");
		}
	printf("\n");//输出一行后换行 
	}
} 
23、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。(提示:用数组存放成绩数据)
#include
#define M 30
int main()
{
	float score[M],max,min,aver;
	int i;
	printf("please input score:\n");
	for(i=0;i<M;i++){
		scanf("%f",&score[i]);
	}
	aver=0.0;
	max=score[0];
	min=score[0];
	for(i=0;i<M;i++){
		if(max<score[i])
			max=score[i];
		if(min>score[i])
			min=score[i];
			aver+=score[i];
	}
	printf("max=%0.2f,min=%0.2f,aver=%0.2f",max,min,aver/M);
}
24.从键盘输入某班学生某门课的成绩及其学号(班级人数最多40人,具体人数由键盘输入),输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分。请编写程序。
#include
#define ARR_SIZE 40
int main()
{
	float score[ARR_SIZE],maxScore,minScore,sum;
	int n,i;
	long maxNum,minNum,num[ARR_SIZE];
	printf("please enter total number:");
	scanf("%d",&n);
	printf("Please enter the number and score:\n");
	for(i=0;i<n;i++){
		scanf("%ld%f",&num[i],&score[i]);
	}
	maxScore=score[0];
	minScore=score[0];
	maxNum=num[0];
	minNum=num[0];
	sum=score[0];
	for(i=1;i<n;i++){
		if(score[i]>maxScore){
			maxScore=score[i];
			maxNum=num[i];
		}
		else if(score[i]<minScore)
		{
			minScore=score[i];
			minNum=num[i];
		}
		sum=sum+score[i];
	}
	printf("maxScore=%0.2f,maxNum=%ld\n",maxScore,maxNum);
	printf("minScore=%0.2f,minNum=%ld\n",minScore,minNum);
	printf("sum=%0.2f,average=%0.2f\n",sum,sum/n);
}
	
25.将一个有5个元素的数组中的值(整数)按逆序重新存放。例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8

以下三种方法总结

#include
#define N 5
int main()
{
	int a[N],i,temp;
	printf("enter array a:\n");
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	for(i=0;i<N/2;i++)
	{
		temp=a[i];
		a[i]=a[N-i-1];
		a[N-i-1]=temp;
	}
	printf("Now,array a:\n");
	for(i=0;i<N;i++)
		printf("%2d",a[i]);
	printf("\n");
}
#include
#define N 5
int main()
{
	int a[N],i,j,temp;
	printf("enter array a:\n");
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	for(i=0;i<N;i++)
	{
		for(j=i+1;j<N;j++){
			temp=a[i];
			a[i]=a[j];
			a[j]=temp;
		}
	}
	printf("Now,array a:\n");
	for(i=0;i<N;i++)
		printf("%2d",a[i]);
	printf("\n");
}
#include 
int main()
{
    int a[5] = { 8, 6, 5, 4, 1 };
    int i, j, t;
    for (i = 4, printf("逆序数组: "); i > -1;)
    {
        printf("%d ", a[i--]); 
    }
    return 0;
}

26.从键盘上输入一个23的矩阵,将其转置后形成32的矩阵输出。
#include
int main()
{
	int a[2][3],b[3][2],i,j;
	printf("enter array a:\n");
	for(i=0;i<2;i++){
		for(j=0;j<3;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<3;i++){
		for(j=0;j<2;j++){
			b[i][j]=a[j][i];
		}
	}
	printf("Now,array a:\n");
	for(i=0;i<3;i++){
		for(j=0;j<2;j++){
			printf("%5d",b[i][j]);
		}
		printf("\n");
	}
}
27.编写两个函数分别求两个整数的最小公倍数和最大公约数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。
#include
int main()
{
int mingy(int a,int b);
int maxgb(int a,int b);
int m,n,gys,gbs;
printf("please input two numbers:");
scanf("%d %d",&m,&n);
gys=mingy(m,n);
gbs=maxgb(m,n);
printf("the result is:%d %d",gys,gbs);
return 0;  
}

int mingy(int x, int y)
{  
int z;
    for (z=x%y; z!=0; x=y,y=z,z=x%y);
    return y;
}

int maxgb(int x, int y)
{
int t;
t=(x*y)/mingy(x,y);
    return t;
}
28. 输入一个3*3矩阵,求出其转置矩阵,并求出两个矩阵的和。
#include
int main()
{
	int a[3][3];
	int b[3][3];
	int c[3][3];
	int i,j;
	printf("please input 6 numbers:\n");
	for(i=1;i<3;i++)
	{
		for(j=1;j<3;j++)
		{
			scanf("%d",&a[i][j]);
			b[j][i]=a[i][j];
		}
	}
	for(i=1;i<3;i++)
	{
		for(j=1;j<3;j++)
		{
			c[i][j]=a[i][j]+b[i][j];
		}
	}
	for(i=1;i<3;i++)
	{
		for(j=1;j<3;j++)
		{
			printf("%d ",a[i][j]);
		}
	}
}
29、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)
#include
int main()
{
	int a[10];
	int i,j,temp;
	printf("input score:\n");
	for(i=0;i<10;i++)
	scanf("%d",&a[i]);
	printf("\n");
	for(i=1;i<10;i++)
	for(j=0;j<9;j++)
	{
		if(a[j]<a[j+1])
		{
			temp=a[j];
			a[j]=a[j+1];
			a[j+1]=temp;
		}	
	}
	for(i=0;i<10;i++)
	printf("%d ",a[i]); 
}
30. 定义一个5行3列的数组,从键盘输入各数组元素的值,计算各数组元素之和。
#include
int main()
{
	int i,j,sum,a[5][3];
	printf("Enter data:\n");
	for(i=0;i<5;i++)
		for(j=0;j<3;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<5;i++)
		for(j=0;j<3;j++)
			sum=sum+a[i][j];
	printf("sum=%d\n",sum);
}
31、编写程序,交换两个数组中的对应元素。
#include
#define N 5
int main()
{
	int a[N],b[N],i,j,temp;
	printf("please input a:\n");
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	printf("please input b:\n");
	for(j=0;j<N;j++)
		scanf("%d",&b[j]);
	for(i=0;i<N;i++)
	{
		temp=a[i];
		a[i]=b[i];
		b[i]=temp;
	}
	
	printf("the result of a is:");
	for(i=0;i<N;i++)
	{
		printf("%d ",a[i]);
	}
		
	printf("\nthe result of b is:");
	for(i=0;i<N;i++)
	{
		printf("%d ",b[i]);
	}
		
}
32、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。
#include
int main()
{
	int a[4][3],i,j;
	printf("please enter data:\n");
	for(i=0;i<4;i++)
		for(j=0;j<3;j++)
			scanf("%d",&a[i][j]);
	int min=a[0][0];
	int m=0,n=0;
	for(i=0;i<4;i++)
		for(j=0;j<3;j++)
			if(a[i][j]<min)
			{
				min=a[i][j];
				m=i;
				n=j;
			}
	printf("最小的数是=%d\n 行=%d 列=%d",min,m,n);
}
33.编程实现如下功能:从键盘输入一行字符,统计其中英文字符,数字字符和其他字符的个数。
#include
#include
#define ARR_SIZE 80
int main()
{
	char str[ARR_SIZE];
	int len,i,letter=0,digit=0,space=0,others=0;
	printf("please input a string:");
	gets(str);
	len=strlen(str);
	for(i=0;i<len;i++)
	{
		if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
			letter++;
		else if (str[i]>='0'&&str[i]<='9')
			digit++;
		else
			others++;
	}
	printf("English character:%d\n",letter);
	printf("digit character:%d\n",digit);
	printf("other character:%d\n",others);
}
34.编程实现如下功能:1)在主函数中,实现从键盘输入10名学生某门课的成绩,保存在一维数组中;调用排序函数;对排序后的数组中的元素按从高到低打印输出。2)编写排序函数,使用数组名做函数参数,实现对该成绩的排序。
#include
#define ARR_SIZE 40
void Sort(float score[],long num[],int n);
int main()
{
	float score[ARR_SIZE];
	int n,i;
	long num[ARR_SIZE];
	printf("please enter total number:");
	scanf("%d",&n);
	printf("please enter the number and score:\n");
	for(i=0;i<n;i++)
	{
		scanf("%ld%f",&num[i],&score[i]);
	}
	
	Sort(score,num,n);
	printf("Sorted results:\n");
	for(i=0;i<n;i++)
	{
		printf("%ld\t%4.0f\n",num[i],score[i]);
	}
}
void Sort(float score[],long num[],int n)
{
	int i,j;
	float temp1;
	long temp2;
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(score[j]>score[i])
			{
				temp1=score[j];
				score[j]=score[i];
				score[i]=temp1;
			
				//交换学号
				temp2=num[j];
				num[j]=num[i];
				num[i]=temp2;
			}
		}
	}
}
35.编程实现如下功能: 实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。
#include 
#include 
#define ARR_SIZE 80

void MyStrcat(char dstStr[], char srcStr[]);
int main()
{  
	char  s[ARR_SIZE], t[ARR_SIZE];
	printf("Please enter source string: ");
	gets(s);
	printf("Please enter destination string: ");
	gets(t);
	MyStrcat(s,t);
	printf("The concatenate string is: ");
	puts(s);
}

void MyStrcat(char dstStr[], char srcStr[])
{   
	int i = 0, j;
    while(dstStr[i] != '\0'){   
		i++;
    }
    for (j=0; srcStr[j]!='\0'; j++, i++)
    {
         dstStr[i] = srcStr[j];
    }
     dstStr[i] = '\0';
}
36、猜数游戏。系统随机产生一个整数,通过键盘输入数据猜数,猜对为止,并要求统计猜的次数。注:rand()函数可以产生0~32767间的正整数,程序中需包含stdlib.h。
#include 
#include 
int main()
{
	int  magic;                 
	int  guess;                  
	int  counter;                    
	magic = rand() % 100 + 1;   
	counter = 0;            
do{
	printf("Please guess a magic number:");
	scanf("%d", &guess);       
	counter ++;               
	if (guess > magic)     
	printf("Wrong!Too high!\n");
	else if (guess < magic)  
	printf("Wrong!Too low!\n");
	}
while (guess != magic);
	printf("Right!\n");           
	printf("counter = %d\n", counter);
}

37.输入两个整数,利用指针变量作为函数参数,编程实现两数互换功能,并将交换后的数据重新输出。
#include
void Swap(int *x, int *y);
int main()
{ 
	int  a, b;
	printf("Please enter a,b:");
	scanf("%d,%d", &a, &b);
	printf("Before swap: a = %d,b = %d\n", a,b);
	Swap(&a, &b);
	printf("After swap: a = %d,b = %d\n", a, b);  
}
void Swap(int *x, int *y)
{	
	int  temp;
	temp = *x;
	*x = *y;
	*y = temp;   
}

38.随机输入若干个学生的体重,以输入负数或零结束,分别求最重和最轻的体重,并计算平均体重。
#include
int main()
{ 
	int n=0;
    float weight,max=0,min=100,sum=0,ave;
    printf("please input the weight:");
	scanf("%f",&weight);
while(weight>0)
    { 
	sum=weight+sum;
    n++;
    if (weight<min)
    	min=weight;
    else if(weight>max)
    	max=weight;
    scanf("%f",& weight);
	}
if(n>0)
{ 
	ave=sum/n;
	printf("maxweight = %f\n ",max);  
	printf("minweight = %f\n",min);
	printf("ave = %f\n",ave);
}
else  
	printf("NO VALID DATA");
}
39.输入m,k的值,编程求下面表达式的值:(要求编写一个求阶乘的函数,调用函数实现本题)

在这里插入图片描述

#include 
unsigned long Factorial(unsigned int number);
int main()
{ 
	unsigned int m, k;
	double p;
	printf("Please input m, k:");
	scanf("%u, %u", &m, &k);
	p = (double)Factorial(k) / Factorial (m-k);
	printf("p=%0.2f\n", p);
}
unsigned long Factorial(unsigned int number)
{ 
	unsigned long i, result = 1;
    for (i=2; i<=number; i++)
	result *= i;
    return result;
}
40.编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。
#include 
#include 
int IsPrimeNumber(int number)
{ 
	int i;
	if(number <= 1)
	return 0;
	for(i=2; i<sqrt(number); i++)
	{ 
		if ((number % i) == 0)
		return 0; 
	}
	return 1;
}
int main()
{ 
	int n;
	printf("Please input n:");
	scanf("%d",&n);
	if(IsPrimeNumber(n))
		printf("\n%d is a Prime Number",n);
	else  
		printf("\n%d is not a Prime Number",n);
}

40道编程题代码链接:https://download.csdn.net/download/weixin_44071904/85444319

你可能感兴趣的:(C语言,c语言,算法,开发语言)