查找书籍
给定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语言中之前觉得还不是很熟悉的地方,代码还是要多练习才会更熟悉。