當前位置:首頁 » 編程語言 » c語言綜合實驗設計系統報告
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言綜合實驗設計系統報告

發布時間: 2022-07-18 21:51:58

『壹』 求一篇c語言綜合實驗設計報告

不難啊,這個都網路

『貳』 c語言綜合設計報告,急急急!!!程序已經有了,報告該怎麼寫

實驗名稱:函數使用練習
一、預習准備
1. 實驗目的:
(1) 掌握函數的定義方法;
(2) 掌握實參與形參「值傳遞」的意義和方法;
(3) 理解變數的作用域概念,學習在程序中正確定義和引用變數。
2. 實驗儀器與設備:PC 機,Windows,Visual C++。
3. 程序流程圖:
(1) 寫一個函數,用於判斷一個數是否為「水仙花數」。所謂「水仙花數」是指一個
3 位數,其各位數字的立方和等於該數本身。調用該數列印出所有的「水仙花數」。
函數:flower,用於判斷一個三位數是否為「水仙花數」。
輸入:x,三位整數。
輸出:0,x 不是「水仙花數」;
1,x 是「水仙花數」。
流程:如圖1 所示。
圖 1 函數flower 流程圖
主函數流程如圖 2 所示。
http://blog.sciencenet.cn/u/wellwang
2
圖 2 「水仙花數」程序主函數流程圖
(2) 編寫一個函數實現十進制整數到二進制數的轉換,用非遞歸的方法實現該函數。
在主函數中,輸入一個整數,調用該函數將這個整數轉換為二進制數,輸出二
進制數。
函數:D2B,用於將一個十進制整數轉換為二進制數。
輸入:d,十進制數;
b,整型數組。
輸出:整型值,二進制數長度。
流程如圖3 所示。
主函數流程如圖 4 所示。
二、實驗過程
程序一:
1. 實驗步驟:
(1) 創建Win32 Console Application 工程,工程名:E5_1;
(2) 創建C++ Source File ,文件名:E5_1;
http://blog.sciencenet.cn/u/wellwang
3
圖 3 函數D2B 流程圖
圖 4 「十進制整數轉換二進制數」程序主函數流程圖
http://blog.sciencenet.cn/u/wellwang
4
(3) 輸入源程序:
#include <stdio.h>
int flower(int x);
void main()
{
int i;
for(i=100;i<1000;i++)
if(flower(i))
printf("%d\n",i);
}
int flower(int x)
{
int a,b,c;
a=x/100;
b=(x%100)/10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;
else
return 0;
}
(4) 編譯,運行程序:
編譯中未出現警告和錯誤。運行程序,程序輸出結果。
2. 實驗數據:
程序輸出:
153
370
371
407
程序二:
1. 實驗步驟:
(1) 創建Win32 Console Application 工程,工程名:E5_2;
(2) 創建C++ Source File ,文件名:E5_2;
(3) 輸入源程序:
#include <stdio.h>
int D2B(int d,int b[]);
void main()
{
int i,d,l,b[10];
printf("請輸入一個十進制數:");
scanf("%d",&d);
http://blog.sciencenet.cn/u/wellwang
5
l=D2B(d,b);
for(i=l-1;i>=0;i--)
printf("%d",b[i]);
printf("\n");
}
int D2B(int d,int b[])
{
int i=0;
do
{
b[i]=d%2;
d=d/2;
i++;
}while(d!=0);
return i;
}
(4) 編譯,運行程序:
編譯中未出現警告和錯誤。運行程序,程序輸出結果。
2. 實驗數據:
(1) 第一組數據:
輸入:8
輸出:1000
(2) 第二組數據:
輸入:90
輸出:1011010
(3) 第三組數據:
輸入:0
輸出:0
(4) 第四組數據:
輸入:-10
輸出:-10-10
三、實驗總結
程序一輸出數據正確。
程序二在輸入的數為負整數(-10)時,輸出結果不正確,這是因為負數在轉換為
二進制的過程中,對2 取模的值可能為-1。對於負數,可以先取它們的絕對值進行轉
換,轉換完成後,再在二進制數前面加上負號即可。
通過本次實驗,掌握了函數的原型說明、函數定義以及函數調用的方法;理解了
函數實參與形參「值傳遞」的意義;理解了變數作用域的概念;提高了編程水平和動
手能力。

『叄』 C語言程序設計實驗報告

題目2:
#include <stdio.h>
#include <stdlib.h>
main()
{
int a;
printf("ÇëÊäÈë³É¼¨£º\n");
scanf("%d",&a);
if(90<=a&&a<=100) printf("A");
if(80<=a&&a<=89) printf("B");
if(70<=a&&a<=79) printf("C");
if(60<=a&&a<=69) printf("D");
if(0<=a&&a<=59) printf("E");

if(a>100||a<0) printf("ÊäÈëÊý¾Ý³ö´í");

getch();
}
switch:

#include<stdio.h>
main2()
{
int a;
printf("ÇëÊäÈë³É¼¨:\n");
scanf("%d",&a);
switch(a/10)
{
case 10:printf("A!\n");
break;
case 9:printf("A!\n");
break;
case 8:printf("B!\n");
break;
case 7:printf("C!\n");
break;
case 6:printf("D!\n");
break;
case 5:printf("E!\n");
break;
case 4:printf("E!\n");
break;
case 3:printf("E!\n");
break;
case 2:printf("E!\n");
break;
case 1:printf("E!\n");
break;
case 0:printf("E!\n");
break;
default:
printf("ÊäÈëÊý¾ÝÓдí\n") ;
}
getch();
}
還有你第一題是什麼意思呢

題目3 :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main
()
{
int a,g,s,b,q,w,x,p,x1,x2,x3,x4;
printf("ÇëÊäÈ룺\n");
scanf("%d",&a);
/*ÅжÏλÊý*/
if(a<0||100000<a) printf("Êý¾Ý³¬³ö·¶Î§£¡£¡£¡");
else if(a/10000!=0){ printf("5λÊý\n");p=5;}
else if(a/1000!=0){ printf("4λÊý\n");p=4;}
else if(a/100!=0) {printf("3λÊý\n"); p=3;}
else if(a/10!=0) {printf("2λÊý\n");p=2;}
else if(a/1!=0) {printf("1λÊý\n");p=1;}
/*·Ö±ð´òÓ¡³öÿһλÊý×Ö*/
w=a/10000;
printf("ÍòλΪ%d\n",w);
q=(a-w*10000)/1000;
printf("ǧλΪ%d\n",q);
b=(a-10000*w-1000*q)/100;
printf("°ÙλΪ%d\n",b);
s=(a-10000*w-1000*q-b*100)/10;
printf("ʮλΪ%d\n",s);
g=(a-w*10000-q*1000-b*100-10*s) ;
printf("¸÷λΪ%d\n",g);
/*°´ÄæÐò´òÓ¡³ö¸÷λÊý*/
if(p==5) {x=g*10000+s*1000+b*100+q*10+w; printf("µ¹ÐòÊýΪ%d\n:",x);}
else
if(p==4) {x1=g*1000+s*100+b*10+q; printf("µ¹ÐòÊýΪ%d\n:",x1); }
else
if(p==3) {x2=g*100+s*10+b; printf("µ¹ÐòÊýΪ%d\n:",x2);}
else
if(p==2) {x3=g*10+s; printf("µ¹ÐòÊýΪ%d\n:",x3);}
else
if(p==1) {x4=g; printf("µ¹ÐòÊýΪ%d\n:",x4);}

getch();
}

題目4:
#include <stdio.h>
#include <stdlib.h>
main()
{
int a[8],i,b,j,swap;
printf("ÇëÊäÈëÊý¾Ý£º\n");
for(i=0;i<8;i++) scanf("%d",&a[i]);
for(i=0;i<7;i++)
{
swap=0;
for(j=0;j<8-i-1;j++)
{
if(a[j]>a[j+1])
{
swap=1;
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
if(!swap) break;
}
for(i=0;i<8;i++) printf(" %d ",a[i]);
printf("\n");
getch();
}

『肆』 C語言實驗報告

我寫了個,不知道行不,有什麼不妥的請指出哈,如要格式請加我,將之發給你
四 川 大 學 計 算 機 學 院、軟 件 學 院
實 驗 報 告
學號: 姓名: 專業:計算機科學與技術 班級:5 第 13 周
課程名稱 c/C++ 實驗課時 2
實驗項目 字元串的復制與追加 實驗時間 08.5. 16
實驗目的 1.掌握字元串的基本操作和理解數據結構

實驗環境 VC 6.0
實驗內容(演算法、程序、步驟和方法) 先計算出S1和S2的字元個數,為S3分配好空間,利用已有庫函數先將S1復制到S3中,再將S2追加到S3中,當顯示完後要記住收回空間,做好善後處理。
源代碼如下:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char *s1="abcdef";
char *s2="123456f";
int n=strlen(s1)+strlen(s2);//計算s1,和s2的總長度n
char *s3=new char[n+1]; //定義S3並分配空間大小為n
strcpy(s3,s1); //將s1復制到s3中
strcat(s3,s2); //將s2追加到s3後面
cout<<"s3="<<s3<<endl;
delete []s3; //收回空間
s3=NULL; //將指針指向空
return 0;
}

(接上)
實驗內容(演算法、程序、步驟和方法)

結構是順序存儲結構,演算法順序鏈接法
數據記錄
和計算 數據有:字元串S1 ,S2;和一未知字元串S3
只需計算前兩個字元串長度之和

結 論
(結 果) 利用字元數組可以順序存儲字元數據,並且能夠順序處理數據;
演算法復雜度O(n+m);處於中性
小 結 字元數組能夠帶來很好的存儲結構,便於操作,但是演算法不是很好,只能順序遍歷數組,故復雜度不是很小
指導老師評 議

成績評定: 指導教師簽名:

『伍』 怎麼寫c語言綜合實驗設計報告

舉個樓主自己寫的例子吧,僅供參考。
c語言作業報告書
題 目:二次探測再散列法解決沖突建立哈希表並查找
完成時間:2012年5月31號
學 號:2011013290 姓名:聶亮兵 專業班級:信管112班
1. 實習任務與目的
實驗任務:獨立寫出哈希查找的相關代碼並畫出核心的演算法流程圖,記錄相關實驗數據,得出實驗結果。
試驗目的:通過兩者運行時間的對比,加深對哈希查找和順序查找各自優缺點的理解,並進一步熟悉哈希查找的原理和流程。
2. 實習內容及過程
實習內容:用除留余數法和二次探測再散列法解決沖突建立哈希表並查找,通過函數GetTickCount計算運行時間;再同樣計算順序查找的方法的查找時間。
實習過程:
查閱關於庫函數<windows.h>的相關內容,並熟悉函數GetTickCount()的用法。
規劃演算法流程,畫出主要函數的流程圖。具體流程是:讀入文件數據——順序查找——輸出結果——哈希查找——輸出結果。
對應流程寫出相關函數,完善主函數。
進行程序的運行和調試,修改一些不足和bug。
添上相關注釋。
運行程序進行實驗並得出實驗結果,記錄。
完成實驗報告。
3. 實驗結果分析
實驗結果:由於所給數據Data.txt數據量過小,實驗結果不明顯,兩種查找所耗時間均被系統默認為0;如圖所示為編號為37、1294、4091的三個數據元素:
分析:哈希查找的方法適用於數據在區間內隨機分布均並且量大的數據形式;而順序查找原理簡單,但是不適用於大量數據的查找。
4. 核心演算法流程圖

圖1:主函數流程圖

圖2:哈希查找流程圖
5. 實習總結及體會
這個實驗難度不大,但是需要自己高質量的獨立完成,對自己是一個總結歸納,能通過這個實驗清楚自己哪些地方平時沒有注意到,哪些地方是自己擅長並應該繼續保持的。
此外,本實驗的全過程能讓自己了解正式的程序、任務和報告等的完成流程。通過自己獨立完成這個實驗,再和標準的數據結構代碼比較,找出自己代碼的亮點、不足以及欠缺,讓自己明白哪些地方是自己想不到的,哪些方法是自己不能想到的,並以此學習好的編程思想和優秀的編程技巧和編程風格。
本次試驗中:
正式的程序代碼中,外部變數的使用要格外注意,不能隨意使用外部變數。但是本程序具有獨立性,不用與其他程序代碼相銜接,採用外部變數的方法,減少函數調用的時候的復制傳值的次數,提高效率。
正式的編程思想中,要有統一的命名方式。這包括兩個方面。其一是自己的命名規則要統一,不能亂。其二是與合作小組之間的命名規則要統一,提高代碼的可嵌入性。但是本實驗由自己獨立完成,命名規則按照自己的習慣而定,與課本命名規則有點出入。
二次探測再散列法解決沖突中,課本中沒有提到如果H(a)-m^2<0時的處理方法。本程序中採用的方法是取絕對值。二次探測再散列法中,再散列需要在循環中進行,直到找到位置e為止。這個過程中m需要進行兩種互斥變化:一種是 *-1 ;一種是 +1;再循環中不好實現。本程序中採用一個信號變數,每次循環自增1,奇偶數分別執行不同的變化。

『陸』 c語言綜合實驗報告 幫我弄一個

姓名 ***
**學 院 ** 專業 052 班
2007 年 11 月 24 日
實驗內容實驗五 指導老師 陳老師
一、實驗內容及要求:
編譯運行習題5-3,觀察x、y變數的值。
實現客戶機類(類名為CLIENT),其中包含的成員有:字元型靜態數據成員ServerName,用來保存伺服器名稱;整型靜態數據成員ClientNum,記錄已定義的客戶數量;靜態函數ChangeServerName(),用來改變伺服器名稱。在頭文件client.h中聲明這個類,在文件client.cpp中實現,在文件test.cpp中測試這個類,觀察相應的成員變數取值的變化情況。二、實驗目的:
1、復習類的聲明和使用、掌握對象的聲明和使用;
2、學習構造函數和析構函數的使用,觀察構造函數和析構函數的執行過程。
三、程序:
//client.h
class Client
{
public:
Client();
~Client();
static ChangeServerName(char *); //改變伺服器名稱
char * GetServerName(); //返回伺服器名稱
int GetClientNum (); //返回客戶機數量
protected:
static char ServerName[20]; //伺服器名稱
static int ClientNum; //存放伺服器數量
};
/////////////////////////////////////////////////////
//client.cpp
# include <iostream>
# include <cstring>
# include "client.h"
using namespace std;
static char *ServerName = "";
int Client::ClientNum = 0;
Client::Client()
{ClientNum ++;}

Client::~Client(){}

void Client::ChangeServerName(char * names) //改變伺服器名稱
{strcpy(ServerName,names);}

char * GetServerName() //返回伺服器名稱
{return ServerName;}

int GetClientNum () //返回伺服器數量
{return ClientNum;}
////////////////////////////////////////////////////////
//test.cpp
# include <iostream>
# include "client.cpp"
using namespace std;
void main() //用於測試的主函數
{
Client threeclient[3];
char namestr[20]; //臨時存放伺服器名稱
cout<<"定義了3個客戶"<<endl;
cout<<"請輸入新伺服器名稱:"<<endl;
cin>> namestr;
CC.ChangeServerName(namestr);
cout<<"伺服器的名稱是"<<Client::GetServerName()<<endl;
cout<<"客戶數量為"<<CC.GetClientNum ();

}

思考題:
(1)C語言有五種基本數據類型:字元、整型、單精度實型、雙精度實型和空類型。結構體可以定義自己所需特殊類型.其他類型是已經定義好,不可修改的,而結構體是根據自己的需要定義的特殊的類型.
(3)採用了循環,復合語句.

『柒』 C語言綜合實驗設計報告


題目: C語言輸出萬年歷

學院:

專業:

班級:

姓名:

設計日期:總分:

一、設計題目:

C語言輸出萬年歷

二、題目闡述及設計思路:

C語言輸出萬年歷,輸入年份、月份,計算得到的是這一天是星期幾;給定年,月,計算此月有多少天 。本程序運用的萬年歷的計算公式: d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c; 其中a為年c為該日期在本年中的天數,d取整數,當d/7餘數0時是星期天,余數1時是星期一依此類推。

三、主要知識點:

運用函數調用,if,else函數switch語句。for,while,循環語句。

四、程序清單:

#include <stdio.h>

int m_day(int year,int month)/*此函數是給定年,月,計算此月有多少天.*/

{

if ((year%4==0 &&year%100!=0) ?? (year%400==0))

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 29;

}

else

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 28;

}

}

int main()

{

int year,month;

int i, days=0, d, day=0;

printf ("Enter the year and month:\n");

scanf ("%d %d ", &year, &month );

for (i=1;i<month; i++)

days+=m_day (year,i);

d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+1;

printf("%d-%d\n",year,month);

printf(" Sun Mon Tue Wed Thu Fri Sat\n");

for (i=0;i<d%7;i++)

printf(" ");

for (i=1;i<=7-d%7;i++)

{

day++;

printf("%5d",day);

}

printf("\n");

while(1)

{

for (i=1;i<=7;i++)

{

day++;

if (day>m_day(year,month))

printf("%5d",day);

}

printf("\n");

}

}

五、設計結果說明:

1、設計優點:

程序充分利用所學的C語言知識,運用了函數的調用、循環語句、以及return語句,使得編程更加有條理。簡單易懂,結構清晰,也使得程序的使用更加方便。

2、設計不足:

在編程序時,由於考慮到時間和受所學知識的限制,只能輸入年份、月份,計算得到的是這一天是星期幾;給定年,月,計算此月有多少天 。而並不能輸入公歷的年月日,輸出農歷年月日以及輸入農歷節氣,輸出當年農歷的年月日及公歷年月日。

『捌』 C語言程序設計實驗報告完整版(可追加分)

舉手之勞,幫你寫了。
這里設定姓名長度不超過20字元。每個項目結束時,將其編號、類型符(區分取前3名還是前5名)輸入,並按名次順序輸入運動員姓名、學校和成績。程序已做改動,增加了一些代碼以提高程序的健壯性。本題完整的c程序如下,在win-tc和Dev-c++下調試通過,運行正確。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#define n 5 /*設定,可更改*/
#define m 3 /*設定,可更改*/
#define w 2 /*設定,可更改*/

struct achievement /* 定義表示成績的結構體 */
{int schoolnumber;/* 學校編號 */
char name[20]; /* 姓名 */
int mark; /* 分數 */
int result;};

struct pro /* 表示項目的結構體 */
{int tag;/* 項目編號 */
struct achievement ach[m+w];
int number;
};

struct Node
{struct pro date;
struct Node *next;
};

main()
{
int i,j,t;
int x[n]={0};int y[n]={0}; /* x[n]和y[n]分別表示男子和女子團體總分 */
struct Node *head;
struct Node *p;
struct Node *q;
if((head=(struct Node*)malloc(sizeof(struct Node)))==NULL) exit(1);
head->next=NULL; /* 初始化單鏈表 */
p=head;
for(i=0;i<m+w;i++) /* 輸入成績 */
{
j=i+1;
printf("請輸入第%d個項目的信息\n",j);
p->date.number=j;
printf("所取的名次數為:");
scanf("%d",&p->date.tag);
while(p->date.tag!=3&&p->date.tag!=5)
{ printf("輸入有誤,請重新輸入!");
getchar(); /*加入此函數避免輸入錯誤時程序進入無限循環*/
getchar();
printf("所取的名次數為:");
scanf("%d",&p->date.tag);
}
t=1;
while(t<=p->date.tag)
{
printf("第%d名的名字:",t);
scanf("%s",p->date.ach[t-1].name);
printf("第%d名的學校:",t);
scanf("%d",&p->date.ach[t-1].schoolnumber);
printf("第%d名的分數:",t);
scanf("%d",&p->date.ach[t-1].mark);
p->date.ach[t-1].result=t;
t++;
}
if(j!=m+w)/* 注意這里 */
{q=(struct Node*)malloc(sizeof(struct Node)); /* 生成新結點 */
p->next=q;
p=q;
p->next=NULL;
}
}
for(i=0;i<n;i++) /* 產生成績單 */
{
j=i+1;
printf("\n學校%d成績單:\n",j);
p=head;
while(p!=NULL)
{
t=1;
while(t<=p->date.tag)
{
if(p->date.ach[t-1].schoolnumber==j)
{
printf("獲獎項目:%d ",p->date.number);
printf("名次:%d ",p->date.ach[t-1].result);
printf("獲獎人姓名:%s ",p->date.ach[t-1].name);
printf("所得分數:%d \n",p->date.ach[t-1].mark);
if(p->date.number<=m)
x[i]=x[i]+p->date.ach[t-1].mark;
else
y[i]=y[i]+p->date.ach[t-1].mark;
}
t++;
}
p=p->next;
}
printf("\n男子團體總分:%d ",x[i]);
printf("女子團體總分:%d \n",y[i]);
printf("團體總分:%d\n",x[i]+y[i]);
}
for(i=0;i<m+w;i++) /*釋放申請的內存空間*/
{p=head->next;
free(head);
head=p;
}
getch();
}

『玖』 c語言程序設計實驗報告

五、 課程設計小結心得體會
1設計思想
1)、設定一個一維數組,可先按員工序號設定每位員工的工資
2)、利用While語句和Prinft語句完成用戶菜單的設計
功能為:第1項 設為員工編號和工資數據
第2項 設為修改員工工資數據
第3項 設為查詢員工工資數據
第4項 設為結束系統
3)、當用戶選擇1、2項時,需輸入員工編號,所以需要設計編號校正功能,如果出錯可輸出「The error employe number」
4)、當選擇2時,進行工資數據的修改,並將新數據存回該員工的工資數組中
5)、利用for循環中判斷語句,將用戶工資數與數組中的工資數進行比較,如相同則輸出,將計數器加1,如此下去,直到把整個數組遍歷一遍
6)、判斷計數器是否為0, 是0表示找不到相符的工資,如果不為0,則輸出共查出幾比相符的工資
以上當然裡面也涉及了「函數的模塊化」理念,可以避免但需要重復列印頭文件時重復編寫列印信頭的語句。像這樣的程序是多見的,這樣不但降低了程序還發效率,而且耗時浪費資源「共用體」的使用簡化了程序的「復雜」性,正如(4)中,學號與姓名同時表示一個人,但在函數使用了「共用體」,從而程序的簡單可以便於糾錯,查找問題,避免了代碼的重復,這樣就給編譯時帶來了一定的難度與「量」的繁雜。一般不採取這樣的做法,力求「簡單、明了、清晰」。