Lithium–sulfur batteries are a promising energy-storage technology due to their relatively low cost and high theoretical energy density. However, one of their major technical problems is the shuttling of soluble polysulfides between electrodes, resulting in rapid capacity fading. Here, we present a metal–organic framework (MOF)-based battery separator to mitigate the shuttling problem. We show that the MOF-based separator acts as an ionic sieve in lithium–sulfur batteries, which selectively sieves Li+ ions while e ciently suppressing undesired polysulfides migrating to the anode side. When a sulfur-containing mesoporous carbon material (approximately 70 wt% sulfur content) is used as a cathode composite without elaborate synthesis or surface modification, a lithium–sulfur battery with a MOF-based separator exhibits a low capacity decay rate (0.019% per cycle over 1,500 cycles). Moreover, there is almost no capacity fading after the initial 100 cycles. Our approach demonstrates the potential for MOF-based materials as separators for energy-storage applications.
上傳時(shí)間: 2017-11-23
上傳用戶(hù):653357637
#include <stdio.h> #include <stdlib.h> ///鏈?zhǔn)綏?nbsp; typedef struct node { int data; struct node *next; }Node,*Linklist; Linklist Createlist() { Linklist p; Linklist h; int data1; scanf("%d",&data1); if(data1 != 0) { h = (Node *)malloc(sizeof(Node)); h->data = data1; h->next = NULL; } else if(data1 == 0) return NULL; scanf("%d",&data1); while(data1 != 0) { p = (Node *)malloc(sizeof(Node)); p -> data = data1; p -> next = h; h = p; scanf("%d",&data1); } return h; } void Outputlist(Node *head) { Linklist p; p = head; while(p != NULL ) { printf("%d ",p->data); p = p->next; } printf("\n"); } void Freelist(Node *head) { Node *p; Node *q = NULL; p = head; while(p != NULL) { q = p; p = p->next; free(q); } } int main() { Node *head; head = Createlist(); Outputlist(head); Freelist(head); return 0; } 2.順序棧 [cpp] view plain copy #include <iostream> #include <stdio.h> #include <stdlib.h> ///順序棧 #define MaxSize 100 using namespace std; typedef
標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)
上傳時(shí)間: 2018-05-09
上傳用戶(hù):123456..
function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta) %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta) %該函數(shù)用有限差分法求解有兩種介質(zhì)的正方形區(qū)域的二維拉普拉斯方程的數(shù)值解 %函數(shù)返回迭代因子、迭代次數(shù)以及迭代完成后所求區(qū)域內(nèi)網(wǎng)格節(jié)點(diǎn)處的值 %a為正方形求解區(qū)域的邊長(zhǎng) %r1,r2分別表示兩種介質(zhì)的電導(dǎo)率 %up,under分別為上下邊界值 %num表示將區(qū)域每邊的網(wǎng)格剖分個(gè)數(shù) %deta為迭代過(guò)程中所允許的相對(duì)誤差限 n=num+1; %每邊節(jié)點(diǎn)數(shù) U(n,n)=0; %節(jié)點(diǎn)處數(shù)值矩陣 N=0; %迭代次數(shù)初值 alpha=2/(1+sin(pi/num));%超松弛迭代因子 k=r1/r2; %兩介質(zhì)電導(dǎo)率之比 U(1,1:n)=up; %求解區(qū)域上邊界第一類(lèi)邊界條件 U(n,1:n)=under; %求解區(qū)域下邊界第一類(lèi)邊界條件 U(2:num,1)=0;U(2:num,n)=0; for i=2:num U(i,2:num)=up-(up-under)/num*(i-1);%采用線(xiàn)性賦值對(duì)上下邊界之間的節(jié)點(diǎn)賦迭代初值 end G=1; while G>0 %迭代條件:不滿(mǎn)足相對(duì)誤差限要求的節(jié)點(diǎn)數(shù)目G不為零 Un=U; %完成第n次迭代后所有節(jié)點(diǎn)處的值 G=0; %每完成一次迭代將不滿(mǎn)足相對(duì)誤差限要求的節(jié)點(diǎn)數(shù)目歸零 for j=1:n for i=2:num U1=U(i,j); %第n次迭代時(shí)網(wǎng)格節(jié)點(diǎn)處的值 if j==1 %第n+1次迭代左邊界第二類(lèi)邊界條件 U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j)); end if (j>1)&&(j U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j)); U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的網(wǎng)格節(jié)點(diǎn)處的值 end if i==n+1-j %第n+1次迭代兩介質(zhì)分界面(與網(wǎng)格對(duì)角線(xiàn)重合)第二類(lèi)邊界條件 U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1))); end if j==n %第n+1次迭代右邊界第二類(lèi)邊界條件 U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j)); end end end N=N+1 %顯示迭代次數(shù) Un1=U; %完成第n+1次迭代后所有節(jié)點(diǎn)處的值 err=abs((Un1-Un)./Un1);%第n+1次迭代與第n次迭代所有節(jié)點(diǎn)值的相對(duì)誤差 err(1,1:n)=0; %上邊界節(jié)點(diǎn)相對(duì)誤差置零 err(n,1:n)=0; %下邊界節(jié)點(diǎn)相對(duì)誤差置零 G=sum(sum(err>deta))%顯示每次迭代后不滿(mǎn)足相對(duì)誤差限要求的節(jié)點(diǎn)數(shù)目G end
標(biāo)簽: 有限差分
上傳時(shí)間: 2018-07-13
上傳用戶(hù):Kemin
Reconstruction- and example-based super-resolution (SR) methods are promising for restoring a high-resolution (HR) image from low-resolution (LR) image(s). Under large magnification, reconstruction-based methods usually fail to hallucinate visual details while example-based methods sometimes introduce unexpected details. Given a generic LR image, to reconstruct a photo-realistic SR image and to suppress artifacts in the reconstructed SR image, we introduce a multi-scale dictionary to a novel SR method that simultaneously integrates local and non-local priors. The local prior suppresses artifacts by using steering kernel regression to predict the target pixel from a small local area. The non-local prior enriches visual details by taking a weighted average of a large neighborhood as an estimate of the target pixel. Essentially, these two priors are complementary to each other. Experimental results demonstrate that the proposed method can produce high quality SR recovery both quantitatively and perceptually.
標(biāo)簽: Super-resolution Multi-scale Dictionary Single Image for
上傳時(shí)間: 2019-03-28
上傳用戶(hù):fullout
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢(xún)學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢(xún)并輸出 void search_student1(void);//查詢(xún)總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績(jī) { printf("數(shù)學(xué)新成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)新成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)新成績(jī):"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學(xué)生資料 { printf("學(xué)號(hào):%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學(xué)生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//刪除總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否刪除此條記錄?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("記錄已刪除!\n"); } } void delete_student2(int a,int b)//刪除學(xué)生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢(xún)總函數(shù) { printf("1、按學(xué)號(hào)查詢(xún)\n2、按平均分最高查詢(xún)\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學(xué)成績(jī)排序\n2、按英語(yǔ)成績(jī)排序\n3、按計(jì)算機(jī)成績(jī)排序\n4、按平均成績(jī)排序\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//顯示全部學(xué)生資料 { printf("本班所有學(xué)生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學(xué)生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//顯示表頭 { printf(" 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學(xué)號(hào)是否重復(fù) { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學(xué)號(hào)代表的學(xué)生已錄入\n1、覆蓋原信息\n2、重新輸入\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請(qǐng)重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來(lái)到學(xué)生信息管理系統(tǒng)======\n"); printf(" 1、輸入學(xué)生資料\n"); printf(" 2、刪除學(xué)生資料\n"); printf(" 3、查詢(xún)學(xué)生資料\n"); printf(" 4、修改學(xué)生資料\n"); printf(" 5、顯示學(xué)生資料\n"); printf(" 6、統(tǒng)計(jì)學(xué)生成績(jī)\n"); printf(" 7、排序?qū)W生成績(jī)\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請(qǐng)選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請(qǐng)輸入學(xué)生信息(在最后一個(gè)學(xué)生信息錄入完成后以“/”結(jié)束錄入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//輸入學(xué)生信息 { printf("學(xué)號(hào):"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績(jī) { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查詢(xún)并輸出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照數(shù)學(xué)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英語(yǔ)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照計(jì)算機(jī)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照學(xué)號(hào)查找學(xué)生并輸出 { int num; int c; printf("請(qǐng)輸入要查詢(xún)的學(xué)號(hào):"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學(xué)生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜單選擇 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 運(yùn)行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng).rar (請(qǐng)將此地址復(fù)制到瀏覽器地址欄中訪(fǎng)問(wèn)下載頁(yè)面)
標(biāo)簽: 成績(jī)查詢(xún)系統(tǒng)
上傳時(shí)間: 2019-06-08
上傳用戶(hù):啊的撒旦
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢(xún)學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢(xún)并輸出 void search_student1(void);//查詢(xún)總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績(jī) { printf("數(shù)學(xué)新成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)新成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)新成績(jī):"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學(xué)生資料 { printf("學(xué)號(hào):%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學(xué)生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//刪除總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否刪除此條記錄?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("記錄已刪除!\n"); } } void delete_student2(int a,int b)//刪除學(xué)生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢(xún)總函數(shù) { printf("1、按學(xué)號(hào)查詢(xún)\n2、按平均分最高查詢(xún)\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學(xué)成績(jī)排序\n2、按英語(yǔ)成績(jī)排序\n3、按計(jì)算機(jī)成績(jī)排序\n4、按平均成績(jī)排序\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//顯示全部學(xué)生資料 { printf("本班所有學(xué)生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學(xué)生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//顯示表頭 { printf(" 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學(xué)號(hào)是否重復(fù) { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學(xué)號(hào)代表的學(xué)生已錄入\n1、覆蓋原信息\n2、重新輸入\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請(qǐng)重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來(lái)到學(xué)生信息管理系統(tǒng)======\n"); printf(" 1、輸入學(xué)生資料\n"); printf(" 2、刪除學(xué)生資料\n"); printf(" 3、查詢(xún)學(xué)生資料\n"); printf(" 4、修改學(xué)生資料\n"); printf(" 5、顯示學(xué)生資料\n"); printf(" 6、統(tǒng)計(jì)學(xué)生成績(jī)\n"); printf(" 7、排序?qū)W生成績(jī)\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請(qǐng)選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請(qǐng)輸入學(xué)生信息(在最后一個(gè)學(xué)生信息錄入完成后以“/”結(jié)束錄入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//輸入學(xué)生信息 { printf("學(xué)號(hào):"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績(jī) { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查詢(xún)并輸出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照數(shù)學(xué)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英語(yǔ)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照計(jì)算機(jī)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照學(xué)號(hào)查找學(xué)生并輸出 { int num; int c; printf("請(qǐng)輸入要查詢(xún)的學(xué)號(hào):"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學(xué)生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜單選擇 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回車(chē)鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 運(yùn)行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng).rar (請(qǐng)將此地址復(fù)制到瀏覽器地址欄中訪(fǎng)問(wèn)下載頁(yè)面) #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢(xún)學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢(xún)并輸出 void search_student1(void);//查詢(xún)總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!
標(biāo)簽: c語(yǔ)言
上傳時(shí)間: 2019-06-09
上傳用戶(hù):啊的撒旦
書(shū)中以4個(gè)面向來(lái)表現(xiàn)C++的本質(zhì):procedural(程序性的)、generic(泛型的)、object-based(個(gè)別對(duì)象的)、object-oriented(面向?qū)ο蟮模珪?shū)圍繞著一系列逐漸繁復(fù)的程序問(wèn)題,以及用以解決這些問(wèn)題的語(yǔ)言特性。循此方式,讀者不只學(xué)到C++的函數(shù)和結(jié)構(gòu),也會(huì)學(xué)習(xí)到它們的設(shè)計(jì)目的和基本原理
標(biāo)簽: Essential+C++
上傳時(shí)間: 2019-06-10
上傳用戶(hù):wigen
一 產(chǎn)品描述 提供6個(gè)觸摸感應(yīng)按鍵,一對(duì)一直接輸出,對(duì)於防水和抗干擾方面有很優(yōu)異的表現(xiàn)! 二 產(chǎn)品特色 1 工作電壓範(fàn)圍:3.1V – 5.5V 2 工作電流:3mA@5V 3 6個(gè)觸摸感應(yīng)按鍵 4 提供一對(duì)一的直接輸出,未按鍵為高電平輸出,按鍵為低電平輸出 5 可以經(jīng)由調(diào)整 CAP 腳的外接電容,調(diào)整靈敏度,電容越大靈敏度越高 6 具有防水及水漫成片水珠覆蓋在觸摸按鍵面板,按鍵仍可有效判別 7 內(nèi)建 LDO 增加電源的抗干擾能力 三 產(chǎn)品應(yīng)用 各種大小家電,娛樂(lè)產(chǎn)品 四 功能描述 1 VK3606DM 於手指按壓觸摸盤(pán),在 60ms 內(nèi)輸出對(duì)應(yīng)按鍵的狀態(tài)。 2 單鍵優(yōu)先判斷輸出方式處理, 如果 K1 已經(jīng)承認(rèn)了, 需要等 K1 放開(kāi)後, 其他按 鍵才能再被承認(rèn),同時(shí)間只有一個(gè)按鍵狀態(tài)會(huì)被輸出。 3 具有防呆措施, 若是按鍵有效輸出連續(xù)超過(guò) 10 秒, 就會(huì)做復(fù)位。 4 環(huán)境調(diào)適功能,可隨環(huán)境的溫濕度變化調(diào)整參考值,確保按鍵判斷工作正常。 5 可分辨水與手指的差異,對(duì)水漫與水珠覆蓋按鍵觸摸盤(pán),仍可正確判斷按鍵動(dòng)作。但水不可於按鍵觸摸盤(pán)上形成“水柱”,若如此則如同手按鍵一般,會(huì)有按鍵承認(rèn)輸出。 6 內(nèi)建 LDO 及抗電源雜訊的處理程序,對(duì)電源漣波的干擾有很好的耐受能力。 7 不使用的按鍵請(qǐng)接地,避免太過(guò)靈敏而產(chǎn)生誤動(dòng)
標(biāo)簽: 3606 KEYS SOP VK 16 DM 抗干擾 防水
上傳時(shí)間: 2019-08-08
上傳用戶(hù):szqxw1688
一.產(chǎn)品描述 提供6個(gè)觸摸感應(yīng)按鍵,一對(duì)一直接輸出,輸出為開(kāi)漏(opendrain)型態(tài),適合作AD鍵。對(duì)於防水和抗干擾方面有很優(yōu)異的表現(xiàn)! 二。產(chǎn)品特色 1.工作電壓範(fàn)圍:3.1V – 5.5V 2.工作電流: 3mA@5V 3.6 個(gè)觸摸感應(yīng)按鍵 4.提供一對(duì)一的直接輸出,未按鍵為開(kāi)漏(open drain)型態(tài)輸出,按鍵時(shí)為低電平。 5.可以經(jīng)由調(diào)整 CAP 腳的外接電容,調(diào)整靈敏度,電容越大靈敏度越高 6.具有防水及水漫成片水珠覆蓋在觸摸按鍵面板,按鍵仍可有效判別 7.內(nèi)建 LDO 增加電源的抗干擾能力 三。 產(chǎn)品應(yīng)用 各種大小家電,娛樂(lè)產(chǎn)品 四.功能描述 1.VK3606OM 於手指按壓觸摸盤(pán),在 60ms 內(nèi)輸出對(duì)應(yīng)按鍵的狀態(tài)。 2.單鍵優(yōu)先判斷輸出方式處理, 如果 K1 已經(jīng)承認(rèn)了, 需要等K1 放開(kāi)後, 其他按鍵才能再被承認(rèn),同時(shí)間只有一個(gè)按鍵狀態(tài)會(huì)被輸出。 3.具有防呆措施, 若是按鍵有效輸出連續(xù)超過(guò) 10 秒, 就會(huì)做復(fù)位。 4.環(huán)境調(diào)適功能,可隨環(huán)境的溫濕度變化調(diào)整參考值,確保按鍵判斷工作正常。 5.可分辨水與手指的差異,對(duì)水漫與水珠覆蓋按鍵觸摸盤(pán),仍可正確判斷按鍵動(dòng)作。但水不可於按鍵觸摸盤(pán)上形成“水柱”,若如此則如同手按鍵一般,會(huì)有按鍵承認(rèn)輸出。 6.內(nèi)建 LDO 及抗電源雜訊的處理程序,對(duì)電源漣波的干擾有很好的耐受能力。 7.K0~K5 中不使用的按鍵請(qǐng)接地,避免太過(guò)靈敏而產(chǎn)生誤動(dòng)。 8.D0~D5 中不使用的輸出請(qǐng)接地,避免浮接會(huì)有漏電流的情 況。
標(biāo)簽: KEYS 3606 SOP 16 VK OM 抗干擾 防水
上傳時(shí)間: 2019-08-08
上傳用戶(hù):szqxw1688
一.產(chǎn)品描述 提供10個(gè)觸摸感應(yīng)按鍵及兩線(xiàn)式串列界面,並有中斷輸出INT腳與MCU聯(lián)繫。特性上對(duì)於防水和抗干擾方面有很優(yōu)異的表現(xiàn)! 二。產(chǎn)品特色 1. 工作電壓範(fàn)圍:3.1V – 5.5V 2. 工作電流:3mA@5V 3. 10 個(gè)觸摸感應(yīng)按鍵 4. 提供串列界面 SCK、SDA、INT 作為與 MCU 溝通方式。 5. 可以經(jīng)由調(diào)整 CAP 腳的外接電容,調(diào)整靈敏度,電容越大靈敏度越高 6.具有防水及水漫成片水珠覆蓋在觸摸按鍵面板,按鍵仍可有效判別 7. 內(nèi)建 LDO 增加電源的抗干擾能力 三。產(chǎn)品應(yīng)用 各種大小家電,娛樂(lè)產(chǎn)品 四.功能描述 1.VK3610IM 於手指按壓觸摸盤(pán),在 60ms 內(nèi)輸出對(duì)應(yīng)按鍵的狀態(tài)。 2.單鍵優(yōu)先判斷輸出方式處理, 如果 K1 已經(jīng)承認(rèn)了, 需要等 K1 放開(kāi)後, 其他按鍵才能再被承認(rèn),同時(shí)間只有一個(gè)按鍵狀態(tài)會(huì)被輸出。 3.具有防呆措施, 若是按鍵有效輸出連續(xù)超過(guò) 10 秒, 就會(huì)做復(fù)位。 4.環(huán)境調(diào)適功能,可隨環(huán)境的溫濕度變化調(diào)整參考值,確保按鍵判斷工作正常。 5.可分辨水與手指的差異,對(duì)水漫與水珠覆蓋按鍵觸摸盤(pán),仍可正確判斷按鍵動(dòng)作。但水不可於按鍵觸摸盤(pán)上形成“水柱”,若如此則如同手按鍵一般,會(huì)有按鍵承認(rèn)輸出。 6.內(nèi)建 LDO 及抗電源雜訊的處理程序,對(duì)電源漣波的干擾有很好的耐受能力。 7.不使用的按鍵請(qǐng)接地,避免太過(guò)靈敏而產(chǎn)生誤動(dòng)。
標(biāo)簽: KEYS VK3610 SOP 10 16 IM VK 抗干擾
上傳時(shí)間: 2019-08-08
上傳用戶(hù):szqxw1688
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1