當前位置:首頁 » 編程語言 » c語言實驗報告2

c語言實驗報告2

發布時間: 2022-09-11 19:30:51

c語言先排序後折半查找程序的實驗報告

1實驗目的:熟練掌握一維數組,二維數組的定義,初始化和輸入輸出方法;熟練掌握與數組有關的常用演算法(如查找,排序等)。
2實驗內容:設定一個整形數組存放20個元素,用直接賦值的方法在程序中初始化該數組。先對這些無序的數據進行排序,然後採用折半查找,把要尋找的數的位置輸出出來。
3演算法描述流程圖

源程序:#include<stdio.h>
void main()
{int k,s,b,i,j,m,n,a[20]={12,9,16,21,6,11,19,4,8,20,15,2,5,18,14,7,3,10,13,17};
for(s=0;s<20;s++)
{
for(i=s+1;i<20;i++)
{
if(a[s]>a[i])
{
j=a[s];
a[s]=a[i];
a[i]=j;
}
}
}
scanf("%d",&b);
m=0;
n=19;
while(m<=n)
{
k=(m+n)/2;
if(b==a[k])
{
printf("FOUND\n");
printf("%d\n",k+1);
break;
}
else
{
if(b<a[k])
n=k-1;
else
m=k+1;
}
if(m>n)
printf("NO FOUND");
}
}

5測試數據:3,5, 20,30

6運行結果:FOUND 2;FOUND 4;FOUND 19 ;NO FOUND

7出現問題及解決方法:編譯時出錯,修改源程序,直到沒有錯誤為止

8實驗心得:通過折半查找,可以實現對數組數據的處理,並且增加了查找速度

❷ 咋寫C語言實驗報告

c(c++)上機實驗報告格式:

⒈ 實驗目的

(1) 了解在具體的語言環境下如何編輯、編譯、連接和運行一個 C 程序。

⑵ 通過運行簡單的 C 程序,初步了解 C 源程序的特點。

⑶ 掌握 C 語言數據類型,熟悉如何定義一個整型、字元型和實型的變數,以及對它們賦值的方法。

⑷ 掌握不同的類型數據之間賦值的規律。

⑸ 學會使用 C 的有關算術運算符,以及包含這些運算符的表達式,特別是自加(++)和自減(--)運算符的使用。

2.實驗內容和步驟

⑴ 檢查所用的計算機系統是否已安裝了 C 編譯系統並確定他所在的子目錄。

⑵ 進入所用的集成環境。

⑶ 熟悉集成環境的界面和有關菜單的使用方法。

⑷ 輸入並運行一個簡單的、正確的程序。

⒊ 實驗題目

⑴ 輸入下面的程序

# include 「stdio.h」 void main()

{ printf(「This is a c program. 」); }

❸ c語言實驗報告 求大神

1、

#include<stdio.h>
intmain(){
intyear;
scanf("%d",&year);
if(year%400==0||year%100!=0&&year%4==0)
printf("%d年是潤年 ",year);
else
printf("%d年不是潤年 ",year);
return0;
}

2、

#include<stdio.h>
intmain(){
intyear,month;
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d",&year,&month);
if(month!=2)
printf("該月一共%d天 ",monthOfDay[month]);
else{
if(year%400==0||year%100!=0&&year%4==0)
printf("該月一共%d天 ",monthOfDay[month]+1);
else
printf("該月一共%d天 ",monthOfDay[month]);
}
return0;
}

3、

#include<stdio.h>
intmain(){
intyear,month,op;
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("請選擇: ");
printf("1、判斷閏年 ");
printf("2、判斷某月多少天 ");
printf("輸入其他數字退出 ");
scanf("%d",&op);
if(op==1){
printf("請輸入年份:");
scanf("%d",&year);
if(year%400==0||year%100!=0&&year%4==0)
printf("%d年是潤年 ",year);
else
printf("%d年不是潤年 ",year);
}
elseif(op==2){
printf("請輸入年月,以空格分開(例如199311):");
scanf("%d%d",&year,&month);
if(month!=2)
printf("該月一共%d天 ",monthOfDay[month]);
else{
if(year%400==0||year%100!=0&&year%4==0)
printf("該月一共%d天 ",monthOfDay[month]+1);
else
printf("該月一共%d天 ",monthOfDay[month]);
}
}
else{
printf("退出啦! ");
}
return0;
}

4、我把上面幾個功能轉成函數了,否則代碼量有點大了。。

#include<stdio.h>
intisLeapYear(intyear);
intgetDayOfMonth(intyear,intmonth);

intmain(){
intyear,month,day;
intans=0,i;
printf("請輸入年月日,以空格分開(例如20151220):");
scanf("%d%d%d",&year,&month,&day);
ans+=day;
for(i=1;i<month;i++)
ans+=getDayOfMonth(year,i);
printf("這是%d年中的第%d天 ",year,ans);
return0;
}

intisLeapYear(intyear){
if(year%400==0||year%100!=0&&year%4==0)
return1;
return0;
}

intgetDayOfMonth(intyear,intmonth){
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month!=2)
returnmonthOfDay[month];
returnmonthOfDay[month]+isLeapYear(year);
}

5、用函數跑還是比較方便的

#include<stdio.h>
#include<windows.h>
intisLeapYear(intyear);
intgetDayOfMonth(intyear,intmonth);
intgetDayOdYearFormData(intyear,intmonth,intday);
intmain(){
intyear,month,day,op;
intans=0,i;
while(1){
printf("請選擇: ");
printf("1、判斷閏年 ");
printf("2、計算某月多少天 ");
printf("3、計算某日是一年中的第幾天 ");
printf("輸入其他數字退出 ");
scanf("%d",&op);
if(op==1){
printf("請輸入年份:");
scanf("%d",&year);
if(isLeapYear(year)==1)
printf("%d年是潤年 ",year);
else
printf("%d年不是潤年 ",year);
}
elseif(op==2){
printf("請輸入年月,以空格分開(例如199311):");
scanf("%d%d",&year,&month);
printf("該月一共%d天 ",getDayOfMonth(year,month));
}
elseif(op==3){
printf("請輸入年月日,以空格分開(例如20151220):");
scanf("%d%d%d",&year,&month,&day);
printf("這是%d年中的第%d天 ",year,getDayOdYearFormData(year,month,day));
}
else{
printf("退出啦! ");
system("pause");
break;
}
system("pause");
}
return0;
}

intisLeapYear(intyear){
if(year%400==0||year%100!=0&&year%4==0)
return1;
return0;
}

intgetDayOfMonth(intyear,intmonth){
intmonthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(month!=2)
returnmonthOfDay[month];
returnmonthOfDay[month]+isLeapYear(year);
}

intgetDayOdYearFormData(intyear,intmonth,intday){
inti,ans=0;
ans+=day;
for(i=1;i<month;i++)
ans+=getDayOfMonth(year,i);
returnans;
}

6、

#include<stdio.h>
intmain(){
inti,j;
for(i=0;i<5;i++){
for(j=0;j<4-i;j++)
printf("");
for(j=0;j<2*i+1;j++)
printf("*");
printf(" ");
}
return0;
}

❹ C語言程序設計實驗報告怎麼寫啊

通過本試驗初步培養計算機邏輯解題能力。熟練掌握賦值語句和if語句的應用;掌握switch多路分支語句和if嵌套語句的使用

❺ 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語言實驗報告怎麼寫

#include <stdio.h>


int main()

{

unsigned long a;

char c;

printf("Input a binary number: ");

for(a=0;(c=getchar())!=' ';)

a=a*2+c-'0';

printf("The number is %lu in decimal ",a);

printf("The number is %lo in octal ",a);

printf("The number is %lX in Hexadecimal ",a);

return 0;

}

❼ C語言實驗報告總結

你只需要按那個模版就行,那些內容就改成你的作業
班級: 學號: 姓名:
實驗9 指針

一、實驗目的

(1)掌握指針概念,並定義與使用它。

(2)使用數組的指針和指向數組的指針變數。

(3)使用字元串的指針和指向字元串的指針變數。

二、實驗內容

1. 將一個3*3的矩陣轉置,用函數實現。

2. 有n個人圍成一圈,順序排號。從第一個人開始報數(1~3),凡報到3的人退出,問第幾號的人能留下。

三、實驗環境

硬體:(1)學生用微機

(2)多媒體實驗教室

軟體:(1)Windows XP 中文操作系統

(2)VC++ 6.0

四、實驗結果

程序1:

#include<stdio.h>

void main()

{

void move(int *pointer);

int a[3][3],*p,i;

printf("input marix:\n");

for(i=0;i<3;i++)

scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

move(p);

printf("matrix:\n");

for(i=0;i<3;i++)

printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);

}

void move(int *pointer)

{

int i,j,t;

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{

t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

程序2:

#include<stdio.h>

void main()

{

int i,k,m,n,num[50],*p;

printf("input num of person:");

scanf("%d",&n);

p=num;

for(i=0;i<n;i++)

*(p+i)=i+1;

i=0;

k=0;

m=0;

while(m<n-1)

{

if(*(p+i)!=0)k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n)i=0;

}

while(*p==0)p++;

printf("the last num is %d\n",*p);

}

結果1:(就是程序運行之後出現的框,截圖後粘貼這里)

結果2:

五、總結:

通過這個實驗的學習, 基本掌握了指針的基本用法。

❽ 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)中,學號與姓名同時表示一個人,但在函數使用了「共用體」,從而程序的簡單可以便於糾錯,查找問題,避免了代碼的重復,這樣就給編譯時帶來了一定的難度與「量」的繁雜。一般不採取這樣的做法,力求「簡單、明了、清晰」。

熱點內容
網路登錄伺服器需要獲取什麼信息 發布:2025-01-12 12:17:32 瀏覽:890
mac終端打開文件夾 發布:2025-01-12 12:17:31 瀏覽:295
第一次安裝如何設置mysql密碼 發布:2025-01-12 12:09:02 瀏覽:280
如何刪除微信伺服器上收藏 發布:2025-01-12 12:08:20 瀏覽:102
吃雞游戲安卓區轉蘋果區怎麼轉 發布:2025-01-12 11:34:00 瀏覽:880
網頁版c語言 發布:2025-01-12 11:21:01 瀏覽:864
安卓怎麼更改排位常用英雄 發布:2025-01-12 11:10:33 瀏覽:561
拆遷的100萬如何配置 發布:2025-01-12 11:08:52 瀏覽:575
如何配置ph值為次氯酸鈉的ph值 發布:2025-01-12 11:08:52 瀏覽:437
pythonarraynumpy 發布:2025-01-12 11:01:47 瀏覽:293