C语言练习2

个人水平有限,代码仅供参考,如有错误请多多谅解!!!!!

个人水平有限,代码仅供参考,如有错误请多多谅解!!!!!

个人水平有限,代码仅供参考,如有错误请多多谅解!!!!!

1.求出斐波那契数列的前30个,并添加近数组循环输出,每行五个。

# include <stdio.h>
# define  NUM  30
int  main(){
	int a[NUM],i;
	


	for (i=0;i<NUM;i++){
		if (i==1||i==0)a[i]=1;
		else{
			a[i]=a[i-1]+a[i-2];
		}
	}
	for (i=0;i<NUM;i++){
	
		if (i%5==0&&i!=0)printf("\n");
			printf("%10d",a[i]);
	}
}

2.最大公约数

#include <stdio.h>

// 更相减损法
void test1(){
	int a,b;
	scanf("%d,%d",&a,&b);
	while(a!=b){
		if(a>b)a-=b;
		if(b>a)b-=a;
	}
	printf("%d",a);
}

//辗转相除法
void test2(){
	int a,b,t;
	scanf("%d,%d",&a,&b);
	while(b!=0){
		t=a%b;
		a=b;
		b=t;
		
	}
	printf("%d",a);
}


main(){
	test2();
	
}

3.从键盘输入56个学生的成绩,然后计算成绩的平均值

# include <stdio.h>
# define NUM 56
main(){
	float stu[NUM];
	float sum,ave;
	sum=0;
	ave=0;
	
	for (int i=0;i<NUM;i++){
		scanf("%f",&stu[i]);
	    sum+=stu[i];	
		
	}
	ave=sum/NUM;
	printf("%0.2f",ave );
}

4. 

# include <stdio.h>

func (int a[],int k){
	int i;
	int s;//s 向后移动的次数
	
	s=9-k;// k 6 s 3
	int x[10];
    //新的数组
	for (i=0;i<s;i++){
		x[i]=a[i+k+1];
		  
	//	printf("%d",x[i]);	
		}			

    // a[0]-a[k] 元素右移 
	for (i=9;i>=0;i--){
			a[i+s]=a[i];			  				
			}
	//将除了0-k 元素 赋值给前边a[0]-a[k]右移后空出来的位置		
	for (i=0;i<s;i++){
		a[i]=x[i];
	}
	//输出元素
	for (i=0;i<10;i++){
		printf("%d",a[i]);	
				}
	return 0;
}

main (){
int a[]={1,2,3,4,5,6,7,8,9,10};	
int p;

scanf("%d",&p);
func(a,p);



}

 5.、

定义函intget_count(charname)计算字符name的长度,并返回结果在mai函数中定义一个字符数组,输入若干个字符,调用函数ger coent 计算字符的长度,并输出其计算结果

# include <stdio.h>
int get_count(char *name){
	int t;
	t=0;
//	p=name;

	while(*name!=0){
		name++;
		t++;
	}
	
	
	return t;
}
main(){
 char name[50];
 scanf("%s",name);
 printf("%d",get_count(name));
 ;
}

6.

本题要求编写程序,将输入的个整数存入数组。中,然后计算这些数的平均值,再输出所有大于平均值的数。 

# include <stdio.h>
#define NUM  20
main(){
	int stu[NUM];
	int sum;
	
	float ave;
	sum=0;
	ave=0;
	int t;
	printf("输入存在元组中数据的个数:");
	scanf("%d",&t);
		
	for (int i=0;i<t;i++){
		scanf("%d",&stu[i]);
	    sum+=stu[i];	
		
	}
	ave=sum/t;
		printf("平均数为:%0.2f\n",ave );
	for (int i=0;i<t;i++){
		if(stu[i]>ave){
			printf("%d\t",stu[i]);
		}
	}

}

 8.

某手机店每天早上进货,进货时需要记录手机的数量,以及每个手机的名称、所包含手机的数量、每个手机的单价,手机结构体定义如下
struct phone{
char namel15];
int count;
float price;}
 

#include <stdio.h>

struct phone
{
char name[15];
int count;
float price;
};


 main(){
 	int t,i;
 	float sum;
	struct  phone  p[5];
	printf("输入需要记录的条数:");
	scanf("%d\n",&t);
	for ( i=0;i<t;i++){
	//	gets(p[i].name);
     	scanf("%s",p[i].name);
		scanf("%d %f",&p[i].count,&p[i].price);
		
	}
	//计算总和
	sum=0;
	for (i=0;i<t;i++){
		sum+=p[i].price*p[i].count;
		}
		
	for(i=0;i<t;i++){
		printf("%s,%d,%f,\n",p[i].name,p[i].count,p[i].price);
	}	
	
	printf("%0.2f",sum);
	}

 8.

# include <stdio.h>
#define NUM  20
//获得通过的人数
getPass(int  score[] ,int t){
	int sum,i;
	int pass;
	float ave;
	sum=0;
	ave=0; 
	for (i=0;i<t;i++){
		sum+=score[i];
		
	}	
	pass=0;
	ave=sum/t;
	printf("平均数为:%0.2f\n",ave );
	for (int i=0;i<t;i++){
			if(score[i]>ave){
				pass++;
			//	printf("%d\t",score[i]);
			}
		}
	return  pass;
	
	
};

void Sort(int score[],int t){
   //冒泡排序
	for(int i=0;i<t-1;i++){
		for (int j=0;j<t-i-1;j++){
			if (score[j]>score[j+1]){
				int temp=score[j];
				score[j]=score[j+1];
				score[j+1]=temp;
				
			}
		}
	}
    for (int i=0;i<t;i++){
		printf("%d ",score[i]);
	} 


}

main(){
	int stu[NUM];

	int t;
	printf("输入存在元组中数据的个数:");
	scanf("%d",&t);
	for (int i=0;i<t;i++){
				scanf("%d",&stu[i]);		   	
				
			}
	printf("及格人数为:%d\n",getPass(stu,t));
	Sort(stu,t);
	
}

9.

计算学生成绩:有一个结构体类型,包含三个成员:学生姓名、学生学号和5门课程成绩,其结构体类型定义如下
struct student{
charname[10];//姓名
charnum[10];/学号
float score[5];//5科成绩

编写程序由键盘输入10个学生的姓名、学号和5科成绩,计算并输出没位学生的姓名、学生学号和平均成绩,平均成绩保留两位小数。

#include <stdio.h>

struct student{
char name[10];//姓名
char num[10];//学号

float score[5];//5科成绩
float ave;
};





 main(){
 	int t,i;
 	float sum;
	struct  student  stu[10];
	printf("输入需要记录的条数:");
	scanf("%d\n",&t);
	for ( i=0;i<t;i++){
		

//     	scanf("%s",stu[i].name);
//     	scanf("%s",stu[i].num);
		scanf("%s%s%f%f%f%f%f",stu[i].name,stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3],&stu[i].score[4]);
				
	}
	//计算平均	
	for (i=0;i<5;i++){
    stu[i].ave=0;
    sum=0;
    
	for (int j=0;j<5;j++){
		sum+=stu[i].score[j];
		stu[i].ave=sum/5;
		
		}
	}	
for(i=0;i<t;i++){
		printf("%s,%s,%0.2f\n",stu[i].name,stu[i].num,stu[i].ave);
	
		
	}	
 }
 

 10.

# include <stdio.h>
int MAX,J;

 float fun(float array[],int n){
	MAX=0;
	J=0;
	float sum,ave;
	sum=0;
	ave=0;
	//找最大值
	for (int i=0;i<n;i++){
		if (array[i]>MAX){
			MAX=array[i];
			
			
		}
		sum+=array[i];
	
	}
	ave=sum /n;
	//最大值个数
	for (int i=0;i<n;i++){
			if (array[i]==MAX){
			J++;
			
			}
		}
	return ave;
	
}
main(){
	float arr[10],a;
	int  t;
	printf("输入需要记录的条数:");
	scanf("%d\n",&t);
	for (int i=0;i<t;i++){
	  	scanf("%f",&arr[i]); 	
	}
	a=fun(arr,t);//先执行函数 全局变量才会有值
	printf("平均值:%0.2f,最大分数:%d,人数:%d",a,MAX,J);
    //fun(arr,t);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值