学习c语言的第二十七天

查找书籍

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价

输入:书的数量n,书的名称name和定价price。

输出:其中定价最高书的名称和定价。

优化目标:可能没有优化目标。

#include<stdio.h>
#include<stdlib.h>
typedef struct{
	float price;
	char name[];
}stu;

int main(){ 
    int n;
    printf("多少书"); 
    scanf("%d",&n);
    stu s[n]; 
    int i;
    char c;
    for(i=0;i<n;i++){
    	scanf("%c",&c);
    	printf("名字"); 
    	gets(s[i].name);
    	printf("价钱"); 
    	scanf("%f",&s[i].price);
	}
	int max=0;
	for(i=0;i<n;i++){
		if(s[i].price>s[max].price){
			max=i;
		}
	}
    printf("%.2lf",s[max].price);
    printf("%s",s[max].name) ;
} 

方阵循环右移 

本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入:n阶方阵,右移m个位置以及n×n方阵中的每个元素。

输出:每个元素循环向右移m个位置后的结果。

优化目标:可能没有优化目标。

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

int main(){ 
    int n;
    printf("n*n矩阵");
    scanf("%d",&n);
    int m;
    printf("右移m位");
    scanf("%d",&m);
	int a[n][n];
	int i,j,num;
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
		    scanf("%d",&num);
		    a[i][j]=num;
		}
	}
	if(m>n){
		m=m%n;
	}
	if(m%n==0){
		for(i=0;i<n;i++){
		    for(j=0;j<n;j++){
		        printf("%d ",a[i][j]);
		    }
		    printf("\n");
	    }
	    return 0;
	}
	int b[n][n];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			b[i][(j+m)%n]=a[i][j];
		}
	}

	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
		    printf("%d ",b[i][j]);
		}
		    printf("\n");
   }
	
	
} 

递归求阶乘和 

本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。

输入:正整数n。

输出:1!+2!+...+n! 的值。

优化目标:可能没有优化目标。

#include<stdio.h>

int jie(int n){
	int sum;
	if(n==1){
		return 1;
	}else{
		sum=n*jie(n-1);
	}
	return sum;
} 
int he(int n){
	int sum;
	if(n==1){
		return 1;
	}else{
		sum=jie(n)+he(n-1);
	}
	return sum;
}
int main(){
	int x=he(3);
	printf("%d",x);
}

将输入的链表分为值全为奇数的链表和值全为偶数的链表。

输入:链表各个结点的值num。

输出:全为奇数的链表1的值,全为奇数的链表2的值。

优化目标:可能没有优化目标。

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode *list;
struct LNode{
	int data;
	list next;	
}; 

void print(list l){//输出操作 
	if(l==NULL){
		printf("NULL");
	}
	while(l!=NULL){
		printf("%d ",l->data);
		l=l->next;
	}
}

list sort(list l){
	if(l==NULL){
		return NULL;
	}
	list l1=l;
	int x=1;
	int i,j;
	while(l1->next!=NULL){
		l1=l1->next;
		x++;
	}
	for(i=0;i<x-1;i++){
     	list q=l;
	    list p=l->next;
		for(j=x-i-1;j>0;j--){
			if(q->data>p->data){
				int tmp=q->data;
				q->data=p->data;
				p->data=tmp;
			}
			q=q->next;
			p=p->next;
		}
	}
	return l;
}
int ji(list l){
	list l1;
	l1->next=NULL;
	list l2=l1;
	while(l!=NULL){
	    if(l->data%2!=0){
	    	list q=(list)malloc(sizeof(struct LNode));
	    	q->next=NULL;
		    q->data=l->data;
		    l1->next=q;
		    l1=q;
		}
		l=l->next;
	}
	return l2;
}

int ou(list l){
	list l1;
	l1->next=NULL;
	list l2=l1;
	while(l!=NULL){
	    if(l->data%2==0){
	    	list q=(list)malloc(sizeof(struct LNode));
	    	q->next=NULL;
		    q->data=l->data;
		    l1->next=q;
		    l1=q;
		}
		l=l->next;
	}
	return l2;
}
int main(){
    int num;
    list l;
    list l1=l;
    l->next=NULL;
	scanf("%d",&num);
	while(num!=-1){
		list q=(list)malloc(sizeof(struct LNode));
		q->next=NULL;
		q->data=num;
		l->next=q;
		l=q;
		scanf("%d",&num);
	}
	
	list l2=l1;
	l1=l1->next;	
	print(l1);
	printf("\n");
	list l3=ji(l1);
	list la=l3->next;
	printf("奇数结点:");
	print(la);
	printf("\n");
	printf("偶数结点:");
	list l4=ou(l1);
	list lb=l4->next;
	print(lb); 
}

今天复习了c语言中之前觉得还不是很熟悉的地方,代码还是要多练习才会更熟悉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值