当前位置:文档之家› c语言程序设计案例教程_实验项目-设计性题目参考答案[1]1

c语言程序设计案例教程_实验项目-设计性题目参考答案[1]1

c语言程序设计案例教程_实验项目-设计性题目参考答案[1]1
c语言程序设计案例教程_实验项目-设计性题目参考答案[1]1

C语言程序设计案例教程(含实验)

设计性实验的程序参考答案

实验项目一 C程序的编辑、编译、连接和运行

题目:编写程序,要求屏幕上显示如下信息:

***********************

* This is a C program .*

***********************

程序:

#include

void main()

{

printf(“***********************”);

printf(“* This is a C program .*”);

printf(“***********************”);

}

实验项目二数据类型、运算符、表达式

题目

(1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。

填空

1.double x,root;

2.root=sqrt(x);

(2)输入一个大写英文字母,输出相应的小写字母。

填空

1.ch=ch+32;

实验项目三顺序结构程序设计

题目

(1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。

程序代码:

#include

#include

main()

{

float a,b,c,s,arer;

printf(" 请输入三角形的三个边a,b,c:\n");

scanf("%f,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("三角形的边为a=%7.2f, b=57.2f, c=%7.2f\n",a,b,c);

printf("三角形的面积area=%7.2\n ",area);

(2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

程序代码:

#include

main()

{

float h,r,l,s,sq,vq,vz;

float pi=3.1415926;

printf(" 请输入圆半径 r,圆柱高 h: ");

scanf("%f,%f",&r,&h);

l=2*pi*r;

s=r*r*pi;

sq=4*pi*r*r;

vq=4.0/3.0*pi*r*r?*r;

vz=pi*r*r*h;

printf("圆周长为:l=%6.2f\n",l);

printf("圆面积为:s=%6.2f\n",s);

printf("圆球表面积为:sq=%6.2f\n",sq);

printf("圆球体积为:vq=%6.2f\n",vq) ;

printf("圆柱体积为:vz=%6.2\n ",vz);

(3)分别用getchar函数和scanf函数读入2个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。

程序代码:

#include

main()

{

char c1,c2;

printf(" 请输入两个字符 c1,c2:");

c1=getchar();

c2=getchar();

printf("用putchar语句输出结果为:");

putchar(c1);

putchar(c2);

printf("用printf语句输出结果为:");

printf("%c %c\n",c1,c2);

}

实验项目四分支结构程序设计

题目

(1)程序填空。输入四个整数,输出其中的最小值。

填空:

min=a;

if(b

else if(c

else if(d

(2)计算如下函数Y的值。

X (X<1)

{Y=

2X-1 (1≤X<10)

3X-11 (X>=10)

程序代码:

#include

main()

{

int x,y;

printf(" 请输入x:");

scanf("%d",&x);

if(x<1) y=x;

else if(x<10) y=2*x-1;

else y=3*x-11;

printf("x=%d,y=%d",x,y);

}

(3)给出一个百分制成绩,输出对应的等级分。共分A、B、C、D、E五个等级。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。要求分别用if语句和switch 语句实现。

程序代码:

①用if-else 语句实现:

#include

main()

{

int g;

Loop: printf(" 请输入g:");

scanf("%d",&g);

if(g<0||g>100) goto Loop;

if(g>90) printf("A");

sele if(g>80) printf("B");

else if(g>70) printf("C");

else if(g>60) printf("D");

else printf("E");

}

②用switch 语句实现:

#include

main()

{

int g;

Loop: printf(" 请输入g:");

scanf("%d",&g);

if(g<0||g>100) goto Loop;

switch(g/10)

{

case 10:

case 9: printf("A");

case 8: printf("B");

case 7: printf("C");

case 6: printf("D");

default:printf("E");

}

}

(4)编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。

奖金税率

a<500 0.00

500≤a<1000 0.05

1000≤a<2000 0.08

2000≤a<5000 0.10

5000≤a 0.15

提示:a=奖金数rate=税率值 tax=应缴税款 profit=实得奖金数。

计算公式: tax = a* rate , profit= a – tax

程序代码:

#include

main()

{

float a,rate,tax,profit;

scanf("%f ",&a);

if(a<500) rate=0.0;

else if (a<1000) rate=0.05;

else if (a<2000) rate=0.08;

else if (a<5000) rate=0.1;

else rate=0.15;

tax= a*rate;

profit=a-tax;

printf(" rate=%10.2f,tax=%10.2f, profit=%10.2f\n", rate, tax, profit);

}

实验项目五循环结构程序设计

题目

(1)猴子吃桃子。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃时,只剩下一个桃子。问第一天共摘多少个桃子?(要求使用While循环语句实现)。

算法提示

设 total:桃子的总数

x1 :前一天的桃子数

x2 : 后一天的桃子数

day:天数

计算公式: x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。

程序代码:

#include

void main()

{

int x1,x2,day,total;

day=9;

x2=1;

while(day>0)

{ x1=(x2+1)*2;

x2=x1;

day=day-1;

}

Total=x1;

printf(" total=%d\n", x1);

}

(2)求200—300之间的素数。

程序代码:

#include

void main()

{

int m,n,flag;

printf("\n The primers from 200 to 300 is: \n");

for(n=201;n<300;n+=2)

{ flag=1;

for(m=2;m<=n/2;m++)

if(n/m==0)

{ flag=0;

break;

}

if(flag==0)

continue;

printf("%d ",n);

}

printf("\n");

}

(3)程序填空

①求1-1/2+1/3-1/4+??,输入1 个正整数n(n<=100),计算并输出1-1/2+1/3

-1/4+??的前n 项和(保留3 位小数)。

程序代码:

#include

void main( )

{

int i, n, flag;

float sum;

scanf("%d", &n);

/*----以下为所填语句------*/

sum=0;

flag=1;

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

{ sum+=flag*1.0/i;

flag=-flag;

}

printf("%.3f\n", sum);

}

②统计字符。输入一个正整数repeat (0

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。程序代码:

#include

void main( )

{

int ri, repeat;

int blank, digit, letter, other;

char c;

scanf("%d", &repeat);

getchar();

for(ri=1; ri<=repeat; ri++)

{

c = getchar();

/*----以下为所填语句------*/

blank=digit=letter=other=0;

while(c!='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++;

else if(c>='0'&&c<='9') digit++;

else if(c==' ') blank++;

else other++;

c = getchar();

}

printf("letter=%d, blank=%d, digit=%d, other=%d\n", letter, blank, digit, other);

}

}

③找最大值。输入一个正整数repeat (0

输入 4个整数

输出其中的最大值。

例:输入

3 (repeat=3)

12 6 1 90

10 40 30 20

-1 -3 -4 -5

输出

max is 90 (12 6 1 90 中的最大值是90)

max is 40 (10 40 30 20 中的最大值是40)

max is -1 (-1 -3 -4 -5 中的最大值是-1)

程序代码:

#include

void main( )

{

int ri, repeat;

int a, b, c, d, max;

scanf("%d", &repeat);

/*----以下为所填语句------*/

for(ri=1; ri<=repeat; ri++)

{

scanf("%d%d%d%d", &a, &b, &c, &d);

/*----以下为所填语句------*/

max=a;

if(max

if(max

if(max

printf("max is %d\n", max);

}

}

(4)编写程序:输出“九九乘法表”。

程序代码:

#include

void main()

{

int i,j;

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

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

{

if(i==j) printf("\n");

printf("%d*%d= %d ",i, j, i*j);

}

}

实验项目六函数及其应用

题目

(1)程序填空。计算代数多项式1.1+2.2x+3.3x2+4.4x3+5.5x4的值。

例:输入

1.5

输出

54.52

程序代码:

#include

float f(float);

void main()

{

float x,y;

scanf(“%f”,&x);

/*----以下为所填语句------*/

y=f(x);

printf("%.2f\n",y);

}

/*----以下为所填语句------*/

float f(float x)

{

float sum=0,t=1;

int i;

for(i=1;i<=5;i++){

sum+=(i+1.0*i/10)*t;

t*=x;

}

return sum;

}

(2)编写程序,求 s=1!+2!+3!+....+10!之和。要求定义递归函数fact(n)求n!,程序的输出形式为:1!+2!+3!+4+5!+6!+7!+8!+9!+10! = s,其中,s为求和值。

实验提示

求n!的递归公式为:

1 (n=0、n=1)

fact(n)=

fact(n)=n*fact(n-1) (n>1)

注意:s 和fas(n)均为长整型。!

程序代码:

#include

void main()

{ long int fas(int);

int i, m;

long int s=0;

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

{ m=fas(i);

s=s+m;

print(“%d!+”,i);

} print(“\b=%d\n”,s);

}

long int fas(int x)

{

if (x==0||x==1)

return(1);

else

return(x*fas(x-1));

}

(3)编写程序,N名裁判给某歌手打分(假定分数都为整数)。评分原则是去掉一个最高分,去掉一个最低分,剩下的分数取平均值为歌手的最终得分。裁判给分的范围是:

60 <= 分数〈=100,裁判人数N=10。要求:每个裁判的分数由键盘输入。

实验提示

定义两个函数:

●max():返回两个数中较大的值;

●min():返回两个数中较小的值。

程序代码:

#include

Int m=0;n=100;

void main()

{ int i,x,sum;

sum=0;

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

{

LOOP: scanf(“%d”,&x) ;

if(x<60||x>100)

goto LOOP;

m=max(x,m);

n= min(x,n);

sum=sum+x;

}

print(“%d”,(sum-m-n)/8);

}

int max (int x)

{

if (x>m) m=x;

return(m);

}

int min (int x)

{

if (x

return(n);

}

(4)编写程序,用递归法将一个十进制整数转换成二进制数。

程序代码:

#include

void DtoB(int n);

void main()

{

int n;

scanf("%d",&n);

printf("%d-----)",n);

DtoB(n);

printf("\n");

}

void DtoB(int n)

{

if(n)

{

DtoB(n/2);

printf("%d",n%2);

}

}

实验项目七数组及其应用

题目

(1)程序填空。

①求n个数中较大值及其下标。输入一个正整数n (1

程序代码:

#include

void main( )

{

int ri, repeat;

int i, index, n;

int a[10];

scanf("%d", &repeat);

for(ri=1; ri<=repeat; ri++){

scanf("%d", &n);

for(i=0; i

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

/*----以下为所填语句------*/

index=0;

for(i=1; i

if( a[index]

printf("max=%d,index=%d\n", a[index],index);

}

}

②逆序输出。输入一个正整数repeat (0

输入一个正整数n (1

程序代码:

#include

void main( )

{

int ri, repeat;

int i, n, temp;

int a[10];

scanf("%d", &repeat);

for(ri=1; ri<=repeat; ri++){

scanf("%d", &n);

for(i=0; i

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

/*----以下为所填语句------*/

for(i=0; i

{

temp=a[i];

a[i]=a[n-1-i];

a[n-1-i]=temp;

}

for(i=0; i

printf("%d ", a[i]);

printf("\n");

}

}

③找鞍点(选作)。

输入1 个正整数n(1≤n≤6)和n 阶方阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a 最多有1 个鞍点)。

程序代码:

#include "stdio.h"

void main( )

{

int ri,repeat;

int flag,i,j,k,row,col,n,a[6][6];

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&n);

for(i=0; i

for(j=0; j

scanf("%d",&a[i][j]);

/*----以下为所填语句------*/

for(i=0; i

{

row=i;col=0;

for(j=1; j

if(a[row][col]

col=j;

flag=1;

for(k=0; k

if(a[row][col]>a[k][col])

{ flag=0;

break;}

if(flag)

{

printf("a[%d][%d]=%d\n", row, col,a[row][col]);

break;

}

}

if(!flag)

printf("NO\n");

}

}

(2)有10个数存放在一个数组中,先对该10个数从大到小排序,然后输入一个数,要求找出该数是数组中第几个元素的值,若找不到,输出未找到信息。

实验提示

①用冒泡或者选择排序法对数组中的10个数进行排序;

②用折半查找的方法在数组中查找指定的数。

程序代码:

#include

#define N 11

#include

#define N 11

void sort(int a[N]) /* 排序*/

{ int i,j,min,temp;

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

{ min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j])

min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

}

void main()

{ int i,j,x,a[N];

void badd( int,int[],int);

printf("Enter data:\n");

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

{ printf("a[%d]=",i);

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

}

printf(" \n");

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

printf("%5d",a[i]);

printf(" \n");

sort(a);

printf("\n The sorted numbers: \n");

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

printf("%5d",a[i]); printf("\n");

scanf("%d",&x);

badd(x,a,N); /* zheban find x */

}

void badd (int x,int a[] ,int n)

{ int mid,top,bot;

top=0;

bot=n-1;

while(top<=bot)

{ mid=(top+bot)/2;

if(x==a[mid])

{ printf("\n%d=a[%3d ]\n",x,mid-1);

exit(0);

}

else if( x>mid)

top=mid+1;

else bot=mid-1;

}

printf("\n can`t find %d ! ",x);

}

(3)/**/统计6个学生各4门功课的成绩。要求程序具有如下功能:

①每个学生的4门功课的成绩从键盘读入;

②计算每个学生的总分和平均分;

③按平均成绩进行排序,输出排序后的成绩单(四门功课的成绩和均分),给出名次。

如先输入学生4门课成绩:

1: 67,72,65,80

2: 75,82,94,95

3: 70,74,80,76

4:......

程序代码:

#include

main()

{

int i,j,k,t,s,a[7][7];

for(i=1;i<=6;i++) a[i][0]=i; /*输入序号*/

for(j=1;j<=6;j++)

{ t=0;

for(k=1;k<=4;k++)

{ scanf("%d",&a[j][k]); /*输入成绩*/

t=t+a[j][k]; /*计算总成绩*/

}

a[j][6]=t/4; /*计算平均成绩存入第6列*/

a[j][5]=t; /*总平均成绩存入第5列*/

printf("\n");

}

for(j=1;j<=6;j++)

{ for(k=0;k<=6;k++)

printf("%d ",a[j][k]); /*输出序号及成绩*/

printf("\n");

}

for(j=1;j<=5;j++)

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

if (a[i][6]

for(k=0;k<=6;k++) /*按平均成绩大小进行两行数据交换*/

{ s=a[i][k];

a[i][k]=a[i+1][k];

a[i+1][k]=s;

}

printf(" NO: c1 C2 C3 C4 TOLA AVE\n");

for(j=1;j<=6;j++) /*输出排序后的成绩*/

{ for(k=0;k<=6;k++)

printf("%4d",a[j][k]);

printf("\n");

}

}

实验项目八指针及其应用

题目

(1)编写函数int search(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。

实验提示

①在数组list中查找元素x可以用单循环,采用顺序查找的方法实现;

②注意控制循环语句的执行。

程序代码:

int search(int list[],int n,int x)

{

int i,*p;

for(i=0,p=list; p

if(*p==x)

return i;

if(p>=list+n)

return -1;

}

(2)编写函数,用指针实现把字符串1中第m个字符开始的所有字符复制成字符串2。

实验提示

①编写函数void substrcpy(char *,int ,char *)将字符串1中第m个字符开始的所有字符复制成字符串2。

②在主函数中:

输入m,将字符串1输入到一维字符数组str1;

●调用substrcpy函数;

●输出字符串2。

程序代码:

#include

#define m 20

main()

{ int m;

char *str1[m]}, *str2[m];

printf(“input string: “);

gets(str1);

printf(“ input the number: “);

scanf(“%d”,&m);

if (strlen(str1)

printf(“ input error !“);

else

{ substrcpy(str1,str2, m);

printf(“ the result is :%s“,str2);

}

}

viod substrcpy(char *p1, char *p2 ,int m)

{

int n=0;

while(n

{ n++;

p1++;

}

while(*p1!=’\0’)

{ *p2=*p1;

P1++;

P2++;

}

*p2=’\0’;

}

(3)编写一个函数,将数组中n个整数按逆序存放。

实验提示

①编写函数void invert(int *,int)将n个数按反序存放。方法为:将a[0]与a[n-1]对换,a[1]与a[n-2]对换,直到将a[(n-①/2]与a[n-int((n-1)/2)]对换。

②在主函数中:

●输入n,并将n个数输入到一维数组a;

●要求用指向函数的指针调用invert函数;

输出数组a。

程序代码1:

#include

#define N 10

main()

{int invert(int x[]);

int i,a[N];

int(*p)();

p=invert;

for(i=0;i

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

for(i=0;i

printf("%4d",a[i]);

printf("\n");

(*p)(a);

for(i=0;i

printf("%4d",a[i]);

printf("\n");

}

invert(int x[])

{int i,n,temp;

for(i=0;i<(N-1)/2;i++) {temp=x[i];

x[i]=x[N-i-1];

x[N-i-1]=temp;

}

printf("\n");

for(i=0;i

printf("%4d",x[i]);

}

程序代码2:

#include

#define N 10

void main ( )

{ int invert(int x[]);

int i, a[10] ;

int (*p)() ;

p=invert;

for (i=0;i

scanf("%d",&a[i]); for (i=0;i

(*p)(a) ;

}

int invert ( int x[ ]);

{ int i,temp;

for (i=0;i<=(N-1);i++)

{ temp=x[i] ;

x[i] = x[N-i-1]

x[N-i-1]= temp;

}

printf("\n");

for (i=0;i

printf("%4d",a[i]);

}

实验项目九结构体及应用

题目

(1)程序填空。猴子选王问题:一群编号是1,2,3 ...m 的猴子(m个)按照1-m的顺序围坐一圈,从第1开始数数,每数到n(n

实验提示

输入数据是m和n两个整数,其中n1,输出是最后为王的猴子编号。猴子选王的过程实际上可描述成以下操作:

①建立一个单循环链表,每个结点的数据域依次存放的是猴子编号(模拟m个猴子围坐成一圈);

②从链表的第一个结点开始顺着后继指针依次访问到第n个结点的前驱,将第n个结点从链表中删除(模拟猴子报数和猴子出列);

③再从被删结点的后继结点开始,重复②中的猴子报数和出列过程,直到链表中只剩下一个结点为止,剩下的这个结点中的编号即为猴王的编号。

程序代码:

#include

#include

typedef struct clink

{

int no;

struct clink *next;

}clink;

void creat(clink **head,int m)

/*用尾插法建立长度为m的单循环链表head,并通过形参返回值head*/

{

int i;

clink *p,*q;

/*指针p用来指向新生成的结点,指针q用来指向当前链表的尾结点*/ *head=(clink *)malloc(sizeof(clink)); /*生成链表中的第一个结点*/

(*head)->no=1;

q=*head; /*使q指向当前链表的尾结点*/

for(i=2;i<=m;i++) {

/*----以下为所填语句------*/

p=(clink *)malloc(sizeof(clink));

p->no=i;

q->next=p;

q=p;

}

q->next=*head; /*使尾结点的后继指针指向链表的第一个结点从而形成循环链表*/ }

void number(clink **head,clink **p,int n)

/*从指针p指向的结点开始报数,报到n的结点删除,并将链表的头指针和下一轮开始报数的位置p值返回*/

{

int i;

clink *q;

for(i=2;inext,i++); /*指针p指向报数为n的前驱结点*/

/*----以下为所填语句------*/

q=(*p)->next;

if (q= =(*head)) /*如果被删的结点是head所指向的结点则要修改head值*/ *head=q->next;

free(q);

/*----以下为所填语句------*/ /*使p指针指向下一轮开始报数的结点位置*/

(*p)->next=(*p)->next->next;

*p=(*p)->next;

}

void main()

{

int m,n;

clink *head=NULL,*p;

printf("please enter int m&n(m>n&&n>1):");

scanf("%d%d",&m,&n);

creat(&head,m);

p=head; /*指针p用于指示当前开始报数的位置*/

while(head->next!=head) /*循环到链表中只有一个结点为止*/

number(&head,&p,n);

printf("Monkey king is %d\n",head->no);

}

(2)编程,建立一个链表,并删除某个结点。链表中的每个结点包括:学号,姓名,性别,年龄。输入一个学生的年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

要求

①编写函数,输入5个学生的数据。

②编写函数,找出符合年龄条件的学生数据并将此结点删去。

实验提示

①采用结构体及其指针编程;

②建立一个单链表。用循环语句输入5个学生的有关信息;

③采用顺序比较查找;

④最后输出单链表中的信息。

程序代码:

#include

#include

struct student

{

int num;

char name[10];

char sex;

int age;

struct student *next;

};

struct student * createlink( )

/* 用尾插法建立一个带头结点的链表head */

{

int i;

struct student *head,*p,*q;

head=(struct student *)malloc(sizeof(struct student)); head->next=NULL;

q=head;/*q为尾指针,始终指向表尾结点*/

for(i=1;i<=5;i++){

p=(struct student *)malloc(sizeof(struct student));

printf("input num ,name,sex and age:\n");

scanf("%d",&p->num);getchar();

gets(p->name);

p->sex=getchar();

scanf("%d",&p->age);

q->next=p;

q=p; /*q指向新的表尾结点*/

}

q->next=NULL;

return head;

}

void dellink(struct student *head,int age)

{

struct student *p,*q;

p=head;

while(p->next){

q=p->next;

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

CSS页面布局及样式设计实验报告

实验项目名称: CSS页面布局及样式设计 (所属课程:web系统与技术) 学院:计算机学院专业班级:11级计科信息姓名:学号: 实验日期:实验地点:A06-404 合作者:指导教师:李 本实验项目成绩:教师签字:日期: 一、实验目的 (1)掌握CSS中的定位属性使用方法。 (2)掌握DIV+CSS的页面布局方式。 (3)掌握CSS中的常用属性的使用方法。 (4)理解CSS的样式构造。 二、实验条件 安装Web开发环境的微机。 三、实验内容 (1)重新对聊天室的注册页面、登陆页面和聊天页面进行页面布局。 (1)对聊天室的注册页面、登陆页面和聊天页面进行样式设计。 四、实验步骤 (1)注册页面使用CSS将注册表单居中显示,表单内嵌入表格将文本与输入域格式化显示,表单内使用label标签。 (2)登录页面中添加div层用于显示在线用户数。 (3)登录页面使用div将登录表单,在线用户数,logo图片,超链接等页面元素重新定位布局。 (4)聊天页面改用div标签并使用CSS的position定位属性进行布局,框架内的独立页面使用float属性进行布局。 (5)使用CSS设置三个页面的背景颜色或背景图片。 (6)注册页面使用CSS设计所有输入框和提交按钮的样式。 (7)登录页面使用CSS设置的超链接的字体和下划线、登录表单使用圆顶角、在线用户数使用图片数字,使用CSS设计登录按钮的显示样式。

(8)聊天页面中使用CSS设计信息发送表单和发送按钮的样式,设计用户信息列表和聊天信息段落的的显示样式。 五、实验结果 注册界面效果图及代码: //总体框架 //添加图片代码 //用户注册信息代码

注册信息

用户姓名:

用户密码:



--> 姓    别:

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.doczj.com/doc/e518985059.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

设计性实验报告格式

大学物理设计性实验报告 实验项目名称:万用表设计与组装实验仪 姓名:李双阳学号:131409138 专业:数学与应用数学班级:1314091 指导教师:_王朝勇王新练 上课时间:2010 年12 月 6 日

一、实验设计方案 实验名称:万能表的设计与组装试验仪 实验时间:2010年12月6日 小组合作: 是 小组成员:孙超群 1. 实验目的:掌握数字万用表的工作原理、组成和特性。 2. 掌握数字万用表的校准和使用。 3. 掌握多量程数字万用表分压、分流电路计算和连接;学会设计制作、使用多量程数字万用表 2、实验地点及仪器、设备和材料: 万用表设计与组装实验仪、标准数字万用表。 3、实验思路(实验原理、数据处理方法及实验步骤等): 1. 直流电压测量电路 在数字电压表头前面加一级分压电路(分压电阻),可以扩展直流电压测量的量程。 数字万用表的直流电压档分压电路如图一所示,它能在不降低输入阻抗的情况下,达到准确的分压效果。 例如:其中200 V 档的分压比为: 001.010*********==+++++M K R R R R R R R 其余各档的分压比分别为: 档位 200mV 2V 20V 200V 2000V 分压比 1 0.1 0.01 0.001 0.0001 图一 实用分压器电路 实际设计时是根据各档的分压比和总电阻来确定各分压电阻的,如先确定 M R R R R R R 1054321=++++=总 再计算200V 档的电阻:K R R R 10001.021==+总,依次可计算出3R 、4R 、5R 等各档的分压电阻值。换量程时,多刀量程转换开关可以根据档位调整小数点的位置,使用者可方便地直读出测量结果。 尽管上述最高量程档的理论量程是2000V ,但通常的数字万用表出于耐压和安全考虑,规定最高电压量限为1000V 或750V 。

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

设计性实验报告

计算机与信息工程学院设计性实验报告 一、 实验目的 1.掌握线性时不变系统的两种描述形式—传递函数描述法、零极点增益描述法。 2.掌握两种描述形式之间的转换。 3.掌握连续和离散系统频率响应的求解 二、 实验仪器或设备 装MATLAB 软件的计算机一台。 三、 实验内容 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波形。 2. 生成占空比为30%的矩形波。 3. 将连续系统 4)(s )21)(s (s 3) 1)(s -(s 0.5H(s)++++=转化为传递函数模型的描述形式。 4. 将离散系统 4-3-2-1--2 -10.5z 0.9z -1.3z 1.6z -12z 5z 3H(z)++++=转化为传递函数和零极点增益模型的的描述形式。

四、实验步骤(包括主要步骤、代码分析等) 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波 形。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令,关闭图形窗口 t=-10:9; %取20个点 ft1=(t==0); %单位脉冲信号函数 ft2=(t>=0); %单位阶跃信号函数 subplot(1,2,1),stem(t,ft1,'m-o') %图像窗口1行2列的第1个子图绘制单位脉冲信号图形 title('20个点的单位脉冲信号'); %设置标题为“20个点的单位脉冲信号” subplot(1,2,2),stem(t,ft2) %图像窗口1行2列的第2个子图绘制单位阶跃信号图形 title('20个点的单位阶跃信号'); %设置标题为“20个点的单位阶跃信号” 2. 生成占空比为30%的矩形波。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令 x=0:0.001:0.6; %设置变量x的值范围 y=square(2*pi*10*x,30); %用square函数得到占空比为30%的矩形波 plot(x,y,'m'); %绘制矩形波的图像

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

相关主题
文本预览
相关文档 最新文档