C語言學生成績統計沒交作業的人
⑴ C語言 提交作業出錯
不能有兩個main函數,這個題目應該只給了fab這個函數介面吧,你只要把int fab的定義提交應該就可以了,main函數和頭文件不用你來寫
⑵ C語言編程 急!要交作業了!不會!!
下面是我給的答案,有問題的聯系我,再討論。從12點多一直做到現在,別忘了給我選成推薦答案哈。累傻了我了都
1、 楊輝三角形的每一項數據正好是組合 (即s(n!/m!/(n-m)!)的值,其中n是行數(從0行開始);m是列數(從0列開始)。 請使用上述演算法得到楊輝三角形每一個位置的值並按下圖列印。 要求用函數f計算一個正整數的階乘(用遞歸函數來實現),通過主函數調用f完成計算。
答: 下面是我的源代碼,程序輸出的部分在最後的注釋裡面
/*
* yanghui.cc
*
* Created on: 2010-6-14
* Author: LiuFeng
* Email: [email protected]
*/
#include <cstdio>
#include <iostream>
using namespace std;
int fac(int base){
if(base==1){
return 1;
}
return fac(base-1)*base;
}
int triDisplay(int** a, int row, int col){
if(row != col){
perror("must : row=col");
return (-1);
}
int sz=row;
printf("\n");
for(int i=0;i<sz;++i){
*((int*)a+i*sz+0)=1;
*((int*)a+i*sz+i)=1;
}
for(int n=2;n<sz;++n)
for(int m=1;m<n;++m){
*((int*)a+n*sz+m) = fac(n)/fac(m)/fac(n-m);
}
for(int n=0;n<sz;++n){
for(int m=0;m<=n;++m){
printf("%5d", *((int*)a+n*sz+m) );
}
printf("\n");
}
return 0;
}
int
main(void){
int data[10][10];
int size=10;
if(triDisplay((int**)data,size,size)<0){
perror("bad mtria");
exit(-2);
}
return 0;
}
/*
[Administrator@ /<7>06/14]$ g++ -g -O3 -o tri yanghui.cc
[Administrator@ /<7>06/14]$ ./tri.exe
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
*/
2. 編寫一個函數,要求對n個學生的成績進行排序,要求用數組名作函數參數。在數組a中存放了10個學生某門課程的成績,調用上述函數,實現對10個學生的成績排序。
答: 程序的源代碼如下,程序的輸出在最後面的注釋裡面
/*
* DcSort.cc
*
* Created on: 2010-6-14
* Author: LiuFeng
* Email: [email protected]
*
* g++ -g -O3 DcSort.cc -Wall -o dsort
*/
#include <cstdio>
#include <cstring>
#include <cstdlib>
typedef struct
{
char _sname[30];
double _sscore;
} stu;
int
Partition(stu * stus, int l, int h)
{
stu pivot = stus[l];
while(l<h){
while(l<h && ((stus[h]._sscore) >= (pivot._sscore))) h--;
if(l<h) stus[l++]=stus[h];
while(l<h && ((stus[l]._sscore) <= (pivot._sscore))) l++;
if(l<h) stus[h--]=stus[l];
}
stus[l]=pivot;
return l;
}
void DcSort(stu* stus, int low, int high){
int pivotpos;
if(low<high){
pivotpos=Partition(stus,low,high);
DcSort(stus,low,pivotpos-1);
DcSort(stus,pivotpos+1,high);
}
}
int main(void){
stu s[10]={
{"zhao",60},
{"qian",40},
{"sun",80},
{"li",90},
{"zhou",70},
{"wu",50},
{"zheng",80},
{"jiang",90},
{"shen",100},
{"han",80},
};
for(int i=0; i<10;++i){
printf("student: name: %s, score: %f\n", s[i]._sname, s[i]._sscore);
}
DcSort(s,0,10);
printf("\n===================after sorted ==================\n");
for(int i=0; i<10;++i){
printf("student: name: %s, score: %f\n", s[i]._sname, s[i]._sscore);
}
return 0;
}
/*
輸出結果:
[Administrator@ ~/<1>preInterView/SortAndFind]$ g++ -g -O3 DcSort.cc -Wall -o dsort
[Administrator@ ~/<1>preInterView/SortAndFind]$ clear
[Administrator@ ~/<1>preInterView/SortAndFind]$ ./dsort.exe
student: name: zhao, score: 60.000000
student: name: qian, score: 40.000000
student: name: sun, score: 80.000000
student: name: li, score: 90.000000
student: name: zhou, score: 70.000000
student: name: wu, score: 50.000000
student: name: zheng, score: 80.000000
student: name: jiang, score: 90.000000
student: name: shen, score: 100.000000
student: name: han, score: 80.000000
===================after sorted ==================
student: name: qian, score: 40.000000
student: name: wu, score: 50.000000
student: name: zhao, score: 60.000000
student: name: zhou, score: 70.000000
student: name: han, score: 80.000000
student: name: sun, score: 80.000000
student: name: zheng, score: 80.000000
student: name: jiang, score: 90.000000
student: name: li, score: 90.000000
student: name: shen, score: 100.000000
[Administrator@ ~/<1>preInterView/SortAndFind]$
*/
三、程序運行結果示例:
第一題:
/*
[Administrator@ /<7>06/14]$ g++ -g -O3 -o tri yanghui.cc
[Administrator@ /<7>06/14]$ ./tri.exe
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
*/
第二題:
/*
輸出結果:
[Administrator@ ~/<1>preInterView/SortAndFind]$ g++ -g -O3 DcSort.cc -Wall -o dsort
[Administrator@ ~/<1>preInterView/SortAndFind]$ clear
[Administrator@ ~/<1>preInterView/SortAndFind]$ ./dsort.exe
student: name: zhao, score: 60.000000
student: name: qian, score: 40.000000
student: name: sun, score: 80.000000
student: name: li, score: 90.000000
student: name: zhou, score: 70.000000
student: name: wu, score: 50.000000
student: name: zheng, score: 80.000000
student: name: jiang, score: 90.000000
student: name: shen, score: 100.000000
student: name: han, score: 80.000000
===================after sorted ==================
student: name: qian, score: 40.000000
student: name: wu, score: 50.000000
student: name: zhao, score: 60.000000
student: name: zhou, score: 70.000000
student: name: han, score: 80.000000
student: name: sun, score: 80.000000
student: name: zheng, score: 80.000000
student: name: jiang, score: 90.000000
student: name: li, score: 90.000000
student: name: shen, score: 100.000000
[Administrator@ ~/<1>preInterView/SortAndFind]$
*/
二、實驗內容:按題目要求完成程序的改錯、調試、填空和編寫。
1、以下程序中,main函數通過調用fun()函數統計整數序列中的負數的個數以及平均值。
本題約定平均值由函數返回,負數的個數由參數返回。程序有若干錯誤,請先閱讀程序,找出其中的錯誤行,
並寫出出錯的原因,最後上機調試該程序驗證自己的預測。
#1 double aver(int a[], int n, int *p) // p所謂返回的參數之一,應該使用二級指針,或者指針的引用;
#2 { int i,sum=0 ; // 這里的*p指向了函數內部的臨時變數,且該變數在函數結束時,
// 會同時被系統從棧上釋放掉, 那麼你在main函數中讀取p指向的地址,得到的
// 就是一個不可以預期的值了,也就是「野指針」
// 使用二級指針或者指針的引用,是可以將內存在函數體內外帶入帶出的,但是
// 注意要在main中先申請好
#3 *p=0 ;
#4 for(i=0;i<n;i++)
#5 { sum=sum+a[i] ;
#6 if(a[i]<0) *p++;
#7 }
#8 return sum/n;
#9 }
#10 #include "stdio.h"
#11 main()
#12 { int count,x[]={0,12,33,-9,-5,27,80,0,54,63};
#13 double av;
#14 av=aver(x,10,count);
#15 printf("count: %d\naverage: %.2f\n",count,av);
#16 }
2、設有如下結構定義,且struct link為鏈表的結點類型,由該結構類型創建的鏈表中的a結點已被指針p指向(見下圖),請完成下面的操作:
struct link
{ int score;
struct link *next;
}*p,*q;
(1) 寫出刪除b結點(包括釋放其存儲空間)的語句序列(允許藉助於q指針),但要求鏈表的連續結構不能破壞,不能移動p指針。
答:
void
deleteNode(link* p, link* q, int b)
{
q = p;
int len=0;
while(q->next)++len;
if(len < b) {perror("You input a overflow position"); exit(-1);}
q=p;
while(--b){ // move to b
q=q->next;
}
while(q->next) { // overwrite the prenode,one by one
q->score=q->>next->score;
}
free(q) // q point to the last node;
}
(2) 閱讀下面程序說明,按注釋提示,在劃線處補充細節,使程序達到預期功能。 [程序說明]以下程序中,函數create的功能是創建一個結點類型為struct link的學生成績鏈表,main函數中,首先調用create函數創建一個包含N個結點的成績鏈表,然後調用問題(1)的演算法,將鏈表的第2個結點刪除掉,要求輸出結點刪除前、後鏈表的內容,以驗證問題(1)演算法的正確性。
#include <stdio.h>
#define N 5
#define L sizeof(struct link)
struct link
{ int score; /* 成績 */
(1);/* 定義結點的指針域next */
};
struct link *create(void)
{
struct link *head,*p;
int i;
head=NULL;
printf("Input %d records\n",N);
for(i=1;i<=N;i++)
{
p=(2) ; /* 創建一個動態結點 */
scanf("%d",&p->score);
(3); /* 新結點進棧 */
head=p;
}
return (4) ; /* 返回所創建鏈表的頭指針 */
}
void printlist(struct link *head) /* 輸出鏈表 */
{ struct link *p;
p=head;
while(p!=NULL)
{ printf("%d,",p->score);
(5) ; /* 使p後移一個結點 */
}
printf("\n");
}
int
main( void)
{ struct link *base,*new;
(6) ; /* 調用create函數,創建鏈表 */
printlist(base); /* 輸出原始鏈表 */
/* 藉助於new指針刪除第2個結點 */
(8) ; /* 輸出結點刪除以後的鏈表內容 */
printf("ok!\n");
}
(2)答:
【 (1) link * next; 】
【 (2) p= (link*)malloc(sizeof(struct link)); 】
【 (3) p->next = head 】
【 (4) head 】
【 (5) p=p->next 】
【 (6) base = create(); 】
【 (7) deleteNode(base, new, int b); // 利用我們上一問中,寫好的函數 】
【 (8) printlist(base);】
⑶ 剛接觸c語言,做了一個隨機抽取學生交作業的程序,求幫忙
#include<iostream>
#include<ctime>
#include<stdio.h>
int main()
{
int i;
char*student[]=
{
"jacky",
"peter",
"paul",
"harry"
};
int a[4];
srand(time(0));
for( i=0;i<4;i++)
{
a[i]=rand()%4; //這里將+1去掉,因為數組的下標是從0開始的,即"jacky"在專student[0]單元,"harry"在student[3]單元,+1導致可能出現4,這樣就溢出了屬
printf("%s\n",student[a[i]]);
}
}
⑷ 急急急!C語言高手 幫幫忙 我們要交大作業 不勝感激!!!!
給你兩種:
第一種:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct student{
int id;
char name[10];
int age;
char sex[10];
char birthady[20];
int tel;
char nativeplace[50];
}st[50];
int i=0;
void shuru() {
char a;
do{
printf("\n請輸入學號:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n請輸入姓名:");
gets(st[i].name);
printf("\n") ;
printf("請輸入年齡:");
scanf("%d",&st[i].age);
fflush(stdin);
printf("\n請輸入姓別:");
gets(st[i].sex);
fflush(stdin);
printf("\n請輸入生日:");
gets(st[i].birthady);
printf("\n請輸入電話:");
scanf("%d",&st[i].tel);
fflush(stdin);
printf("\n請輸入籍貫:");
gets(st[i].nativeplace);
printf("\n是否繼續輸入另外一個學生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);
}
void xianshi()
{
int j;
printf("\t學號\t姓名\t年齡\t性別\t生日\t\t電話\t籍貫\n");
for(j=0;j<i;j++)
printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n",
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}
void paixu() //按年齡從大到小排序函數
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序後輸出
}
void chazhao()
{
int m;
char name[20],b;
do
{
printf("\n請輸入想查找的學生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("\n\t您查找的學生在第%d個位置找到了!!!\n",m+1);
break;
}
}
if(m>=20)
printf("\n\t沒有找到這個學生!!!\n");
else
{
printf("\t學號\t姓名\t年齡\t性別\t生日\t\t電話\t籍貫\n");
printf("\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n",
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf("\n是否查找另一個學生的信息?(y/n)");
fflush(stdin);
b=getchar();
}while(b=='y');
}
void shanchu()
{
char name[20],c;
int a,b;
do
{
printf("\n請輸入要刪除的學生姓名:\n");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}
for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("\t沒有找到這個學生!!!\n");
else
{
i--;
xianshi();
}
printf("\n是否繼續刪除另一個學生信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');
}
void charu()
{
shuru();
paixu();
}
void main() //主函數
{
int change;
do{
system("cls");
printf("============================學生信息管理系統===================================\n");
printf("\t\t一: 輸入學生信息\n");
printf("\t\t二: 顯示學生信息\n");
printf("\t\t三: 查找學生信息\n");
printf("\t\t四: 刪除學生信息\n");
printf("\t\t五: 插入學生信息\n");
printf("\t\t六: 退出程序\n");
fflush(stdin);
printf("\t\t請輸入功能選項:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}
第二種
#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct STUDENT
{
char studentNumber[10];/*學生學號*/
char studentName[20];/*學生姓名*/
char studentSEX[10];/*學生性別*/
char className[20];/*班級名稱*/
float mark1;/*第1門成績*/
float mark2;/*第2門成績*/
float mark3;/*第3門成績*/
float mark4;/*第4門成績*/
float mark5;/*第5門成績*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink;/*鏈表表頭指針*/
/*以下是函數聲明*/
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
STUDENT *MallocNode(void);
void GetInformation(STUDENT *t);
void OutputInformation(void);
void DesplayInfoBystudentName(void);
void DesplayInfoBystudentNumber(void);
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber(void);
void ChangeMarkByName(void);
void ChangeMarkByNumber(void);
void SaveLinkToFile(void);
void DesplayMarkSegment(void);
void CompositorByTotalMark(void);
int choose;/*用於接受用戶的選擇*/
/*主函數*/
void main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
}
/************************************
函數功能:從文件中讀學生信息到鏈表中
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("文件不存在\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%s%f%f%f",p->studentNumber,p->studentSEX,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函數功能:顯示菜單,根據用戶的輸入
完成相應的功能
************************************/
void DesplayMenu(void)
{
STUDENT *p;
printf("-------請選擇相應功能------------\n\n");
printf("| 1 顯示所有學生的信息 |\n");
printf("| 2 按姓名查詢 |\n");
printf("| 3 按學號查詢 |\n");
printf("| 4 增加學生 |\n");
printf("| 5 刪除學生 |\n");
printf("| 6 按姓名修改學生成績 |\n");
printf("| 7 按學號修改學生成績 |\n");
printf("| 8 保存所有學生信息 |\n");
printf("| 9 顯示優秀和不及格學生成績 |\n");
printf("| 10 排序結果並輸出成績 |\n");
printf("| 11 退出 |\n\n");
scanf("%d",&choose);/*取得用戶的選擇*/
switch(choose)
{
case 1:
OutputInformation();/*顯示所有學生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根據用戶輸入的學號顯示該學生的信息*/
break;
case 4:
p=MallocNode();/*先申請一個新結點*/
GetInformation(p);/*要求用戶輸入信息到新結點中*/
InsertOneNode(p);/*將新結點加到鏈表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根據用戶輸入的學號刪除該學生*/
break;
case 6:
ChangeMarkByName();/*根據用戶輸入的姓名修改學生成績*/
break;
case 7:
ChangeMarkByNumber();/*根據用戶輸入的學號修改學生成績*/
break;
case 8:
SaveLinkToFile();/*保存數據*/
break;
case 9:
DesplayMarkSegment();/*顯示各分數段的學生成績*/
break;
case 10:
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存數據後再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DesplayMenu();/*遞歸調用*/
}
/************************************
函數功能:建立鏈表表頭
************************************/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函數功能:申請一個新結點,並將其初始化
************************************/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<10;i++)
p->studentSEX[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->mark4=0.0;
p->mark5=0.0;
p->next=NULL;
return p;
}
/************************************
函數功能:取得用戶輸入的學生信息
************************************/
void GetInformation(STUDENT *t)
{
printf("請輸入學生學號:\n");
scanf("%s",t->studentNumber);
printf("請輸入學生姓名:\n");
scanf("%s",t->studentName);
printf("請輸入學生性別:\n");
scanf("%s",t->studentSEX);
printf("請輸入該生所在班級:\n");
scanf("%s",t->className);
printf("請輸入第1門成績:\n");
scanf("%f",&(t->mark1));
printf("請輸入第2門成績:\n");
scanf("%f",&(t->mark2));
printf("請輸入第3門成績:\n");
scanf("%f",&(t->mark3));
printf("請輸入第4門成績:\n");
scanf("%f",&(t->mark4));
printf("請輸入第5門成績:\n");
scanf("%f",&(t->mark5));
}
/************************************
函數功能:在鏈表的結尾處增加一個結點
************************************/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函數功能:根據用戶輸入的學生姓名顯示該學生的信息
************************************/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("請輸入學生姓名:\n");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("學號\t姓名\t性別\t班級\t成績1\t成績2\t成績3\t成績4\t成績5\t總成績\t平均成績\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("對不起,不存在姓名為 %s 的學生\n",studentName);
}
/************************************
函數功能:根據用戶輸入的學號顯示該學生的信息
************************************/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[10];
char flag=0;
p=headLink->next;
printf("請輸入學生學號:\n");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("學號\t姓名\t性別\t班級\t成績1\t成績2\t成績3\t成績4\t成績5\t總成績\t平均成績\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("對不起,不存在學號為 %s 的學生\n",studentNumber);
}
/************************************
函數功能:輸出一個結點的信息
************************************/
void DesplayOneNode(STUDENT *t)
{
printf("%s\t",t->studentNumber);
printf("%s\t",t->studentName);
printf("%s\t",t->studentSEX);
printf("%s\t",t->className);
printf("%.2f\t",t->mark1);
printf("%.2f\t",t->mark2);
printf("%.2f\t",t->mark3);
printf("%.2f\t",t->mark4);
printf("%.2f\t",t->mark5);
printf("%.2f\t",t->mark1+t->mark2+t->mark3+t->mark4+t->mark5);
printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3+t->mark4+t->mark5)/5);
}
/************************************
函數功能:根據用戶輸入的學號刪除該學生
************************************/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("請輸入要刪除的學生學號:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("不存在該學號的學生\n");
return;
}
printf("成功刪除\n");
}
/************************************
函數功能:顯示所有學生的信息
************************************/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("現在沒有學生信息,請先輸入學生信息\n\n");
return;
}
printf("學號\t姓名\t性別\t班級\t成績1\t成績2\t成績3\t成績4\t成績5\t總成績\t平均成績\n\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/************************************
函數功能:根據輸入的姓名修改成績
************************************/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("請輸入學生姓名:\n");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("請輸入新的第1門成績:\n");
scanf("%f",&mark1);
printf("請輸入新的第2門成績:\n");
scanf("%f",&mark2);
printf("請輸入新的第3門成績:\n");
scanf("%f",&mark3);
printf("請輸入新的第4門成績:\n");
scanf("%f",&mark4);
printf("請輸入新的第5門成績:\n");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag)
printf("對不起,不存在姓名為 %s 的學生\n",studentName);
}
/************************************
函數功能:根據輸入的學號修改成績
************************************/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3,mark4,mark5;
p=headLink->next;
printf("請輸入學生學號:\n");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("請輸入新的第1門成績:\n");
scanf("%f",&mark1);
printf("請輸入新的第2門成績:\n");
scanf("%f",&mark2);
printf("請輸入新的第3門成績:\n");
scanf("%f",&mark3);
printf("請輸入新的第4門成績:\n");
scanf("%f",&mark4);
printf("請輸入新的第5門成績:\n");
scanf("%f",&mark5);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
p->mark4=mark4;
p->mark5=mark5;
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!flag)
printf("對不起,不存在學號為 %s 的學生\n",studentNumber);
}
/************************************
函數功能:保存鏈表數據到文件中
************************************/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("現在沒有學生信息,請先輸入學生信息\n\n");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在\n");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %s %f %f %f %f %f\n",p->studentNumber,p->studentName,p->studentSEX,p->className,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5);
p=p->next;
}
fclose(fp);
}
/************************************
函數功能:顯示優秀和不及格學生成績
************************************/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("60分以下(不及格)的學生成績如下:\n");
printf("學號\t姓名\t性別\t班級\t成績1\t成績2\t成績3\t成績4\t成績5\t總成績\t平均成績\n\n");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))||(6>((int)(p->mark4/10)))||(6>((int)(p->mark5/10))))/*只要有一科不及格就認為該生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("不及格的學生一共有%d人\n",count);
p=headLink->next;
printf("成績優秀的學生成績如下:\n");
printf("學號\t姓名\t性別\t班級\t成績1\t成績2\t成績3\t成績4\t成績5\t總成績\t平均成績\n\n");
count=0;
while(p)
{
if((8<=((int)(p->mark1/10)))&&(8<=((int)(p->mark2/10)))&&(8<=((int)(p->mark3/10)))&&(8<=((int)(p->mark4/10)))&&(8<=((int)(p->mark5/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("成績優秀的學生一共有%d人\n",count);
}
/************************************
函數功能:按總成績排序
************************************/
void CompositorByTotalMark(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("現在還沒學生信息,請先輸入學生信息\n");
return;
}
while(r)/*兩層while循環實現排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3+q->mark4+q->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先復制q結點信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;
exchange.mark4=q->mark4;
exchange.mark5=q->mark5;
strcpy(q->studentNumber,p->studentNumber);/*再復制p結點信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->studentSEX,p->studentSEX);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark2;
q->mark3=p->mark3;
q->mark4=p->mark4;
q->mark5=p->mark5;
strcpy(p->studentNumber,exchange.studentNumber);/*最後復制exchange結點信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
p->mark4=exchange.mark4;
p->mark5=exchange.mark5;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
⑸ 求一段C語言程序代碼,內容是學生信息管理系統,代碼不要太長,有查詢和刪除就好。我是作為期末作業交的。
這個我c語言結構與鏈表的作業:
#include <stdio.h>
#include <string.h>
struct staff {
char num[6]; //學號
char name[20]; //姓名
double wage; //成績
struct staff *next;
};
/**
*輸入數據
*/
struct staff *create(int n) {
struct staff *head=NULL;
struct staff *tail,*newnode;
char num[6],name[20];
double wage;
for(int i=0;i<n;i++) {
newnode = new staff;
scanf("%s",num);
scanf("%s",name);
scanf("%lf",&wage);
strcpy(newnode->num,num);
strcpy(newnode->name,name);
newnode->wage=wage;
if(head==NULL)
head = newnode;
else
tail->next = newnode;
tail=newnode;
}
tail->next=NULL;
return(head);
}
/**
*刪除數據
*/
struct staff *deln(struct staff *head,int n) {
struct staff *p,*q;
int i=0;
p=head;
while(++i!=n && p->next!=NULL) {
q=p;
p=p->next;
}
if(i==n) {
if(p==head) head=p->next;
else q->next=p->next;
delete(p);
} else
printf("Not been found!\n");
return(head);
}
/**
*顯示數據
*/
void showdate(struct staff *head) {
struct staff *p=head;
int i=1;
while(p!=NULL) {
printf("%d| %s,%s,%.2f\n",i++,p->num,p->name,p->wage);
p=p->next;
}
}
void main() {
struct staff *head;
int n;
printf("請輸入初始鏈表結點數 ");
scanf("%d",&n);
head=create(n);
printf("刪除前:\n");
showdate(head);
int m=0;
while(m<1 || m>n) {
printf("請輸入要刪除的結點號:\n");
scanf("%d",&m);
}
head=deln(head,m);
printf("刪除後:\n");
showdate(head);
}
⑹ c語言題,急交作業
一:
#include<stdio.h>
int main()
{
int score;
printf("請輸入成績:\n");
scanf("%d",&score);
if(score<=100 && score>=0)
(score/10)
{
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
default:
printf("E\n");
break;
}
else
printf("成績有誤\n");
return 0;
}
二:
#include<stdio.h>
main()
{
int t;
double a,rate;
printf("請輸入獎金數a:\n");
scanf("%lf",&a);
t=(int)(a/500);
switch(t)
{
case 0:
rate=0.00;
printf("a=%lf\nrate=%lf\ntax=%lf\nprofit=%lf\n",a,rate,a*rate,a*(1-rate));
break;
case 1:
rate=0.05;
printf("a=%lf\nrate=%lf\ntax=%lf\nprofit=%lf\n",a,rate,a*rate,a*(1-rate));
break;
case 2:
case 3:
rate=0.08;
printf("a=%lf\nrate=%lf\ntax=%lf\nprofit=%lf\n",a,rate,a*rate,a*(1-rate));
break;
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
rate=0.10;
printf("a=%lf\nrate=%lf\ntax=%lf\nprofit=%lf\n",a,rate,a*rate,a*(1-rate));
break;
default:
rate=0.15;
printf("a=%lf\nrate=%lf\ntax=%lf\nprofit=%lf\n",a,rate,a*rate,a*(1-rate));
break;
}
}
三:
#include<stdio.h>
int main()
{
int n,i,flag=0;
printf("請輸入一個數:\n");
scanf("%d",&n);
if(n<=2)
{
printf("輸入的數小於或等於2,請重新輸入\n");
return -1;
}
else{
for(i=2;i<n;++i)
{
if(n%i == 0)
{
flag=0;
break;
}
else
flag=1;
}
}
if(flag==0)
printf("%d不是素數\n",n);
else
printf("%d是素數\n",n);
return 0;
}
⑺ 最近要交C語言大作業了,由於上學期時沒好好學,現在很是後悔,希望有好心人幫幫我吧!!作業的要求如下:
本科時候的一個通信錄管理,有你說的功能。完全可以運行。LZ看看吧。稍微加工一下就可以。
1 #include<iostream>
2 #include<string.h>
3 using namespace std;
4 struct Friend
5 {
6 double num;
7 string name;
8 char sex;
9 string telnum;
10 string addr;
11 Friend *next;
12 };
13 Friend *head;
14 Friend *Create ()
15 {
16 Friend *ps;
17 Friend *pEnd;
18 ps = new Friend;
19 cout << " 請你輸入朋友的編號:" << endl;
20 cin>>ps->num;
21 cout << " 請你輸入朋友的姓名:"<<endl;
22 cin>>ps->name;
23 cout << " 請你輸入朋友的性別:"<<endl;
24 cin>>ps->sex;
25 cout << " 請你輸入朋友電話:" << endl;
26 cin>>ps->telnum;
27 cout << " 請你輸入朋友的地址:" << endl;
28 cin>>ps->addr;
29 head = ps;
30 pEnd = ps;
31 cout<<" 是否繼續輸入:繼續按Y ,退出按N "<<endl;
32 char m;
33 cin>>m;
34
35 if(m=='y'||m=='n'||m=='Y'||m=='N')
36 {
37 while (m=='y'||m=='Y' )
38 {
39 ps = new Friend;
40 cout << " 請你輸入朋友的編號:" << endl;
41 cin>>ps->num;
42 cout << " 請你輸入朋友的姓名:"<<endl;
43 cin>>ps->name;
44 cout << " 請你輸入朋友的性別:"<<endl;
45 cin>>ps->sex;
46 cout << " 請你輸入朋友電話:" << endl;
47 cin>>ps->telnum;
48 cout << " 請你輸入朋友的地址:" << endl;
49 cin>>ps->addr;
50 pEnd->next = ps;
51 pEnd = ps;
52 char n;
53 cout<<" 是否繼續輸入:繼續按Y ,退出按N "<<endl;
54 cin>>n;
55 if(n!='y'&&n!='Y')
56 m='N';
57 else
58 m='y';
59 }
60 }
61 else
62 cout<<" 對不起,你輸入了非法數據。"<<endl;
63 pEnd->next = NULL;
64 return (head);
65 }
66
67 void chaxun(int num1,string name1) //
68 { int r=0;
69 if(head==NULL)
70 {
71 r++;
72 cout<<" 對不起,沒有你所查找的朋友:"<<endl;
73 return;
74 }
75
76 for (Friend * pGuard = head; pGuard; pGuard = pGuard->next)
77 {
78 if (pGuard->num==num1)
79 {
80 r++;
81 cout<<" 你查找的朋友信息是:"<<endl;
82 cout<<pGuard->num<<" "<<pGuard->name<<" "<<pGuard->sex<<" "<<pG
uard->telnum<<" "<<pGuard->addr<<endl;
83 }
84 if( pGuard->name==name1)
85 {
86 r++;
87 cout<<" 你查找的朋友信息是:"<<endl;
88 cout<<pGuard->num<<" "<<pGuard->name<<" "<<pGuard->sex<<" "<<pGua
rd->telnum<<" "<<pGuard->addr<<endl;
89 }
90 }
91 if(r==0)
92 cout<<" 對不起,你輸入了錯誤信息"<<endl;
93 }
94
95 void Delete (int number)
96 {
97 Friend *p;
98 if (head == NULL)
99 {
100 cout << "對不起,沒有你所查找的朋友:" << endl;
101 return;
102 }
103
104 if (head->num == number)
105 {
106 p = head;
107 head = head->next;
108 delete p; //**************
109 cout << " 待刪除的朋友已刪除" << endl;
110 return;
111 }
112
113 for (Friend * pGuard = head; pGuard->next; pGuard = pGuard->next)
114 {
115 if (pGuard->next->num == number)
116 {
117 p = pGuard->next;
118 pGuard->next = p->next;
119 delete p;
120 cout << number << " 號已經刪除 " << endl;
121 return;
122 }
123 }
124 cout << number << " 號沒有找到" << endl;
125 }
126 void insert (Friend * Node)
127 {
128 if (head == NULL)
129 {
130 head = Node;
131 Node->next = NULL;
132 return;
133 }
134 else if (head->num > Node->num)
135 {
136 Node->next = head;
137 head = Node;
138 return; //****************************
139 }
140 Friend *pGuard = head;
141 while (pGuard->next && pGuard->next->num < Node->num)
142 pGuard = pGuard->next;
143 Node->next = pGuard->next;
144 pGuard->next = Node;
145 return;
146 }
147 void showlist (Friend * dhead)
148 {
149 cout << "************" << endl;
150 while (dhead != NULL)
151 {
152 cout << dhead->num << " " << dhead->name << " " << dhead->sex<<
" " << dhead->telnum <<" "<<dhead->addr<<endl;
153 dhead = dhead->next;
154 cout << endl;
155 }
156 }
157 int main ()
158 {
159 char i2,i3;
160 head = Create ();
161 showlist (head);
162
163 int t=0;
164 for(int i=0;i<=t;i++)
165 {
166 int i;
167 cout<<" 通訊錄查詢請按 1"<<endl;
168 cout<<" 通訊錄插入請按 2"<<endl;
169 cout<<" 通訊錄刪除請按 3"<<endl;
170 cout<<" 退出請按 4 "<<endl;
171 cin>>i;
172 while(i!=1&&i!=2&&i!=3&&i!=4)
173 {
174 cout<<" 你輸入了非法數據,請重新輸入"<<endl;
175 cin>>i;
176 }
177
178 if(i==1|i==2||i==3||i==4)
179 {
180 string strChoice;
181 if(i==1)
182 {
183 do
184 {
185 cout<<" 請選擇查詢的方式:編號1,姓名2 "<<endl;
186 int jj;
187 cin>>jj;
188 string name2; //name
189 if(jj==1)
200 string name2;
201 cout<<" 請輸入待查詢的姓名:"<<endl;
202 cin>>name2;
203 chaxun(-1,name2);
204 }
205 cout<<" 是否繼續查詢:繼續按Y ,退出按N "<<endl;
206 cin>>strChoice;
207 } while (strChoice=="y"||strChoice=="Y");
208 }
209
210 if(i==2)
211 {
212 string strChoice2;
213 do
214 {
215 Friend *Node;
216 Node = new Friend;
217 cout << " 請你輸入朋友的編號:" << endl;
218 cin>>Node->num;
219 cout << " 請你輸入朋友的姓名:"<<endl;
220 cin>>Node->name;
221 cout << " 請你輸入朋友的性別:"<<endl;
222 cin>>Node->sex;
223 cout << " 請你輸入朋友電話:" << endl;
224 cin>>Node->telnum;
225 cout << " 請你輸入朋友的地址:" << endl;
226 cin>>Node->addr;
227 insert (Node);
228 showlist (head);
229 cout<<" 是否繼續插入信息:繼續按Y ,退出按N"<<endl;
230 cin>>strChoice2;
231 } while(strChoice2=="y"||strChoice2=="Y");
232
233 }
234
235 if(i==3)
236 {
237 string strChoice3;
238 do
239 {
240 int i;
241 cout << " 請你輸入待刪除同學的編號 :" << endl;
242 cin >> i;
243 Delete (i);
244 showlist (head); //end
245 cout<<" 是否繼續進行刪除 繼續按Y 退出按N "<<endl;
246 cin>>strChoice3;
247 } while(strChoice3=="y"||strChoice3=="Y");
248 }
249
250 if(i==1||i==2||i==3)
251 { char x;
252 cout<<" 是否繼續進行操作 繼續按Y 退出按N "<<endl;
253 cin>>x;
254 if(x=='y'||x=='Y')
255 t++;
256 }
257
258 }
259 }
260 }
⑻ 有誰知道東華大學C語言交作業的網站是什麼 平時成績多少分呀
我是東華的,C語言作業你要問老師呀,如果他沒登記你的學號,那就無法上傳,平時成績40分
⑼ c語言問題 我上交的作業提示一組數據未通過 但未顯示數據 求幫忙改正
你課後習題的題目是什麼?沒貼出來,看不出來你代碼有沒有邏輯問題。
目測的話,你那個while判斷有點問題,你是要判斷≥0嗎?精度應該是小數點後六位,並且是0的范圍是-0.000001到0.000001
⑽ 上C語言的課從來沒聽懂過,現在要交作業了,可是完全不會啊!!有沒有哪位好心人會寫下面的題目編程題
1、
#include<cstdio>
intfac(intn){
intsum=0;
intp=1;
for(inti=1;i<=n;i++){
=p*i;
sum=sum+p;
}
returnsum;
}
intmain(){
intn;
scanf("%d",&n);
printf("%d ",fac(n));
}
2、
#include<cstdio>
boolprime(intn){
if(n==1){
returnfalse;
}
inti;
for(i=2;i<n;i++){
if(n%i==0){
break;
}
}
if(i>=n){
returntrue;
}
returnfalse;
}
intmain(){
intn;
for(inti=100;i<=200;i++){
if(prime(i)){
printf("%d ",i);
}
}
}
3、
#include<cstdio>
inthcf(inta,intb){
if(a%b==0){
returnb;
}
returnhcf(b,a%b);
}
intlcd(inta,intb){
returna*b/hcf(a,b);
}
intmain(){
inta,b;
scanf("%d%d",&a,&b);
printf("%d ",lcd(a,b));
}
4、
#include<cstdio>
intfibona(intn){
if(n==0){
return0;
}
if(n==1){
return1;
}
returnfibona(n-1)+fibona(n-2);
}
intmain(){
for(inti=0;i<=40;i++){
printf("%d ",fibona(i));
}
}
5、
#include<cstdio>
#include<cstring>
#include<cstdlib>
usingnamespacestd;
char*dtob(intn){
if(n==0){
return"";
}
char*a="1";
if(n%2==0){
a="0";
}
char*b=dtob(n/2);
char*c=(char*)malloc(strlen(a)+strlen(b)+1);
char*temp=c;
while(*b!='