当前位置:文档之家› C_上机实验答案

C_上机实验答案

L a b3R e p e t i t i o n S t r u c t u r e

⒈从500开始,求被3、5、7除余数均为2的前

50个数。

void main()

{

int i,j;

j=500,i=1;

for(;j>=500&&i<=50;j++)

{

if(j%3==2&&j%5==2&&j%7==2)

{

printf("%d",j);

i++;

printf(" ");

}

}

}

⒉打印形状为正方形和直角三角形的乘法九九表。void main()

{

int i,j,a;

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

{

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

{

a=j*i;

printf("%d*%d=%-3d",a);

printf(" ");

}

printf("\n");

}

}

#include

void main()

{

int i,j,k,a;

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

{

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

{

a=j*i;

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

printf(" ");

}

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

{

printf(" ");

}

printf("\n");

}

}

⒊由键盘输入一个正整数,判断它是否为素数(只

能被1和自身整除的数)。

void main()

{

int num,n;

printf("enter a number");

scanf("%d",&num);

for(n=2;n<=num-1;n++)

{

if(num%n==0)

{

printf("not a prime number");

break;

}

}

if(n==num)

printf("prime number");

}

⒋按下面的近似公式计算常量e的值,e的计算公式如下:

e=1+1/1!+1/2!+1/3!+……+1/n!

由键盘输入误差δ,当最后一个子项1/n!的值小

于δ时,计算结束。

void main()

{

int i=1;

float a,sum=1,n=1;

printf("enter a:\n");

scanf("%f",&a);

for(;1/n>=`a;i++)

{

sum=sum+1/n;

n=n*i;

}

printf("sum=%f",sum);

}

#include

void main()

{

int i=1;

float x,e=1,t=1;

printf("enter x:\n");

scanf("%f",&x);

while(1/t>=x)

{ e=e+1/t;

i++;

t=t*i;

}

printf("e=%f",e);

}

⒌百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两个小马驮1担。问有大、中、小马各多少匹?

#include

void main()

{

int i,j;

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

{

for(j=0;j<(100-i*3)/2+1;j++)

if((100-i-j)%2==0 && 3*i+2*j+(100-i-j)/2==100)

printf("%d %d %d\n",i,j,100-i-j);

}

}_

⒍编写程序输出以下的图形:

1

2 3

4 5 6

7 8 9 10

void main()

{

int i,j,k,a=1;

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

{

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

printf(" ");

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

{

printf("%d",a);

printf(" ");

a++;

}

printf("\n");

}

}

L a b4F u n c t i o n(P a r tⅠ)

⒈求m!/(n!*(m-n)!) 的值。要求:求某个数的阶层必须用自定义的函数实现。

#include

int fl(int x,int y,int z);

void main()

{

int m,n,k;

printf("enter m and n:\n");

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

k=fl(m,n,m-n );

printf("%d",k);

}

int fl(int x,int y,int z)

{

int a=1,b=1,c=1,i,j;

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

a=a*i;

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

b=b*i;

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

c=c*i;

j=a/(b*c);

return(j);

}

⒉用二分法求下面方程2x3-4x2+3x-6=0的根,要求误差小于10-5。

#include

#include

float root(float x1,float x2);

float f(float x);

void main()

{

float x1,x2,f1,f2,x;

do

{

printf("enter x1 and x2:\n");

scanf("%f,%f",&x1,&x2);

f1=f(x1);

f2=f(x2);

}

while(f1*f2>0);

x=root(x1,x2);

printf("x=%f\n",x);

}

float f(float x)

{

float y;

y=2*x*x*x-4*x*x+3*x-6;

return(y);

}

float root(float x1,float x2)

{

float x0,f0,f1,f2;

do

{

x0=(x1+x2)/2;

f0=f(x0);

if((f0*f(x1))<0)

{

x2=x0;

f2=f0;

}

else

{

x1=x0;

f1=f0;

}

}

while(fabs(f0)>=1e-5);

return(x0);

}

⒊随机产生50个200至500之间的整数,输出所有的整数,判断每个整数是否为素数;若是素数,则在输出整数时,用*标记。要求每行输出10个数。要求:判断一个整数是否为素数,必须用自定义的函数实现。

#include

#include

#include

void prime(int x);

void main()

{

int m,i;

srand(time(NULL));

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

{

m=200+(rand()%301);

prime(m);

if(i%10==0)

printf("\n");

}

}

void prime(int x)

{

int j;

for(j=2;j<=x-1;j++)

{

if(x%j==0)

break;

}

if(j==x)

printf("*%d*",x);

else

printf(" %d ",x);

}

⒋通过输入两个加数给学生出一道加法运算题,如

果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct. You have tried three times!

Test over!”程序结束。

#include

int add_judgement(int,int,int );

void main()

{

int i=1,x,y,z,flag=0;

printf("Plese chuti\n");

scanf("%d+%d",&x,&y);

printf("please input z:\n");

while(i<=3)

{ scanf("%d",&z);

flag=add_judgement(x,y,z);

if(flag==1)

{ printf("Right\n");

break;}

else

{ if(i<=2)

printf("Not,correct.Try again!\n");

printf("Please input z:\n");

i++; }

}

if(i>3)

printf("Not correct.You have tried three times!Test over!");

}

int add_judgement(int a,int b,int c)

{

int flag;

if(c==a+b)

f lag=1;

else

f lag=0;

return flag;

}_

⒌输入两个正整数,求其最大公约数和最小公倍数。要求:求最小公约数必须用自定义的函数实现。

此题答案略

L a b5F u n c t i o n(P a r tⅡ)

编程计算X n(要求:用递归函数)。

#include

long fac(int x,int y);

void main()

{

int x,n;

long y;

printf("enter x and n:\n");

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

y=fac(x,n);

printf("%ld\n",y);

}

long fac(int x,int y)

{

long a;

if(y==1)

a=x;

else

a=fac(x,y-1)*x;

return(a);

}

⒉编程计算Ackermann函数Ack(m,n)(要求:用递归函数)。

对于m≥0,n ≥0,Ack(m,n)定义如下:

Ack(0,n)=n+1

Ack(m,0)= Ack(m-1,1)

Ack(m,n)= Ack((m-1), Ack(m,n-1)) #include

int Ack(int m,int n);

void main()

{

int m,n,a;

printf("enter m and n:\n");

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

a=Ack(m,n);

printf("Ack=%d",a);

}

int Ack(int m,int n)

{

int b;

if(m==0&&n>0)

b=n+1;

else

if(m>0&&n==0)

b=Ack(m-1,1);

else

if(m>0&&n>0)

b=Ack((m-1),Ack(m,n-1));

return(b);

}

L a b6A r r a y(P a r tⅠ)

⒈产生1000—5000之间的100个随机整数,找出其中的素数,用冒泡法对找出的素数进行排序。请将产生的随机数、找出的素数和排序后的素数分别输出。

#include

#include

#include

#define SIZE 100

int prime(int x);

void sorting(int a[],int n);

void main( )

{

int a[SIZE],b[SIZE],i,j=0;

srand(time(NULL));

printf("\nthe rand numbers is:\n");

for(i=0;i

{

a[i]=1000+(rand()%4001);

if(i%10==0)

printf("\n");

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

}

printf("\nthe prime array:\n");

for(i=0;i

if(prime(a[i])==1)

{

b[j]=a[i];

if(j%10==0)

printf("\n");

printf("%5d",b[j]);

j++;

}

printf("\nthe new array:\n");

sorting(b,j);

for(i=0;i

{

if(i%10==0)

printf("\n");

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

}

}

int prime(int x)

for(i=2;i<=x-1;i++)

{

if(x%i==0)

break;

}

if(i==x)

return 1;

}

void sorting(int a[],int n)

{

int i,j,t;

for(j=0;j

{

for(i=0;i

if(a[i]>a[i+1])

{

t=a[i];

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

a[i+1]=t;

}

}

}

⒉有一个按非递增排列好的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。

#include

#define SIZE 11

void insertdata(int a[SIZE]);

void main( )

{

int array[SIZE],i;

printf("\ninput 10 numbers:\n");

for(i=0;i

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

printf("\n input a number:\n ");

insertdata(array);

printf("\n new array is:\n");

for(i=0;i

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

}

void insertdata(int a[SIZE]) {

int num,i,j;

scanf("%d",&num);

if(num

a[10]=num;

else

{

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

if(a[i]

{

for(j=9;j>=i;j--)

a[j+1]=a[j];

a[i]=num;

break;

}

}

}

⒊计算以下整数的标准差和平均值。

-6, -12, 8, 13, 11, 6, 7, 2, -6, -9, -10, 11, 10, 9, 2 其中,标准差的计算公式为:

()

n

x

x

i

2

-

#include

#include

#define SIZE 15

void average(int array[SIZE]);

void main( )

{

int array[SIZE],i;

printf("\ninput 15 numbers:\n");

for(i=0;i

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

printf("\n the average and SD :\n"); average(array);

}

void average(int array[SIZE])

{

float aver_i,SD,sum,i,a=0;

for(i=0;i

sum=sum+array[i];

aver_i=sum/SIZE;

printf("%f\n",aver_i);

for(i=0;i

a=a+pow(array[i]-aver_i,2);

SD=sqrt(a)/SIZE;

printf("%f\n",SD);

}

⒋某班级有100个学生,现选举班长,有5个候选人,请统计每个候选人的票数,并用冒泡排序法对票数进行排序。

#include

#include

#include

#define SIZE 100

void sorting(int a[]);

void main( )

{

int a[SIZE],b[5]={0},i,j;

srand(time(NULL));

printf("\nthe 100 votes are:\n");

for(i=0;i

{

a[i]=1+rand()%5;

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

if((i+1)%10==0)

printf("\n");

}

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

b[a[i]-1]++;

printf("\nthe five peoples tickt:\n");

sorting(b);

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

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

}

void sorting(int a[])

{

int i,j,t;

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

for(j=0;j<5-i;j++)

if(a[i]>a[i+1])

{

t=a[i];

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

a[i+1]=t;

}

}

⒌任意输入10个数,求这个10个数中最大的间隔值(即是最大值与最小值的差)。要求:若需要排序,必须用选择法排序。

#include

#define SIZE 10

void sorting(int array[]);

void main( )

{

int a[SIZE],max,i;

printf("\ninput 10 numbers:\n");

for(i=0;i

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

printf("\nthe ten numbers sorting:\n");

sorting(a);

for(i=0;i

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

max=a[SIZE-1]-a[0];

printf("\nthe max distance:\n");

printf("%d",max);

}

void sorting(int array[])

{

int i,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

if(array[j]

k=j;

t=array[k];

array[k]=array[i];

array[i]=t;

}

}

⒍约瑟夫问题。M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时此人出圈,直到圈中只剩下一个人为止。请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。

#include

#define SIZE 50

void leaving (int num[]);

int nmax;

void main( )

{

int num[SIZE],i;

printf("\nplease input number:\n");

scanf("%d",&nmax);

for(i=0;i

num[i]=i+1;

leaving(num);

}

void leaving(int num[])

{

int N,i=0,k=0,m=0;

printf("\ninput N:\n");

scanf("%d",&N);

while(m

{

if(num[i]!=0)

k++;

if(k==N)

{

printf("\nthe number of leaving personel:\n");

printf("%d",i+1);

num[i]=0;

k=0;

m++;

}

i++;

if(i==nmax)

i=0;

}

i=0;

while(num[i]==0)

i++;

printf("\nthe last of%d personis %d",nmax,num[i]);

}

L a b7A r r a y(P a r tⅡ)

⒈假设有一个数组,存放着10个数,现输入一个数,用顺序查找法找出该数是数组中第几个元素。如果该数不在数组中,则打印“无此数”。

#include

#define SIZE 10

void element(int a[]);

void main()

{

int a[SIZE],i;

printf("\ninput ten numbers:\n");

for(i=0;i

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

element(a);

}

void element(int a[])

{

int i,col,num,flag=0;

printf("\ninput a number:\n");

scanf("%d",&num);

for(i=0;i

if(a[i]==num)

{

col=i+1;

flag=1;

printf("In array,the number is %d element",col);

break;

}

if(flag==0)

printf("\nthe number is not in the array\n");

}_

⒉用递推法打印杨辉三角形(提示:利用二维数组)。

#include

#define SIZE 10

void array(int a[]);

void main( )

{

int i,j,a[SIZE][SIZE];

for(i=0;i

a[i][0]=a[i][i]=1;

for(i=2;i

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

printf("\nthe yanghui strangle:\n");

array(a);

}

void array(int a[][SIZE])

{

int i,j;

for(i=0;i

{ for(j=0;j

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

printf("\n");

}

}

⒊找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

#include

#define M 5

#define N 4

int fun(int a[][N],int m,int n);

void main()

{

int i,j,a[M][N];

printf("\nPlease input numbers:\n");

for(i=0;i

for(j=0;j

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

fun(a,M,N);

}

int fun(int a[][N],int m,int n)

{

int i,j,k,max,flag=0,colun;

for(i=0;i

{ max=a[i][0];

colun=0;

for(j=0;j

if(a[i][j]>max)

{ max=a[i][j];

colun=j; }

flag=1;

for(k=0;k

if(max>a[k][colun])

{ flag=0;continue; }

if(flag==1)

{ printf("The point a[%d][%d]=%d\n",i,colun,max);

break; }

}

if(flag==0)

printf("It is not in the array!\n");

⒋编程找出一个二维数组中值最大和值最小的元素,并告知所在行号和列号。

#include

#define A 3

#define B 4

void max(int a[][B]);

void min(int a[][B]);

void main()

{

int

a[A][B]={{1,5,6,9},{4,8,10,13},{20,24,18,17}};

max(a);

min(a);

}

void max(int a[][B])

{

int i,j,max;

max=a[0][0];

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

for(j=0;j<4;j++)

if(a[i][j]>max)

max=a[i][j];

printf("max=%d,row=%d,colun=%d\n",max,i,j);

}

void min(int a[][B])

{

int i,j,min;

min=a[0][0];

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

for(j=0;j<4;j++)

if(a[i][j]

min=a[i][j];

printf("min=%d,row=%d,colun=%d\n",min,i,j);

}_

⒌输入一个3行4列的矩阵和4行5列的矩阵,计算这两个矩阵相乘的结果。

#include

void fun(int a[3][4],int b[4][5],int c[3][5]);

void main()

{

int i,j,k,a[3][4],b[4][5],c[3][5]={0};

printf("\nPlease input the a array numbers:\n");

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

for(j=0;j<4;j++)

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

printf("Please input the b array numbers:\n");

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

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

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

fun(a,b,c);

printf("The c array numbers:\n");

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

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

printf("%d%c",c[i][j],j==4?'\n':'');

}

void fun(int a[3][4],int b[4][5],int c[3][5])

{

int i,j,k;

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

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

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

c[i][j]+=a[i][k]*b[k][j]; }

}

_

L a b8P o i n t e r s

⒈输入10个整数,将其中最大的数与第一个数对

换,把最小的数与最后一个数对换。要求:输入、处理和输出分别用一个函数实现。输入三个整数,要求由大到

小输出。

#include

void main()

{

void input(int *);

void max_min_value(int *);

void output(int *);

int number[10];

input(number);

max_min_value(number);

output(number);

}

void input(int number[])

{

int i;

printf("\nPlease input 10 numbers:\n");

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

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

}

void max_min_value(int number[])

{

int *max,*min,*p,temp;

max=min=number;

for(p=number+1;p

if(*p>*max) max=p;

else if(*p<*min) min=p;

{ temp=number[0];

number[0]=*max;

*max=temp; }

{ temp=number[9];

number[9]=*min;

*min=temp; }

}

void output(int number[])

{ int *p;

printf("Now,the new 10 numbers:\n");

for(p=number;p

printf("%d ",*p);

printf("\n");

}

⒉设计一个函数,对10个字符串由小到大顺序排

序。要求:对字符串赋初值、排序和输出都用一个函数来

实现。

#include

#include

void main()

{void input(char *name[]);

void sort(char *name[],int n);

void print(char *name[],int n);

char *name[10];

char a[10][20];

int i;

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

name[i]=a[i];

input(name);

sort(name,10);

print(name,10);

}

void input(char *name[])

{

int i;

printf("\nPlease input ten strings:\n");

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

scanf("%s",name[i]);

} void sort(char *name[],int n)

{ char *temp;

int i,j,k;

for(i=0;i

{ k=i;

for(j=i+1;j

if(strcmp(name[k],name[j])>0)

k=j;

if(k!=i)

{ temp=name[i];

name[i]=name[k];

name[k]=temp;}

}

}

void print(char *name[],int n)

{ int i;

printf("\nNow,the new order strings:\n");

for(i=0;i

printf("%s\n",name[i]);

}

⒊编写程序,验证哥德巴赫猜想。哥德巴赫提出:

一个不小于6的偶数必定能表示为两个素数之和。例如:6=3+38=5+3 10=7+3 ……

要求将6~500之间的偶数表示为两个素数之和。即该程序将打印出一个偶数分解成两个素数和的全部

组合。

#include

#include

int prime(int n);

void Goldbach(int even,int *a,int *b);

void main()

{ int i;

int m,n;

for(i=6;i<=500;i++,i++)

{ Goldbach(i,&m,&n);

printf("%d=%d+%d\n",i,m,n);

if(i%40==0)

{ puts("press\'enter\'to continue");

getchar();

}

}

}

int prime(int n)

{ int i;

for(i=2;i<=sqrt(n);i++)

{ if(n%i==0)

return 0;

}

return 1;

}

void Goldbach(int even,int *a,int *b)

{ int m,n;

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

{ n=even-m;

if(prime(m)&&prime(n))

{ *a=m;

*b=n;

}

}

}

⒋输入10个整数,再输入一个待查找的整数,采

用二分查找法在前10个整数中搜索,若存在输出“found”,否则输出“not exist”。要求:二分查找时搜

索的工作变量要用指针来实现。

#include

#define SIZE 10

void input(int *a);

void sort(int *a);

int binary_search(int *a,int x);

void main()

{

int num[SIZE],x,i;

int *p=num;

printf("input x:\n");

scanf("%d",&x);

input(p);

sort(p);

printf("\nthe new sorting of the array:\n");

for(i=0;i

printf("%4d",*p++);

if(binary_search(num,x)==1)

printf("Found the number");

else

printf("Not exist in the array");

}

void input(int *a)

{

int *p=a,i;

printf("\ninput ten numbers:\n");

for(i=0;i

scanf("%d",p++);

}

void sort(int *a)

{

int i,*p,t;

for(i=0;i

for(p=a;p

if(*p>=*(p+1))

{

t=*p;

*p=*(p+1);

*(p+1)=t;

}

}

int binary_search(int *a,int x)

{

int *low=a,*high=a+SIZE-1;

int *mid=low+(high-low)/2,flag=0;

while(low

{

if(*mid==x)

{flag=1;break;}

else if(*mid>x)

high=mid-1;

else

low=mid+1;

mid=low+(high-low)/2;

}

return(flag);

}

⒌假设有一个数组int A[nSize],假设其中隐藏着若干0,其余非0整数,写一个函数int Fun(int* A, int nSize),使把0移至后面,非0整数移至数组前面并保持

原来的顺序,返回值为原数据中第一个元素为0的下标。#include

#define N 10

int Fun(int *A,int nSize);

void main()

{

int i;

int A[N]={0,13,6,4,8,0,0,2,1,1};

Fun(A,N);

printf("\nThe new order:\n");

for(i=0;i

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

printf("\n");

}

int Fun(int *A,int nSize)

{

int i,j;

int count = 0;

int end=nSize;

for(i=0;i

if(A[i]==0)

{

count++;

}

for(i=0;i

{

if(A[i]==0)

{

while(A[end-1]==0)

{

end--;

}

if(end==nSize-count)

{

break; }

A[i] = A[end-1];

A[end-1] = 0;

}

}

return end;

}

L a b9S t r i n g s,P r e p r o c e s s o r

⒈有n个国家名,要求按字母先后顺序排列,并

按升序输出。(要求:尽量使用标准字符串函数)

#include

#include

char sort (char (*p)[20],int n);

void main()

{

char str[5][20];

int i,j;

printf("\nPlease input five strings:\n");

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

gets(str[i]);

sort(str,5);

printf("The new order:\n");

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

puts(str[i]);

}

char sort(char (*p)[20],int n)

{

int i,j;char string[20],*t=string;

for(j=1;j

for(i=0;i

if(strcmp(p[i],p[i+1])>0)

{ strcpy(t,p[i]);

strcpy(p[i],p[i+1]);

strcpy(p[i+1],t);

}

}

⒉输入字符串1和字符串2,若字符串1比字符串

2大,则把字符串2连接到字符串1的后面;若字符串2比字符串1大,则把字符串1连接到字符串2的后面,并输出连接后的新字符串的长度。

#include

void main()

{

char str1[20],str2[20];

printf("\nPlease input two stings:\n");

gets(str1);

gets(str2);

if(strcmp(str1,str2)>0)

{strcat(str1,str2);

puts(str1);}

else

{strcat(str2,str1);

puts(str2);}

}

⒊定义一个带参数的宏,计算n!,并在主函数中

使用这个宏。并比较带参数的宏与函数的异同。

#include

#define fun(n) for(i=1;i<=n;i++) sum*=i;

void main()

{

int n,sum=1,i;

printf("\nPlease input n:\n");

scanf("%d",&n);

fun(n)

printf("sum=%d\n",sum);

}

⒋输入一行字母字符,根据需要设置条件编译,使

之能升序输出或降序输出。

#include -4

#define flag 1

void main()

{

int i,j;char c[10],temp;

printf("\nInput a series chars;\n");

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

{scanf("%c",&c[i]);

getchar();}

printf("\nThe new char order;\n");

for(j=0;j<10;j++)

for(i=0;i<10-j;i++)

#if flag

if(c[i]>c[i+1])

{temp=c[i];

c[i]=c[i+1];

c[i+1]=temp;}

#else

if(c[i]

{temp=c[i];

c[i]=c[i+1];

c[i+1]=temp;}

#endif

{for(i=0;i<10;i++)

printf("%c ",c[i]);}

printf("\n");

}

⒌定义一个求三个数中最大值的宏,并在在主函数

中使用这个宏,求出输入的三个整数的最大值。

#include

#define max(a,b) (a>b?a:b)

void main()

{

int a,b,c;

printf("input three integer:\n");

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

printf("max=%d\n",max(max(a,b),c));

}

L a b10S t r u c t u r e s a n d

L i n k e d L i s t

⒈定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。

#include

struct year

{

int year;

int month;

int day;

}date;

void main()

{

int judgement(int year);

int i,days;

int

day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31 };

printf("\ninput year,month,day:");

scanf("%d%d%d",&date.year,&date.month,&date.da y);

days=0;

for(i=1;i

days=days+day_tab[i];

days=days+date.day;

if(judgement(date.year)==1)

{

printf("%d is leap\n",date.year);

days=days+1;

}

else

printf("%d is not leap\n",date.year);

printf("%d/%d is the %dth day in %d.\n",date.month,date.day,days,date.year);

}

int judgement(int year)

{

int leap;

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

leap=1;

else

leap=0;

return(leap);

}

⒉有10个职工,每个职工的数据包括:职工号、姓名、基本工资、奖励工资、扣项合计和实发工资,从键盘输入这10个人的数据(不含实发工资)。要求实发工资由前三项工资计算,找出工资最高者的职工号和姓名,并打印整张职工工资表。

⒊建立一个链表,每个结点中包括学号、姓名、性别和成绩。要求输入一个成绩x,查找该链表中是否有成绩等于x的结点。

⒋建立一个结点按学生成绩从小到大顺序排列的链表,每个结点中包括学号、姓名、性别和成绩。要求:输入一个新的学生结点信息,根据其成绩,插入到原链表中并将链表输出;要求:输入一个学生的学号,查找该链表中是否有学号等于x的结点,若存在,则删除该结点。

⒌建立一个链表,存放10个整数,要求逆置该链表。

注:以上几题以后给出

C语言上机报告答案

2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a 赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句 改成:printf("%c %c %d\n",a,b,c);

PPT操作练习 上机实验报告

PPT操作练习上机实验报告 一、实验目的 ①掌握演示文稿制作的基本过程②按时文稿播放的基本操作 . 实验步骤:一、准备工作 1、在自己文件夹里建一个课件文件夹→双击打开此文件夹→建一个名为“素材”的文件夹。 2、搜集素材:包括声音、图片、影像、文字等,都存在“素材”文件夹内。 二、建立演示文稿 1、启动PowerPoint:双击桌面上的PowerPoint图标→选择“空演示文稿”→确定→选一版式→确定→选空白页→确定 2、保存:点“文件”菜单→保存→单击“保存位置”后面的“▼”→打开自己建的课件文件夹→在“文件名称”后面的框中输入文件名(中国山水画的意境)→保存。 3、关闭:点“X”按钮。 三、修饰、制作演示文稿 1打开已保存的课件:找到自己制作的课件保存的位置,双击打开课件。 (1)输入文字:插入→文本框→水平→到空白片按住鼠标左键拖动鼠标,在适当位置处松开→在所形成的方框内输入“体味中国传统文化的魅力”→输完后到框外空白处单击左键即可。 (2)修改文字:用鼠标将文字选中→设置“宋体、36、黑色”等。 在此输入一行字“____领略中国山水画的意境”并自定义动画:选中图标→右键→自定义动画→在“效果”下面的“动画和声音”处单击“▼”,选择一种动画。 (3)然后在当前页面插入音乐:插入→影片和→声音文件中的声音→在“素材”文件夹选一声音→确定→自动播放(放映幻灯片时声音自动播放)在插入的声音图标上点右键→编辑声音对象→单击“循环播放,直到停止”前的“□”,则埋单循环播放,否则只播放一次。 (4)设置声音播到第“4”张幻灯片后停止:单击声音图标→在图标上点右键→自定义动画→在“按动画顺序播放”前的“□”单击→继续幻灯片的放映→在下面的框内输入“4”→确定 2、插入新幻灯片:插入→新幻灯片→空白版式→确定。 3、插入艺术字:插入→图片→艺术字→选择简单版式→确定→输入文字→宋体、24号→确定。

C语言程序设计实验报告(实验大纲+过程)

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分:4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; pr intf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

C上机实验报告实验五

C上机实验报告实验五 This manuscript was revised by the office on December 22, 2012

实验五继承与派生 1.实验目的 1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 3.学习利用虚基类解决二义性问题 2.实验要求 1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。 2.定义一个基类BaseClass,有整型变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 3.定义一个车(vehicle)基类,具有Maxspeed、Weight等成员,Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性。从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。 3.实验内容及实验步骤 1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示: errorC2248:‘age’:cannotaccessprivatememberdeclaredinclass‘Animal’errorC2248:‘age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。 2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。 3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。 4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。 编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。 4.思考题 1.如何在已有的类的基础上设计新的类?

数据库上机实验7实验报告

上机实验七——视图的建立及操作 一、实习目的: 掌握创建、删除、和查询视图的方法,验证可更新视图和不可更新视图。 二、实习准备: 1.复习第三章3.6节视图 2. 完成习题三第16题中的各项操作的SQL语句。 3.了解可更新视图和不课更新视图 三、实习内容:验证习题三第16题中的各项操作的SQL语句。 ①建立01311班选修了1号课程的学生视图Stu_01311_1 CREATE VIEW Stu_01311_1 AS SELECT * FROM Grade WHERE Cno='1'AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ②建立01311班选修了1号课程并且成绩不及格的学生视图Stu_01311_2 CREATE VIEW Stu_01311_2 AS SELECT * FROM Grade

WHERE Cno='1'AND Gmark<60 AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ③建立视图Stu_year,由学生学号、姓名、出生年份组成 CREATE VIEW Stu_year AS SELECT Sno,Sname,year=2001-Sage FROM Student ④查询1990年以后出生的学生姓名 SELECT Sname FROM Student WHERE 2001-Sage<1990; ⑤查询01311班选修了1号课程并且成绩不及格的学生的学号、姓名、出生年份SELECT Sno,Sname,2014-Sage FROM Student WHERE Clno=01311 AND EXISTS(

C语言上机实验[1]

实验四循环结构程序设计(4学时) 一、实验方式:一人一机 二、实验目的: 1、熟练掌握while语句、do-while语句和for语句。 2、练习并掌握循环结构的嵌套形式。 3、掌握循环结构的程序设计方法。 三、实验内容:说明:前四题为必做题目,后两题为选做题目。 1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结 束输入。(实验指导书P41) 2、求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数 本身。(实验指导书P42) 3、判断输入的某个数是否为素数。若是,输出YES,否则输出NO。(实验指导书P167) 4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小 于10-6为止。(实验指导书P169) 5、计算1!+2!+……+n! 的值,n值由键盘输入。(实验指导书P176) 6、输入10个整数,统计并输出其中正数、负数和零的个数。 四、实验答案:(代码+运行结果截屏) 实验五综合实验1:结构化程序设计(2学时) 一、实验方式:一人一机 二、实验目的: 1、进一步掌握选择结构、循环结构的编程特点。 2、掌握C语言的结构化程序设计思想。 3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。 三、实验内容:说明:前两题为必做题目,后两题为选做题目。 1、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。设: 90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。(实验指导书P162) 2、百马百担问题。(实验指导书P45) 3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 4、输出如下图案: * *** ***** ******* ***** *** * 四、实验答案:(代码+运行结果截屏)

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作......................................................... - 1 - 二、Word文字处理基本操作 .............................................................. - 4 - 三、Excel电子表格基本操作 ............................................................ - 6 - 四、PowerPoint幻灯片基本操作....................................................... - 8 - 五、网页设计基本操作 ...................................................................... - 9 - 六、Access数据库基本操作 ............................................................ - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

C程序设计上机实验报告11

C程序设计实验报告 实验名称:指针与字符串学时安排:2课时 实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1. 掌握通过指针操作字符串的方法; 二、实验设备介绍 软件需求: Visual C++ 6.0或CFree3.5以上版本 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU 处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 三、实验内容 1.输入一个字符串t和一个正整数m,讲t中从第m个(m小于字符串长度)字符开始的全部字符复制的字符串s中,再输出字符串s。要求用字符指针定义并调用函数strmcpy(s, t, m),它的功能是将字符串t中从第m个字符开始的全部字符复制到字符串s中。示例如下:Input a string: happy new year! Input an integers: 7 Output is: new year! 2. 编写一个函数delchar(s, c),该函数将字符串s中出现的所有c字符删除。自己定义main 函数,并在其中调用delchar(s,c)函数。D此大锅饭 3. 改正程序error08_ 4.cpp中的错误。函数strc的作用是将字符串s连接到t的尾部。在

主函数中输入两个字符串s和t,调用strc完成字符串的连接。输入输出结果如下所示:World! Hello HelloWorld! 要求把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。 注释示例如下: int i; /*循环控制变量不能定义为double类型*/ 4. 编程判断输入的一串字符是否为“回文”,如果是输出“Yes”,否则输出“No”。所谓“回文”,是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。 四、程序清单 第一题 #include void strmcpy(char str[],char t[],int m){ int i=0,n; char *s; s=str; for(s+=m-1;*s!=0;s++) { t[i]=*s; i++; } printf("Output is:"); for(n=0;n

2010C语言实验报告参考答案

2010C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a;

C语言上机实验标准答案.doc

实验一上机操作初步 (2 学时 ) 一、实验方式:一人一机 二、实验目的: 1、熟悉 VC++语言的上机环境及上机操作过程。 2、了解如何编辑、编译、连接和运行一个 C 程序。 3、初步了解 C程序的特点。 三、实验内容: 说明:前三题为必做题目,后两题为选做题目。 1、输出入下信息: ( 实验指导书 P79) ************************* Very Good ************************* 2、计算两个整数的和与积。( 实验指导书 P81) 3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。 ( 书 P3) 4、在屏幕上显示一个文字菜单模样的图案: ================================= 1 输入数据 2 修改数据 3 查询数据 4 打印数据 ================================= 5、从键盘上输入两个整数,交换这两个整数。 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include <> void main( ) {printf( printf( printf( “ ********************\n “Very Good\n” ); “ ********************\n ” ); ” ); } 2、#include <> void main( ) {int a,b,c,d; printf( “ Please enter a,b: ”);

scanf( “%d,%d” ,&a,&b); c=a+b; d=a*b; printf( “ %d+%d=%d\n” ,a,b,c); printf( “ %d*%d=%d\n” ,a,b,d); } 3、#include <> #include <> void main( ) { double x,s; printf( “ Please input value of x: ”); scanf( “%lf ” ,&x); s=cos(x); printf( “ cos(%lf)=%lf\n ”,x,s); } 4、#include <> void main( ) { printf( “ ==================================\n”); printf( “ 1 输入数据 2 修改数据 \n ”); printf( “ 3 查询数据 4 打印数据 \n ”); printf( “ ===================================\n”); } 5、#include <> void main( ) { int x,y,t; printf( “ Please enter x and y: ”); scanf( “%d%d”,&x,&y); t=x; x=y; y=t; printf( “ After swap:x=%d,y=%d\n ” ,x,y); } 实验二简单的 C程序设计 (4 学时 ) 一、实验方式:一人一机 二、实验目的: 1、掌握 C语言的数据类型。 2、学会使用 C语言的运算符及表达式。 3、掌握不同数据类型的输入输出方法。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。

c语言实验报告1

C语言程序设计报告 日

程序主要内容 任务1. 程序首先随机产生一到十之间的正整数,在屏幕上打印出问题,例如6*7=?然后让学生输入答案,序检查学生输入的答案是否正确,若正确,则“RIGHT”,然后问下一个问题,否则打印“WRONG,PLEASE TRY AGAIN”,然后提示学生重做,直到答对为止。 程序如下: #include #include #include int Magic(int x); int Answer(); main() { int guess,answer,counter=1; do{ printf("%d*%d=",Magic(1),Magic(2)); answer=Magic(1)*Magic(2); if(Answer()==answer) { printf("Right\n"); break; } else printf("Wrong!,please try again\n"); }while(counter>=1); } int Magic(int m)

int x,int y; srand(time(NULL)); x=rand()%10+1; y=rand()%10+1; if(m==1) return x; if(m==2) return y; } int Answer() { int n; scanf("%d",&n); return n; } 任务2:在(1)的基础上,当学生回答错误时,最多给三次重做的机会。 :程序如下: #include #include #include int Magic(int x); int Answer(); int Exam(); main() { int n; n=Exam(); if(n==0) printf("Right\n"); else if(n==1) printf("Wrong!You have tried

c上机实验报告

实验五继承与派生 实验目的 1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 3.学习利用虚基类解决二义性问题 实验要求 1?定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge (int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。 2?定义一个基类BaseClass有整型变量Number,构造其派生类 DerivedClass观察构造函数和析构函数的执行情况。 3.定义一个车(vehicle)基类,具有Maxspeed、Weight 等成员,Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车 (bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数 (SeatNun)等属性。从bicycle和motorcar 派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。 实验内容及实验步骤 1?编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge (int n)中直接对age赋值时,会出现类似以下的错误提示: error C2248: ‘age':cannot access private member declared in class C2248: ‘ age' :cannot access privateer declared in class 把Agm改为公 有成员变量后重新编译就可以了。程序名:。 错误代码: #include using namespace std; class Animal

计算机组成原理上机实验报告

《计算机组成原理实验》课程实验报告 实验题目组成原理上机实验 班级 1237-小 姓名 学号 时间 2014年5月 成绩

实验一基本运算器实验 1.实验目的 (1)了解运算器的组成原理 (2)掌握运算器的工作原理 2.实验内容 输入数据,根据运算器逻辑功能表1-1进行逻辑、移位、算术运算,将运算结果填入表1-2。 表 1-1运算器逻辑功能表 表1-2运算结果表

3.实验原理 本实验的原理如图1-1所示。 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器 A 和暂存器 B,三个部件同时接受来自 A 和 B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如 ARM),各部件对操作数进行何种运算由控制信号S3…S0和 CN 来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为 ALU 的输出。如果是影响进位的运算,还将置进位标志 FC,在运算结果输出前,置 ALU 零标志。ALU 中所有模块集成在一片 CPLD 中。 图 1-1 运算器原理图 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。 图1-2中显示的是一个 4X4 的矩阵(系统中是一个 8X8 的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接 0。 (2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在 4 位矩阵中使用‘右1’和‘左3’对角线来实现右循环 1 位。 (3)对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 运算器部件由一片 CPLD 实现。ALU 的输入和输出通过三态门 74LS245 连到 CPU 内总线上,另外还有指示灯标明进位标志 FC 和零标志 FZ。请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。图中除 T4 和 CLR,其余信号均来自于 ALU 单元的排线座,实验箱中所有单元的 T1、T2、T3、T4 都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON 单元的 CLR 按钮。T4 由时序单元的 TS4 提供(时序单元的介绍见附录二),其余控制信号均由 CON 单元的二进制数据开关模拟给出。控制信号中除 T4 为脉冲信号外,其余均为电平信号,其中 ALU_B 为低有效,其余为高有效。 暂存器 A 和暂存器 B 的数据能在 LED 灯上实时显示,原理如图1-3 所示(以 A0 为例,其

c语言上机实验报告 (2)

c语言上机实验报告 (2) 实验六 姓名班级单周上机的那班学号 一 程序源:#include #include void main() { FILE*fp; fp=fopen("E:\\yxf01.text","w"); if(fp==NULL) { printf("文件打不开"); exit(0); } int a,i; printf("请输入一个尾部为0的整数\n"); scanf("%d",&a); while(a%10!=0) { printf("输入值非法,请从新输入!\n"); scanf("%d",&a); }

fprintf(fp,"%d=%d+%d+%d+%d+%d+%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/1 0,a/10,a/10,a/ 10,a/10,a/10,a/10); fprintf(fp,"%d=%d+%d+%d+%d+%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/10,a /10,a/10,a/10,a/ 10,a-8*(a/10)); fprintf(fp,"%d=%d+%d+%d+%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/10,a/10 ,a/10,a/10,a-7*(a /10)); fprintf(fp,"%d=%d+%d+%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/10,a/10,a/ 10,a-6*(a/10)); fprintf(fp,"%d=%d+%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/10,a/10,a- 5*(a/10)); fprintf(fp,"%d=%d+%d+%d+%d+%d\n",a,a/10,a/10,a/10,a/10,a-4*(a/10)); fprintf(fp,"%d=%d+%d+%d+%d\n",a,a/10,a/10,a/10,a-3*(a/10)); fprintf(fp,"%d=%d+%d+%d\n",a,a/10,a/10,a-2*(a/10)); fprintf(fp,"%d=%d+%d\n",a,a/10,a-(a/10)); fclose(fp) } 运行结果:

C语言上机综合实验一及答案

1、编制程序,输入n 个整数(n 从键盘输入,n>0),输出它们的偶数和。 2、 编程,输入n 后:输入n 个数,根据下式计算并输出y 值。 3、输入一行字符,统计并输出其中英文字母、数字字符和其他字符的个数。 4、编写程序,输入一个正整数n ,计算并输出下列算式的值。要求定义和调用函数total(n)计算1+1/2+1/3+……+1/n ,函数返回值的类型是double 。 5、输入一个正整数n ,求1+1/2!+1/3!+……1/n!的值,要求定义并调用函数fact(n)计算n 的阶乘,函数返回值的类型是单精度浮点型。 答案: 程序1、 #include void main () { int n,i,x,sum=0; while(scanf("%d",&n),n<=0); printf ("请输入%d 个数:", n); for (i=1; i<=n ;i++) { scanf("%d",&x); if(x%2==0) sum+=x; } printf ("sum=%d", sum) ; } 程序2、 #include #include void main( ) { int i,n; float x,y; scanf(“%d”,&n); for(i=1;i<=n;i++){ scanf(“%f”,&x); if(x<-2) y=x*x-sin(x); else if(x<=2) y=pow(2,x)+x; else y=sqrt(x*x+x+1); printf(“%f \n”,y); } } 程序3、 # include void main( ) { int letter,digit,other; ?????>++≤≤-+-<-=2 12222sin 22x x x x x x x x y x 111111...23n k s k n ===++++∑

C上机实验报告

实验一 顺序结构程序设计 【实验日期】 年 月 日 【实验目的】 1. 熟悉VC++6.0调试环境,掌握运行一个C 程序的基本步骤。 2. 掌握基本输入、输出函数的使用。 3. 能够编写简单的顺序结构程序,实现简单的数据处理。 4. 掌握C 程序的查错方法。 【实验内容】 调试示例 改正下列程序中的错误,求华氏温度1000F 对应的摄氏温度。计算公式如下,其中:c 表示摄氏温度,f 表示华氏温度。 源程序(有错误的程序) #include “stdoi.h ” void main() { int c;f; f=100; c=5*(f-32)/9; printf(“f=d,c=%d\n ”,f,c); } 运行结果(改正后程序的运行结果) f=100,c=37 调试过程: (1) 输入源程序。 (2) 使用菜单或工具栏来完成编译、连接和运行操作。 (3) 单击编译(Compile )按钮,编译时出现的第一条错误信息是: Cannot open include file:’stdoi.h ’:no such file or directory 通过拖动信息窗口右侧的滚动块或将信息窗口拉大可查看错误信息。双击该错误信息,箭头指向源程序的第一行,因为“stdio.h ”被误写为“stdoi.h ”。改正为“stdio.h ”后,重新编译,新产生的第一9)32(5-?=f c

条错误信息是:‘f’:undeclared identifier 双击该错误信息,箭头指向源程序的第四行,错误信息指出“f”变量没有被定义。仔细观察后,发现“f”前的分号应该为逗号。将“f”前的分号改为逗号后,重新编译,编译正确。 (4) 单击连接(Build)按钮,连接正确。 (5) 单击运行(Build Execute)按钮,运行结果为:f=d,c=100。 结果不符合题目的要求,仔细检查源程序,发现函数printf中“f=d”的“d”应为“%d”。改正后,重新编译、连接和运行,运行结果与题目要求的结果一致。 ●改错题 改正下列程序中的错误,计算x的平方y,并分别以“y=x*x”和“x*x=y”的形式输出x和y的值。 源程序(有错误的程序) /********************found********************/ #include “stdoi.h” void main() { int y,x; printf(“Input x:”); scanf(“%d”,&x); y=x*x; /********************found**********************/ printf(“%d=%d*%d\n”,x); /********************found**********************/ printf(“%d*%d=%d\n”,y); } 运行结果1(改正后程序的运行结果)运行结果2 Input x:5 Input x:4 25=5*5 16=4*4 5*5=25 4*4=16 ●编程题 1、已知某位学生的数学、英语和计算机课程的成绩分别是82分、78分和91分,求该生3门课的平均成绩。 输出示例: Math=82,eng=78,comp=91,average=83

C上机实验报告 实验四

精品文档 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。

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