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