實驗一 熟悉Turbo C的編程環境
一:目的要求
1.熟悉Turbo C的編程環境;
2.知道程序編輯、鏈接、執行的基本步驟;
3.學習如何查錯并修改程序;
4.上機前預習編寫好程序 。
二:實驗內容與步驟
調試以下兩個程序
/* The first C Program*/
#include <stdio.h>
void main()
{
printf(“Hello,World!n”);
}
#include <stdio.h>
void main()
{
int a, b, sum;
a = 123;
b = 456;
sum = a + b;
printf(“sum is %dn”, sum);
}
調試通過后,自己修改程序,使程序出錯,并讀懂錯誤提示,進行修改 。
實驗二 數據輸入輸出格式的程序設計
一.目的要求
1.進一步熟悉調試程序的方法;
2.熟練掌握格式輸入與格式輸出函數的使用 。
3.掌握字符與ASCⅡ值之間的轉換方法 。

文章插圖
編輯
添加圖片注釋,不超過 140 字(可選)
4.上機前預習編寫好程序;

文章插圖
?
編輯
添加圖片注釋,不超過 140 字(可選)

文章插圖
?
編輯
添加圖片注釋,不超過 140 字(可選)
四、利用接口庫函數dos.h的調用
1.類型定義結構類型struct date.d;
2.getdate(&d);
3.printf(“%d/%d/%d”,d.da_year, d.da_mon, d.da_day) 。
五、程序提示:
#include<conio.h>
#include<dos.h>
main()
{
char c1;
struct date d;
clrscr();
getdate(&d);
···.
···
···
getch(); 暫停等待輸入任意字符(或按鍵)
}
解答:
#include<stdio.h>
#include<conio.h>
#include<dos.h>
main()
{
char c1;
struct date d;
clrscr();
getdate(&d);
printf(“tt%d/%d/%d”,d.da_year, d.da_mon, d.da_day);
printf(“n* * * * * * * * * * * * *n”);
printf(“* Menu *n”);
printf(“* 1.Input *n”);
printf(“* 2.Output *n”);
printf(“* 3.End *n”);
printf(“* * * * * * * * * * * * *n”);
printf(” Enter Number=> n”);
printf(” Ch=———-> “);
gotoxy(20,8);
c1=getch();
gotoxy(20,8);
putchar(c1);
gotoxy(9,9);
putchar(c1);
gotoxy(20,9);
printf(“%d”,c1);
}
實驗三 選擇結構程序設計
一:目的要求
1.熟悉用關系運行與邏輯運行符的應用;
2.掌握if語句與switch語句的使用;
3.上機前按實驗要求預習編寫出完整的程序,才允許上機 。
二:實驗內容與步驟
1. 在書店買書,以100本為限 。如果買 1 本不打折扣 ;買2本打折10%; 買3本折扣為 15 %,買3本以上折扣為 20 % 。設書本數為 x,單價為 20.00元 。
請使用else if多分支結構或if嵌套結構設計實現該算法的C程序 。
2. 從鍵盤上輸入一個百分制成績score,按下列原則輸出其等級:score≥90,等級為A;80≤score<90,等級為B;70≤score<80,等級為C;60≤score<70,等級為D;score<60,等級為E 。
請使用switch 語句實現上述功能 。
(提示:將成績整除10,把score轉變為處于1~10之間的整數,從而轉化成switch語句中的case標號)
三:選做實驗
實驗指導書56頁第二章選擇結構的任意實驗
解答:
一、
#include<conio.h>
#include<stdio.h>
main()
{
int n;
float x,y;
clrscr();
printf(“Please Enter The Number:”);
gotoxy(25,1);
scanf(“%d”,&n);
x=20.00;
y=0;
if (n<0)
printf(“Sorry,you put the wrong number!”);
else if (n==0)
printf(“Please buy at least 1 book!”);
else if (n==1)
{ y=x;
printf(“——You should pay:%.2f”,y*n);
}
else if (n==2)
{ y=x*0.9;
printf(“——You should pay:%.2f”,y*n);
}
else if (n==3)
{ y=x*0.85;
printf(“——You should pay:%.2f”,y*n);
}
else if (n<=100)
{ y=x*0.8;
printf(“——You should pay:%.2f”,y*n);
}
else if (n>100)
printf(“Sorry,you can buy less then 100 books.”);
}
二、
#include<stdio.h>
#include<conio.h>
main()
{
int t;
float n;
clrscr();
printf(“Please Enter The Score:”);
gotoxy(24,1);
scanf(“%f”,&n);
t=n/10;
if (n<0)
printf(“Please Write The Right Score!”);
else if (n>100)
printf(“Is He A God?”);
else
switch(t)
{
case 10:printf(“A+”);break;
case 9:printf(“A”);break;
case 8:printf(“B”);break;
case 7:printf(“C”);break;
case 6:printf(“D”);break;
default:printf(“E”);break;
}
}
實驗四 循環控制
一:目的要求
1.熟悉用while語句,do-while 語句和for語句實現循環的方法;
2.掌握在程序設計中用循環方法實現各種算法;
3.掌握計算程序運行所占機時的計算方法;
4.上機前按實驗要求預習編寫出完整的程序,才允許上機 。
二:實驗內容與步驟
目標:100匹馬馱100擔貨;
假設:大馬一匹馱3擔,中馬一匹馱2擔,小馬兩匹馱一擔;
組合方法1:大馬、中馬、小馬每種不能少于一匹;
組合方法2:對馬匹種類無限制,可以缺少一種或缺二種
問題: 1. 采用組合方法1,用while求解,輸出所有組合法,輸出組合的總數?
2.采用2種組合,用do-while求解,輸出所有組合法,輸出組合的總數?
3.采用2種組合,用三重或二重for循環求解,輸出所有組合法,輸出組合的總數?
4.除打印結果和多少種組合法外,還要分別打印三種算法所費機時 。
提示:計算一種算法所占機時的程序提示:
#include <time.h>
#include <conio.h>
#include <dos.h>
main()
{
clock_t start,end; /* time_t start,end;*/
int i,big,middle,small,ncount;
clrscr();
start=clock(); /* start = time();*/
big=1; middle=1; small=2;
ncount=0;
printf(“This a while programn”);
while (big<=33)
{
.
}
end=clock(); /* end = time();*/
printf(“The num of method1 is: %dn”,ncount);
printf(“and the time is: %5.1f timen”,difftime(end,start));
/*printf f(“”The difference is :%5.1f secondn”, difftime(end,start)/18.2);*/
……}
解答:
一、
#include <time.h>
#include <conio.h>
#include <dos.h>
main()
{
clock_t start,end; /* time_t start,end;*/
int i,big,middle,small,ncount,n;
clrscr();
start=clock(); /* start = time();*/
big=1; middle=1; small=2,i=0,n=0;
ncount=0;
printf(“This a while programn”);
while (big<=33)
{
for(small=2;small<=100;small=small+2)
for(middle=1;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if (n==100 && i==100)
{
printf(“Big=%d,Middle=%d,Small=%d,n=%d,i=%dn”,big,middle,small,n,i);
ncount++;
}
}
big++;
/*
printf(“n=%d “,n);
printf(“big=%d small=%d middle=%d “,big,small,middle);
printf(“n”);*/
}
end=clock();
printf(“The num of method1 is: %dn”,ncount);
printf(“and the time is: %5.1f timen”,difftime(end,start));
}
二、
#include <time.h>
#include <conio.h>
#include <dos.h>
main()
{
clock_t start,end; /* time_t start,end;*/
int i,big,middle,small,ncount,n;
clrscr();
start=clock(); /* start = time();*/
big=0; middle=0; small=0,i=0,n=0;
ncount=0;
printf(“This a while programn”);
do
{
for(small=0;small<=100;small=small+2)
for(middle=0;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if (n==100 && i==100)
{
printf(“Big=%d,Middle=%d,Small=%d,n=%d,i=%dn”,big,middle,small,n,i);
ncount++;
}
}
big++;
/*
printf(“n=%d “,n);
printf(“big=%d small=%d middle=%d “,big,small,middle);
printf(“n”);*/
}
while(big<=34);
end=clock();
printf(“The num of method1 is: %dn”,ncount);
printf(“and the time is: %5.1f timen”,difftime(end,start));
}
三、
#include <time.h>
#include <conio.h>
#include <dos.h>
main()
{
clock_t start,end; /* time_t start,end;*/
int i,big,middle,small,ncount,n;
clrscr();
start=clock(); /* start = time();*/
big=0; middle=0; small=0,i=0,n=0;
ncount=0;
printf(“This a while programn”);
for(big=0;big<=34;big++)
{
for(small=0;small<=100;small=small+2)
for(middle=0;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if (n==100 && i==100)
{
printf(“Big=%d,Middle=%d,Small=%d,n=%d,i=%dn”,big,middle,small,n,i);
ncount++;
}
}
/*
printf(“n=%d “,n);
printf(“big=%d small=%d middle=%d “,big,small,middle);
printf(“n”);*/
}
end=clock();
printf(“The num of method1 is: %dn”,ncount);
printf(“and the time is: %5.1f timen”,difftime(end,start));
}
實驗五 函數
一、 目的要求
1. 掌握函數的定義和調用方法;
2. 掌握函數實參與行參的對應關系的,以及“值傳遞”的方式;
3. 掌握求最大公約數和最小公倍數的方法;
4. 按實驗內容要求完成全程程序設計后才允許上機 。
二、 實驗內容與步驟
1. 設計一個函數f,求二個數的最大公約數int f(int x,int y);
2. 設計一個函數g,求二個數的最小公倍數int g(int x,int y);
3. 從鍵盤輸入三個浮點數,求三個數中最大數和最小數的差值 。
三、 函數的定義要求
在main( )中實現下列操作
1. a=inNumber( );
2. b= inNumber( );
3. c=f(a,b);
4. d=g(a,b);
5. 輸出a,b,c,d 。
解答:
一、
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c,d;
clrscr();
a=inNumber();
b=inNumber();
c=f(a,b);
d=g(a,b);
printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);
}
int f(int x,int y)
{
int i,t,a;
float p1,p2;
if (x>=y)
t=y;
else
t=x;
for (i=1;i<=t;i++)
{
p1=x%i;
p2=y%i;
if (p1==0 && p2==0)
{
a=i;
}
}
return a;
}
int g(int x,int y)
{
int i,t,p1,p2,a;
if (x>=y)
t=x;
else
t=y;
for (i=t;i<=(x*y);i++)
{
p1=i%x;
p2=i%y;
if (p1==0 && p2==0)
{
a=i;break;
}
}
return a;
}
int inNumber(int x)
{
int a;
a=0;
while (a==0)
{
scanf(“%d”,&x);
if (x>0)
a=1;
else
{
printf(“Wrong!n”);
a=0;
}
};
return x;
}
二、
#include<stdio.h>
void main()
{
float a[3],x,y;
int i,j;
clrscr();
for (i=0;i<3;i++)
scanf(“%f”,&a[i]);
for (i=0;i<3;i++)
for (j=0;j<2;j++)
if (a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
y=a[2]-a[0];
printf(“ny=Max{a[i]}-Min{a[i]}:nt%.3fnt(%f)”,y,y);
}
實驗六 數組
一、 目的要求
1. 掌握數組的定義、賦值和輸入輸出的方法;
2. 掌握清屏函數clrscr()的調用方法;
3. 掌握產生隨機數函數randomize()的初始化及調用方法;
4. 上機前按實驗要求預習,完成全部程序設計后才允許上機 。
二、 實驗內容與步驟
已知二維數組a[5][5],完成下列要求
(1) 輸入數據
a[i][j]=random(100); /*產生100以內隨機數*/
(2) 顯示數組各元素,要求整齊排列;
(3) 將第1與第5行對調后,再顯示之;
(4) 求出每行元素的最大值,并指出其行號和列號 。
三、 輸入隨機數的要求
#include <stdlib.h>
#define RMAX 5
#define cMAX 5
#define nMAX 100
main()
{ . /*變量初始化說明*/
.
clrscr(); /*調清屏函數清屏*/
randomize(); /*在初始化后調用產生隨機數函數*/
.
.
a[i][j]=random(nMAX);
.
.
.
}
解答:
#include <stdlib.h>
#define RMAX 5
#define cMAX 5
#define nMAX 100
main()
{
int a[5][5],i,j,temp[1][5],t,max,x,y;/*定義變量為整型(我的程序里面有些定義的變量沒用,懶得刪除了)*/
clrscr();/*清屏*/
randomize();/*在初始化后調用產生隨機數函數*/
for (i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(nMAX);/*給數組a[i][j]賦隨機值*/
for (i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf(“%dt”,a[i][j]);/*輸出數組a[i][j]*/
printf(“n”);/*在輸出完一行后自動換行(不理解的話可以暫時刪掉這句話,然后運行程序看結果)*/
}
for(j=0;j<5;j++)/*這個循環是用于換行的*/
{
temp[0][j]=a[0][j];/*將數組a的第一行的每個值都賦予temp(這里的temp是一個1*5的數組)*/
a[0][j]=a[4][j];/*將數組a的第一行的每個值替換成第五行的值*/
a[4][j]=temp[0][j];/*將數組a的第五行的每個值替換成temp的值*/
}
printf(“n”);/*輸出一個回車*/
for (i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf(“%dt”,a[i][j]);/*將換行后的新數組a輸出出來*/
printf(“n”);/*在輸出完每一行后自動換行*/
}
for (i=0;i<5;i++)
{
max=a[i][0];/*定義一個最大值變量max,令其暫時等于第i行的第一個數*/
for (j=0;j<5;j++)/*讓max和該行的所以數比較,如果有某個數大于max,max變為該數的值*/
if (a[i][j]>max)
{
max=a[i][j];
}
for (j=0;j<5;j++)/*令max和第i行的每個數進行比較,輸出所有等于max的數及該數的坐標*/
if(max==a[i][j])
printf(“na[%d][%d]=%d”,i,j,max);
}
}
實驗七 指針
一、 目的要求
1. 掌握指針的定義和使用指針變量;
2. 學會使用字符串的指針和指向數組的指針變量;
3. 學會使用指向函數的指針變量;
4. 按實驗內容要求完成全程程序設計后才允許上機 。
二、 實驗內容與步驟
設計一個函數,它有三個形參
(1) 被查找的字符串str;
(2) 待查找的字符xCh;
(3) 在字符串str中xCh出現的位置i=0,1,…
它的返回值是在str中xCh 出現的次數(若str中無xCh,則返回值=0)
三、 上機要求
1、 鍵入待查的字符xCh;
2、 鍵入被查的字符串str;
3、 調用該函數;
4、 打印它的返回值和出現的位置;
5、 允許重復執行,每次以清屏開始(用循環語句控制重復執行) 。
四、 提示
xCh在str出現位置應設計為一整型指針,以便記下0~N個位置(整數) 。
#include<stdio.h>
void main()
{
char temp;
int run(),j;
int (*prun)();
temp=’Y’;
while(temp!=’N’||temp!=’n’)
{
if(temp==’Y’||temp==’y’)
{
prun=run;
j=(*prun)();
if (j==0)
{
printf(“Can Not Find The xCh! j=%d”,j);
}
else
{
printf(“nj=%d”,j);
}
printf(“nParden>Y/N:”);
fflush(stdin);
temp=getch();
}
if(temp==’N’||temp==’n’)
break;
if(temp!=’Y’&&temp!=’y’)
{
printf(“Wrong!You can only put Y(N) or y(n)nPlease put again(Y/N):”);
fflush(stdin);
temp=getch();
}
}
}
int run (char xCh,char str[100],int i)
{
int j;
char *p;
clrscr();
printf(“xCh=”);
xCh=getch();
printf(“%cnstr=”,xCh);
gets(str);
p=&str[0];
i=0;
j=0;
while(*p)
{
if (*p==xCh)
{
j++;
printf(“xCh :%dt”,i);
}
p=p+1;
i++;
}
return j;
}
Mian()版:
#include<stdio.h>
void main()
{
int i,j;
char xCh,str[100],*p,temp;
temp=’Y’;/*給temp賦初值Y,防止第一個while循環無法運行*/
while(temp!=’N’||temp!=’n’)/*如果temp不等于n或N時,進行循環*/
{
if(temp==’Y’||temp==’y’)/*當temp為y或Y時,進行下列循環,用于進行題目要求的操作*/
{
clrscr();/*清屏*/
printf(“xCh=”);/*在屏幕輸出提示xCh=*/
xCh=getch();/*從屏幕讀取一個字符賦給xCh(getch()和getchar()的區別:前者只要輸入一個字符就結束輸入過程,后者需要按回車或空格后才結束輸入過程)*/
printf(“%cnstr=”,xCh);/*在屏幕xCh=后面輸出剛才輸入的xCh的值,并提示用戶輸入str(因為我們用getch(),輸入完字符后會自動結束xCh的輸入進入下一指令的執行(在本題中,下一指令是:printf(“%cnstr=”,xCh);),而不在屏幕輸出剛才輸入的字符)【不理解的話把該句改成{printf(“nstr=”);}看看輸出結果就知道了】*/
gets(str);/*輸入str*/
p=&str[0];/*將指針地址指向str這個字符串的首字符位置*/
i=0;
j=0;
while(*p)/*當p所指向的字符不為空字符時,進行判斷循環*/
{
if (*p==xCh)/*當p所指向的字符為所需尋找的xCh時,進行以下操作*/
{
i++;/*i自加1,用于累計str中xCh的數目*/
printf(“xCh :%dt”,j);/*輸出xCh在str中出現的位置*/
}
p=p+1;/*指針地址移向str的下個字符*/
j++;/*j用于記錄此時p的位置,在str中第一個字符時=0,第二個時=1,以此類推*/
}
if (i==0)/*當str中沒有xCh這個字符時,i=0*/
{
printf(“Can Not Find The xCh! i=%d”,i);/*在屏幕中提示無法找到str中的xCh,并輸出i=0*/
}
else
{
printf(“ni=%d”,i);/*n為換行*/
}
printf(“nParden>Y/N:”);
fflush(stdin);/*清空計算機緩存*/
temp=getch();/*從屏幕中讀取一個字符賦給temp*/
}
if(temp==’N’||temp==’n’)/*當temp為N或n時*/
break;/*跳出循環*/
if(temp!=’Y’&&temp!=’y’)/*當輸入的temp不為Y、y、N、n時*/
{
printf(“Wrong!You can only put Y(N) or y(n)nPlease put again(Y/N):”);
fflush(stdin);
temp=getch();
}
}
}
/*fflush(stdin)*/
實驗八 結構體與共用體
一、 目的要求
1、 掌握結構體類型變量與數組的定義和使用;
2、 學會使用指針變量和結構體指針數組;
3、 按實驗內容要求完成全程程序設計后才允許上機 。
二、 實驗內容與步驟
1. 設計一個結構
struct student {
long no; /*學號*/
char name[10]; /*姓名*/
char sex; /*性別*/
int age; /*年齡*/
float score; /*平均成績*/
}
2. 完成下列任務:
(1) 輸入實際學生人數n (2<n<4);
(2) 輸入每個學生的信息,組成結構數組,并輸出;
(3) 統計男、女生人數并輸出;
(4) 計算全班平均成績并輸出;
(5) 將低于全班平均成績的學生信息按行輸出
三、 上機要求
1. 可劃分為若干個函數,或寫成一個main( );
2. 要求輸出格式有提示及相應數據 。
#include<stdio.h>
struct student
{
long no; /*學號*/
char name[10]; /*姓名*/
char sex; /*性別(gender)*/
int age; /*年齡*/
float score; /*平均成績*/
}s[3];
void main()
{
int i,n,t,m,na;
float av,sum;
float temp;
clrscr();
m=0;
sum=0;
printf(“The number of the studens:”);
scanf(“%d”,&n);
printf(“n”);
for(i=0;i<n;i++)
{
printf(“nNo.”);
scanf(“%ld”,&s[i].no);
printf(“nName:”);
na=0;
while(na==0)
{
scanf(“%s”,&s[i].name);
if(strlen(s[i].name)>10)
printf(“Wrong!You can only put 10 characters!nName:”);
else
na=1;
}
printf(“nGender:(W/M)”);
t=0;
while(t==0)
{
scanf(“%s”,&s[i].sex);
if(s[i].sex!=’W’&&s[i].sex!=’w’&&s[i].sex!=’m’&&s[i].sex!=’M’)
printf(“Wrong!nGender:”);
else
t=1;
}
if(s[i].sex==’m’||s[i].sex==’M’)
m++;
printf(“nAge:”);
scanf(“%d”,&s[i].age);
printf(“nScore:”);
scanf(“%f”,&temp);
s[i].score=temp;
}
for(i=0;i<n;i++)
{
sum=sum+s[i].score;
printf(“nNo.%ldnName:%snGender:%cnAge:%dnScore:%.2f”,s[i].no,s[i].name,s[i].sex,s[i].age,s[i].score);
}
av=sum/n;
printf(“nThe number of girl(s):%dnThe number of boy(s):%dn”,n-m,m);
printf(“nThe average of the score is:%.2f”,av);
for(i=0;i<n;i++)
{
if (s[i].score<=av)
【Turbo C的編程環境 c語言中clrscr是什么】printf(“nNo.%ld; Name:%s; Gender:%c; Age:%d; Score:%.2f”,s[i].no,s[i].name,s[i].sex,s[i].age,s[i].score);
- 栩栩如生、如魚得水、如坐針氈、勢如破竹、巧舌如簧、影隨形、江 四字詞語中有表示好像意思的詞
- 中國茶葉領導品牌大益茶業出產量最大的青餅 大益七子餅茶7542什么意思
- 1平方千米大約是140個正規足球場的面積 一平方千米有多大舉例
- 梭子蟹是常見的一種可食用蛙類,其個體碩大,肉質細膩,味道鮮美 梭子蟹和牛蛙哪個熱量高
- 鼎力扶持、鼎力相助、八方支援、傾囊相助 表達全力支持的成語
- 人會因愛著人而變得軟弱,但這不可恥,因為那不是真正的軟弱 蒙面超人甲斗王天道總司的口頭禪
- 意大利著名導演帕索里尼的電影生命三部曲 如何評價帕索里尼的生命三部曲
- 可以的,自制水培營養液的方法 養花營養液可以自制嗎
- 《原神》元素傷害加成的意思 原神元素傷害加成是什么意思
- “拳拳之情”形容誠懇、深切的情誼 拳拳之情是什么意思
