當前位置:首頁 » 編程軟體 » 編程pj

編程pj

發布時間: 2022-12-22 22:59:37

『壹』 C語言編程—學生成績查詢系統!緊急!!!

這個是我自己做的類式的,你可以按自己的要求改下·不難的和你的差不多,給分哦

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10
/*****定義結構體*****/
typedef struct students /*標記為students*/
{
char num[10]; /*學生學號*/
char name[10]; /*學生姓名*/
int age; /*年齡*/
char sex[10]; /*性別*/
float cyy; /*C語言成績*/
float computer; /*計算機成績*/
float english; /*英語成績*/
float pj; /*平均成績*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//導出
int Locate(STU students[],int n);//查詢
/*--------------顯示菜單--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 學生成績管理 \n");
printf("-----------------------------------應用菜單-------------------------------------\n");
printf(" 1 輸入學生成績\n\n");
printf(" 2 輸出學生成績\n\n");
printf(" 3 查詢學生成績\n\n");
printf(" 4 修改學生成績\n\n");
printf(" 5 查看成績排序\n\n");
printf(" 6 查看成績統計\n\n");
printf(" 7 保存數據\n\n");
printf(" 8 讀取數據\n\n");
printf(" 9 退出系統\n\n");
printf(" 請選擇你想進行的操作:");

k=getchar();

return k;

}
/*****定義輸出函數*****/

void printheader() /*格式化輸出表頭*/
{
printf("\n\n************************學生成績管理系統****************************\n\n\n");
printf("| 學號 | 姓名 | 年齡 | 性別 | C語言成績 |計算機成績 | 英語成績| 平均成績 | \n");
}
void printdata(STU pp) /*格式化輸出表中數據*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/*****添加學生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 請輸入學生信息 \n");
printf(" 退出請在學生號處輸入:0 \n");
printf("請輸入學生學號:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//當輸入的學號為0時結束輸入
{
printf("請輸入學生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("請輸入學生年齡:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("請輸入學生性別:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("請輸入C語言成績:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("請輸入計算機成績:\n ");
scanf("%f",&students[i].computer);
printf("****************\n\n\n");
printf("請輸入英語成績:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
printf("學生平均成績: %-8.0f\n",students[i].pj);
i++;
printf("****************\n\n\n");
printf("請輸入學生學號:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查詢學生信息函數*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出請輸入:0 \n");
printf("請選擇以什麼方式查詢:1).按學生學號查詢 2).按學生姓名查詢 \n");
scanf("%d",&k);
if(k==1)
{
printf("請輸入你要查詢的學生學號:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i].num,num)==0) /*若找到學號*/
{
printf(">>學生學號:%s\n*學生姓名:%s\n*學生年齡:%d\n*學生性別:%s\n>C語言成績:%-8.0f\n>計算機成績:%-8.0f\n>>英語成績:%-8.0f\n>>平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("沒有所找學生信息\n");
getchar();
}
else if(k==2)
{
printf("請輸入你要查詢的學生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("學生學號:%s\n學生姓名:%s\n學生年齡:%d\n學生性別:%s\n學生C語言成績:%-8.0f\n計算機成績:%-8.0f\n英語成績:%-8.0f\n平均成績:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("沒有所找學生信息\n");
}
return m;/*返回一個根m便於修改學生信息*/
getchar();
}
/*****顯示函數*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示沒有學生信息記錄*/
{
printf("\n沒有學生記錄!\n");
}
printf("\n\n");
printheader(); /*輸出表格頭部*/
i=0;
while(i<n) /*逐條輸出數組中存儲的學生信息*/
{
printdata(students[i]);
i++;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出請輸入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改學生信息");
input(students,n);
i=Locate(students,n); /*查詢到該數組元素,並返回下標值*/
if(i!=-1) /*若i!=-1,表明已經找到該數組元素*/
{
printf("請輸入新的學生信息: \n");
printf(" 學號: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年齡: ");
scanf("%d",&students[i].age);
printf(" 性別: ");
scanf("%s",students[i].sex);
printf(" C語言: ");
scanf("%f",&students[i].cyy);
printf(" 英語: ");
scanf("%f",&students[i].english);
printf(" 計算機: ");
scanf("%f",&students[i].computer);
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
printf("平均成績: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");

}
else
printf("not found!\n");
getchar();
}
/*****學生成績排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出請輸入:0 \n");
printf("成績排序方式選擇: 1.按C語言 2.按英語 3.按平均 \n ");
scanf("%d",&k);

if(k==1) /*用選擇法對C語言排序*/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{

if(students[i].english<students[j+1].english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}

}

}
else if(k==2)/*英語用冒泡法*/
{
for(a=0; a<n-1; a++)
{
c=a;
for(b=a+1; b<n; b++)
if(students[b].cyy>students[c].cyy)
c=b;
if (c!=a)
{
temp=students[a];
students[a]=students[c];
students[c]=temp;
}
}
}
if(k==3) /*平均成績用插入法*/
{
for(d=1;d<n;d++)
{
p=students[d].pj;
for(e=0;e<d;e++)
if(students[e].pj<p)
break;
if(e==d)
continue;
for(f=d;f>e;f--)
students[f]=students[f-1];
students[e]=temp;
}
}
input(students,n); /*顯示排序後的所有記錄*/
save(students ,n);
printf("\n 排序完成!\n");
}

/*****統計學生分數在各等級的人數子程序*****/
void Tongji(STU students[],int n)
{
int count6085=0,count85=0,count60=0;
int i=0;
system("cls");
printf(" \n退出請輸入:0 \n");
input(students,n);
i=0;
while(i<n)
{
if(students[i].pj>85) {count85++;i=i+1;continue;} /*平均成績=>85*/
if(students[i].pj>=60&&students[i].pj<=85) {count6085++;i=i+1;continue;} /*60<平均成績<85*/
if(students[i].pj<60) {count60++;i=i+1;continue;} /*平均成績<60*/
}
printf("\n************統計結果************\n\n");
printf("平均成績高於85分的人數:%d \n",count85);
printf(" \n");
printf("平均成績在65分和80分之間的人數:%d \n",count6085);
printf(" \n");
printf("平均成績低於60分的人數:%d \n",count60);
printf(" \n");
printf("\n\n**********統計結束**********");
getchar();
}
/*****導出或保存數據*****/
void save(STU students[],int n)
{
FILE* fp;
int i=0;
fp=fopen("students","wb+");/*以讀寫方式打開創建一個二進制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n*******打開文件錯誤!*******\n");
return ;
}
for(i=0;i<n;i++)
{
if(fwrite(&students[i],sizeof(STU),1,fp)==1)/*每次寫一條記錄或一個結構數組元素至文件*/
{
continue;
}
else
{
break;
}
}
if(i>0)
{
getchar();
printf("\n\n*共導出%d個學生信息*\n",i);
getchar();
}
else
{
system("cls");
printf("**沒有信息導出*\n");
getchar();
}
fclose(fp); /*關閉此文件*/
}
/*****導入數據*****/
void Read(STU students[],int * n)
{
FILE* fp;
int i=0;
fp=fopen("students","rb");/*以只讀方式打開一個已有的二進制文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n********打開文件錯誤!********\n");
exit(0);

}
for(i=0;i<N;i++)
{
if(fread(&students[i],sizeof(STU),1,fp)==1)/*每次讀一條記錄或一個結構數組元素至文件*/
continue;
else
break;
}
*n=i;
if(i>0)
{
printf("\n\n************共導入:%d 個學生信息 ************\n",i);
getchar();

}
else
{ system("cls");
printf("************沒有信息導入!************\n");
getchar();

}
getchar();
fclose(fp); /*關閉此文件*/
}

/*****主函數*****/
void main()
{
STU students[N];
int n;
char s1[3],s2[3]={"1"};
int i,k;
printf("\n\n");
printf("******************************************************\n");
printf("^ < 歡迎使用本軟體> ^\n\n");
printf("^ <版本 : oooo> ^\n\n\n");
printf("^ <姓名>:盧景光 <班級>: 09623 <學號>:34 ^\n");
printf("^ ^\n");
printf("******************************************************\n");
printf("\n\n");
for(i=0;i<3;i++)
{
printf("\n請輸入密碼:");
gets(s1);

if(strcmp(s1,s2)==0)
break;
else
printf("\n>密碼錯誤,請重新輸入");
}
if(i>2)
{
printf("\n您已連續3次輸錯,系統將退出!\n");
exit(0);
}
else
{
while(1)
{
k=displaymenu();
switch(k)
{
case '1' : add(students,&n); break;
case '2' : Read(students,&n);input(students,n) ;break;
case '3' : Read(students,&n);Locate(students,n);break;
case '4' : Read(students,&n);Modify(students,n);;break;
case '5' : Read(students,&n);sort(students,n);break;
case '6' : Read(students,&n);Tongji(students,n); break;
case '7' : save(students,n) ;break;
case '8' : Read(students,&n);break;
case '9' : system("cls");
printf("\n **********謝謝您的使用**********\n");exit(0);break;
default : printf("\n\n輸入錯誤,輸入必須是0~9之間的一個數字!請重新輸入\n");getchar();getchar();
}
}
}
}

『貳』 如何編寫程序

43、請編寫函數countvalue(),它的功能是:求n以內(不包括n)同時能被3和7整數的
所有自然數之和的平方根s,並作為函數值返回,最後結果s輸出到文件out.dat中。
例如若n為1000時,函數值應為:s=153.909064。
部分源程序已給出。
請勿改動主函數main()和輸入輸出數據函數progreadwrite()的內容。
#include
#include
#include
double countvalue(int n)
{
}
main()
{
clrscr();
printf("s=%f\n",countvalue(1000));
progreadwrite();
}
progreadwrite()
{
FILE *fp,*wf;
int i,n;
float s;
fp=fopen("in.dat","r");
if(fp==NULL)
{printf("Can't open the data file in.dat\007\n");
return;
}
wf=fopen("out.dat","w");
for(i=0;i<10;i++)
{fscanf(fp,"%d",&n);
s=countvalue(n);
fprintf(wf,"%f\n",s);
}
fclose(fp);
fclose(wf);
}
/* 註:由於能同時被3和7整除的自然數最小的是21,而它們之間的間隔應是21(由最小
公倍數可得)。因而在for()循環可定成如下形式。*/
double countvalue(int n)
{
int i;
float s=0.0;
for(i=21;i
s+=i;
s=sqrt(s);
return s;
}
44、請編製程序,從文件in.dat中讀取200個整數至數組xx中,不計數組xx絕對值最大的
數(若有重復值,則都不計),再求出絕對值最大數max及絕對值最大數的個數cnt和所
剩下200-cnt個數的算求平均值pj (保留2位小數)。
結果max,cnt1,min,cnt2,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt,xx[N],max;
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
}
/* 註:該題的編程方法與題42相似。*/
void main()
{
int cnt,xx[N],max;
float pj;
FILE *fw;
int i,max0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=abs(xx[0]);
pj=0;
cnt=0;
for(i=1;i<N;I++)
if(max0 else max=abs(xx[i]);
for(i=0;i<N;I++)
if(abs(xx[i])<MAX0&&ABS(XX[I])>max) max=abs(xx[i]);
for(i=0;i<N;I++)
if(abs(xx[i])==max) cnt++;
else pj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
}
45、已知在文件in.dat中存有若干個(個數<200)四位數字的正整數,函數readdat
()讀取這若干個正整數並存入數組xx中。請編制函數calvalue(),其功能要求:1、求出
這文件中共有多少個正整數totnum;2、求這些數右移1位後,產生的新數是奇數的數的
個數totcnt,以及滿足此條件的這些數(右移前的值)的算術平均值totpjz,最後調用
函數writedat()把所求的結果輸出到文件out.dat中。
部分源程序已給出。
請勿改動主函數main()、讀數據函數readdat()和輸出數據函數writedat()的內容。
#include
#include
#define MAXNUM 200
int xx[MAXNUM];
int totnum=0;
int totcnt=0;
double totpjz=0.0;
int readdat(void);
void writedat(void);
void calvalue(void)
{
}
totpjz/=totcnt;
}
void main()
{
int i;
clrscr();
for(i=0;i if(readdat())
{printf("Can't open the data file in.dat!\007\n");
return;
}
calvalue();
printf("totnum=%d\n",totnum);
printf("totcnt=%d\n",totcnt);
printf("totpjz=%.2lf\n",totpjz);
writedat();
}
int readdat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("in.dat","r"))==NULL) return 1;
while(!feof(fp))
fscanf(fp,"%d,",&xx[i++]);
fclose(fp);
return 0;
}
void writedat(void)
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%d\n%.2lf\n",totnum,totcnt,totpjz);
fclose(fp);
}
/* 註:該題與題41相似。*/
void calvalue(void)
{
int i,data;
for(i=0;i<MAXNUM;I++)
{if(!xx[i]) break;
if(xx[i]>0) totnum++;
data=xx[i]>>1;
if(data%2)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
46、請編製程序,從文件in.dat中讀取200個整數至數組xx中,求出奇數的個數cnt1和偶
數的個數cnt2以及數級xx下標為奇數的元素值的算術平均值pj(保留2位小數)。
結果cnt1,cnt2,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
/* 註:
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
int i,j=0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i<N;I++)
{if(xx%2) cnt1++;
else cnt2++;
if(i%2) pj+=xx[i],j++;
}
pj=(float)((int)pj*100/j)/100;
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
47、已知在文件in.dat中存有若干個(個數<200)四位數字的正整數,函數readdat
()讀取這若干個正整數並存入數組xx中。請編制函數calvalue(),其功能要求:1、求出
這文件中共有多少個正整數totnum;2、求出這些數中的各位數字之和是偶數的數的個數
totcnt,以及滿足此條件的這些數的算術平均值totpjz,最後調用函數writedat()把所
求的結果輸出到文件out.dat中。
部分源程序已給出。
請勿改動主函數main()、讀數據函數readdat()和輸出數據函數writedat()的內容。
#include
#include
#define MAXNUM 200
int xx[MAXNUM];
int totnum=0;
int totcnt=0;
double totpjz=0.0;
int readdat(void);
void writedat(void);
void calvalue(void)
{
}
void main()
{
int i;
clrscr();
for(i=0;i if(readdat())
{printf("Can't open the data file in.dat!\007\n");
return;
}
calvalue();
printf("totnum=%d\n",totnum);
printf("totcnt=%d\n",totcnt);
printf("totpjz=%.2lf\n",totpjz);
writedat();
}
int readdat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("in.dat","r"))==NULL) return 1;
while(!feof(fp))
fscanf(fp,"%d,",&xx[i++]);
fclose(fp);
return 0;
}
void writedat(void)
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%d\n%.2lf\n",totnum,totcnt,totpjz);
fclose(fp);
}
/* 註:該題的關鍵在於會不會取出一個數的個、十、百、千位上的數。a[i]%10對10求
余結果為個位數,a[i]%100/10先對100求余得出後兩位數然後再除10,由於為整數因此
得出上一個後兩位數的第一位。依此類推。*/
void calvalue(void)
{
int i;
for(i=0;i<MAXNUM;I++)
{if(!xx[i]) break;
if(xx[i]>0) totnum++;
if((xx[i]/1000+xx[i]/100%10+xx[i]/10%10+xx[i]%10)/2==0)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
48、請編製程序,從文件in.dat中讀取200個整數至數組xx中,求出奇數的個數cnt1和偶
數的個數cnt2以及數級xx值為奇數的元素值的算術平均值pj(保留2位小數)。
結果cnt1,cnt2,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
/* 註:
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
int i;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i<N;I++)
if(xx[i]%2)
else cnt2++;
pj=(float)((int)pj*100/cnt1)/100;
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
49、已知在文件in.dat中存有若干個(個數<200)四位數字的正整數,函數readdat
()讀取這若干個正整數並存入數組xx中。請編制函數calvalue(),其功能要求:1、求出
這文件中共有多少個正整數totnum;2、求出這些數中的各位數字之和是奇數的數的個數
totcnt,以及滿足此條件的這些數的算術平均值totpjz,最後調用函數writedat()把所
求的結果輸出到文件out.dat中。
部分源程序已給出。
請勿改動主函數main()、讀數據函數readdat()和輸出數據函數writedat()的內容。
#include
#include
#define MAXNUM 200
int xx[MAXNUM];
int totnum=0;
int totcnt=0;
double totpjz=0.0;
int readdat(void);
void writedat(void);
void calvalue(void)
{
}
void main()
{
int i;
clrscr();
for(i=0;i if(readdat())
{printf("Can't open the data file in.dat!\007\n");
return;
}
calvalue();
printf("totnum=%d\n",totnum);
printf("totcnt=%d\n",totcnt);
printf("totpjz=%.2lf\n",totpjz);
writedat();
}
int readdat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("in.dat","r"))==NULL) return 1;
while(!feof(fp))
fscanf(fp,"%d,",&xx[i++]);
fclose(fp);
return 0;
}
void writedat(void)
{
FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n%d\n%.2lf\n",totnum,totcnt,totpjz);
fclose(fp);
}
/* 註:與47題相似。*/
void calvalue(void)
{
int i;
for(i=0;i<MAXNUM;I++)
{if(!xx[i]) break;
if(xx[i]>0) totnum++;
if((xx[i]/1000+xx[i]/100%10+xx[i]/10%10+xx[i]%10)/2==1)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
50、請編製程序,從文件in.dat中讀取200個整數至數組xx中,不計數組xx最大的數(若
有重復值,則都不計),再求出最大數max及最大數的個數cnt和所剩下200-cnt個數的算
求平均值pj (保留2位小數)。
結果max,cnt1,min,cnt2,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt,xx[N],max;
float pj;
FILE *fw;
int i,max0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
}
/* 註:本題要注意先去掉最大數然後最求出次大數max及個數cnt。要在求max0時給ma
x任意賦一個不能等於max0的數,只有這樣才能保證求次大數max時不會出錯。*/
void main()
{
int cnt,xx[N],max;
float pj;
FILE *fw;
int i,max0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=xx[0];
pj=0;
cnt=0;
for(i=1;i<N;I++)
if(max0 else max=xx[i];
for(i=0;i<N;I++)
if(max0>xx[i]&&max for(i=0;i<N;I++)
if(xx[i]==max) cnt++;
else pj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
}
51、下列程序的功能是:計算500-800區間內素數的個數cnt,並按所求素數的值從大到
小的順序,再計算其間隔加、減之各,即第1個素數-第2個素數+第3個素數-第4個素數+
第5個素數……的值sum。請編寫函數countvalue()實現程序的要求,最後調用函數writ
edat()把結果cnt和sum,輸出到文件out11.dat中。
部分源程序已給出。
請勿改動主函數main()和輸出數據函數writedat()的內容。
#include
int cnt,sum;
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("cnt=%d\n",cnt);
printf("sum=%d\n",sum);
writeDAT();
}
writeDAT()
{
FILE *fp;
fp=fopen("OUT11.DAT","w");
fprintf(fp, "%d\n%d\n",cnt,sum);
fclose(fp);
}
/* 註:本題要求從大到小的順序進行加減運算,因此這里採用從800開始循環到500這樣
就能保證出來的素數就是從大到小,內嵌的for()再加上if()是用來判斷是否為素數。其
中k用來控制加減運算。*/
void countValue()
{
int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<I;J++)
if(i%j==0) break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}
52、請編製程序,從文件in.dat中讀取200個整數至數組xx中,不計數組xx最小的數(若
有重復值,則都不計),再求出最小數min及最小數cnt和所剩下200-cnt個數的算求平均
值pj (保留2位小數)。
結果min,cnt,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt,xx[N],min;
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\nmin=%d,cnt=%d,pj=%6.2f\n",min,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",min,cnt,pj);
fclose(fw);
}
/* 註:與50相似。*/
void main()
{
int cnt,xx[N],min;
float pj;
FILE *fw;
int i,min0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
min0=xx[0];
pj=0;
cnt=0;
for(i=1;i<N;I++)
if(min0>xx) min0=xx[i];
else min=xx[i];
for(i=0;i<N;I++)
if(min0<XX[I]&&MIN>xx[i]) min=xx[i];
for(i=0;i<N;I++)
if(xx[i]==min) cnt++;
else pj+=xx[i];
pj=(float)((int)pj*100/(200-cnt))/100;
printf("\n\nmin=%d,cnt=%d,pj=%6.2f\n",min,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",min,cnt,pj);
fclose(fw);
}
53、下列程序的功能是:先出5000以下符合條件的自然數。條件是:千位數字與百位數
字之和等於十位數字與個位數字之和,且千位數字與百位數字之和等於個位數字與千位
數字之差的確10倍。計算並輸出這些四位自然數的個數cnt以及這些數的和sum。請編寫
函數countvalue(0實現程序的要求,最後調用小孩子數writedat()把結果cnt和sum,輸
出到文件out13.dat中。
#include
int cnt,sum;
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("cnt=%d\n",cnt);
printf("sum=%d\n",sum);
writeDAT();
}
writeDAT()
{
FILE *fp;
fp=fopen("OUT13.DAT","w");
fprintf(fp, "%d\n%d\n",cnt,sum);
fclose(fp);
}
/* 註:該題的關鍵亦是如何取出各位數字。*/
void countValue()
{
int i;
for(i=1000;i<5000;i++)
if((i/1000+i/100%10)==(i/10%10+i%10))
if((i/1000+i/100%10)==(i%10-i/1000)*10)
{cnt++;
sum+=i;
}
}
54、請編製程序,從文件in.dat中讀取200個整數至數組xx中,求出奇數的個數cnt1和偶
數的個數cnt2以及數級xx值為偶數的元素值的算術平均值pj(保留2位小數)。
結果cnt1,cnt2,pj輸出到out.dat中。
部分程序、讀數據函數read_dat(int xx[200])及輸出格式已給出。
#include
#include
#define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
/* 註:已是很簡單了吧!*/
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
int i;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
cnt1=cnt2=0;
pj=0.0;
for(i=0;i<N;I++)
if(xx[i]%2) cnt1++;
else
pj=(float)((long)(pj*100/cnt2))/100;
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
55、下列程序的功能是:計算出自然數SIX和NINE,它們滿足的條件是SIX+SIX+SIX=NIN
E+NINE的個數cnt,以及滿足此條件所有的SIX與NINE的和SUM。請編寫函數countvalue(
)實現程序的要求,最後調用函數writedat()把結果cnt和sum,輸出到文件out15.dat中

其中S,I,X,N,E各代表一個十進制數字。
#include
long cnt,sum;
void countValue()
{
}
void main()
{
cnt=sum=0;
countValue();
printf("cnt=%d\n",cnt);
printf("sum=%ld\n",sum);
writeDAT();
}
writeDAT()
{
FILE *fp;
fp=fopen("OUT11.DAT","w");
fprintf(fp, "%d\n%d\n",cnt,sum);
fclose(fp);
}
/* 註:由於有SIX+SIX+SIX=NINE+NINE可看出SIX的3倍必須大於等於2000(右邊是一個
四位數字的數可知),因此從666開始循環,再由三個數的和是個偶數(右邊為一個數的
2倍可知)可循環時步長為2。再由SIX和NINE中有一個共同數字I所以得出第一個if()判
斷,還有NINE中有一共同數字N所以得出第二個if()判斷。*/
void countValue()
{ int i;
printf("\n");
for(i=666;i<=999;i=i+2)
if(i/10%10==(3*i/2)/100%10)
{cnt++;
sum+=i+3*i/2;
}
}
_________________________________
本人只是為了上機能通過,不追求什麼演算法速度,答案僅供大家參考,我9號長春上機。(tonggu)
void countValue()
{
int i;
cnt=0;
sum=0;
for(i=1000;i<1500;i++)
if(i/1000==i/10%10 && i/3*3==i)
{
cnt++;
sum+=i*4;
}
}

『叄』 一個實例搞定MATLAB界面編程 pjimage.m 學習中遇到的問題

調試了半天終於get了。錯誤原因是h_pjimage = findobj('Tag','figure_pjimage');這一句尋找沒成功,至於為什麼不成功我也不清楚(把這句放到pjimage.m中尋找也找不到,很奇怪),然後就返回0x0 GraphicsPlaceholder(空的圖形窗口)。然後我把這一句改成了h_pjimage = findobj(pjimage,'Tag','figure_pjimage');也就是指定在pjimage中尋找,之後就成功了。

『肆』 在編程裡面,pj是什麼字意

作者或上傳者的網名

『伍』 編程分別輸入兩個按從小到大排序的數組a和b,將這兩個有序數組合並,使合並後的數

#include<stdio.h>
#define N 20
int main()
{

int a[N]={ 0 }, b[N]={ 0 };
int anum,bnum,c[N+N];
int *pi, *pj,*pk;
scanf("%d",&anum); //輸入數組a元素個數
for(pi=a;pi<a+anum;pi++)
{
scanf("%d",pi);
}
scanf("%d",&bnum); //輸入數組b元素個數
for(pj=b;pj<b+bnum;pj++)
{
scanf("%d",pj);
}

/***** 在數組a和b都有數據時比較兩個數組 *****/
/********** Begin *********/
pi=a,pj=b,pk=c;
while(pi<a+anum&&pj<b+bnum)
{
if(*pi<*pj)
{
*pk=*pi;
pk++;
pi++;
}
else
{
*pk=*pj;
pk++;
pj++;
}
}
if(pi<a+anum)
{while(pi<a+anum)
{*pk=*pi;
pk++;
pi++;}

}
if(pj<b+bnum)
{while(pj<b+bnum)
{*pk=*pj;
pk++;
pj++;}

}
for ( pk=c; pk<c+anum+bnum; pk++ ) printf("%d ", *pk );

/********** End **********/

/***** 如果數組a還有數據 *****/
/********** Begin *********/

/********** End **********/

/***** 如果數組b還有數據 *****/
/********** Begin *********/

/********** End **********/

/***** 輸出數組c *****/
/********** Begin *********/

/********** End **********/
printf("\n");
return 0;
}

『陸』 C語言一簡單的編程

//#include "stdafx.h" 這是win32或mfc工程的頭,控制台程序不要
#include <stdio.h>
#include <stdlib.h>

void get_max(int a[],int count,int &max, int &max_count);
void get_min(int a[],int count,int &min, int &min_count);
float get_pj(int a[],int count,int max,int max_count,int min,int min_count);
void countvalue(int *a, int *n);

void main()
{
int a[200],max,max_count,min,min_count;
float pj;
//用隨機數初始a
for (int i = 0; i < 200; i++)
{
a[i] = i+1;
}
a[5] = a[10] = a[14] = 1;
a[9] = a[20] = a[17] = 200;
get_max(a,200,max,max_count);
get_min(a,200,min,min_count);
pj = get_pj(a,200,max,max_count,min,min_count);
printf("最大數為:%d,最大數的個數為:%d\n",max,max_count);
printf("最小數為:%d,最小數的個數為:%d\n",min,min_count);
printf("平均值為:%.2f\n",pj);

int b[300],n;
countvalue(b,&n);
for (int j = 0; j < n; ++j)
{
printf("%d\t",b[j]);
if((j+1)%10 == 0)
printf("\n");
}
printf("\n");

}

void get_max(int a[],int count,int &max, int &max_count)
{
max = a[0];
max_count = 1;
for (int i = 1; i < count; i++)
{
if(a[i] > max)
{
max = a[i];
max_count = 1;
}
else if(a[i] == max)
{
max_count++;
}
}
}

void get_min(int a[],int count,int &min, int &min_count)
{
min = a[0];
min_count = 1;
for (int i = 1; i < count; i++)
{
if(a[i] < min)
{
min = a[i];
min_count = 1;
}
else if(a[i] == min)
{
min_count++;
}
}
}

float get_pj(int a[],int count,int max,int max_count,int min,int min_count)
{
int sum = 0;
for (int i = 0; i <count; i++)
{
sum += a[i];
}
return (float(sum - max*max_count - min*min_count)/float(count - max_count - min_count));
}

void countvalue(int *a, int *n)
{
(*n) = 0;
for (int i = 7; i <= 1000; ++i)
{
if(((i%7 == 0)||(i%11 == 0)) && (i%77 != 0))
{
a[(*n)++] = i;
}
}
}

熱點內容
格物致知編程 發布:2025-07-16 18:07:54 瀏覽:947
戴爾伺服器系統設置如何設置 發布:2025-07-16 18:02:09 瀏覽:958
為什麼換安卓這么難 發布:2025-07-16 17:14:44 瀏覽:421
轉動密碼鎖怎麼開 發布:2025-07-16 17:14:37 瀏覽:611
伺服器和網關ip 發布:2025-07-16 17:09:35 瀏覽:930
如何用net映射伺服器盤符 發布:2025-07-16 17:08:50 瀏覽:13
小飛機android 發布:2025-07-16 16:51:00 瀏覽:236
python獲取api 發布:2025-07-16 16:35:28 瀏覽:740
安卓應用耗電優化是什麼 發布:2025-07-16 16:29:39 瀏覽:502
惠普電腦都有什麼配置的 發布:2025-07-16 15:51:49 瀏覽:520