c语言程序设计自第五个实验开始源代码(1)资料

c语言程序设计自第五个实验开始源代码(1)资料
c语言程序设计自第五个实验开始源代码(1)资料

实验5三种基本结构的综合应用

4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。

#include "stdio.h"

main()

{int i,j,k,m,p,q,n=0;

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

{for(j=2;j

if(i%j==0)break;

if(j>=i) /*三位数是素数时*/

{k=i%100; /*去掉百位数字*/

if(k>=10) /*十位数字不是0时*/

{for(m=2;m

if(k%m==0)break;

if(m>=k) /*两位数是素数时*/

{p=i%10; /*p为个位数字*/

for(q=2;q

if(p%q==0)break;

if(q>=p)n++;}}}}

printf("%d\n",n);}

Key:57

5.求[2,400]中相差为10的相邻素数对的对数。

#include "stdio.h"

main()

{int i,j,k,m,p,q,n=0;

for(i=2;i<=400;i++)

{for(j=2;j

if(i%j==0)break;

if(j>=i) /*i是素数时*/

{for(k=i+1;k

{for(m=2;m

if(k%m==0)break;/*k不是素数时终止if语句的内层循环*/

if(m>=k)break;} /*k是素数时终止if语句的外层循环*/

if(k>=i+10) /*[i+1,i+9]不是素数时*/

{for(q=2;q

if(k%q==0)break;

if(q>=k) /*i+10是素数时*/

n++;}}}

printf("%d\n",n);}

Key:5

6.求[1,21]范围内的梅森尼数

#include "math.h"

main()

{long n,k=2,m,p,q;

for(n=2;n<=21;n++)

{ k=k*2; p=k-1;

m=sqrt(p);

for(q=2;q<=m;q++)

if(p%q==0) break;

if(q>m) printf("%5ld",n);}}

Key: 2 3 5 7 13 17 19

7.求1000以内的亲密数对

main()

{int a,b,n,m,q,p;

for(a=1;a<1000;a++)

{n=0;

for(q=1;q<=a/2;q++)

if(a%q==0) n+=q;

for(b=a;b<=1000;b++)

{ m=0;

for(p=1;p<=b/2;p++)

if(b%p==0) m+=p;

if(a==m&&b==n) printf("%5d%5d",a,b);}}}/*Key:6 6 28 28 220 284 496 496*/

实验6 数组及其应用

3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(low

的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确的结果。

#include

#define N 10

main()

{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k=-1,m;

int low=0,high=N-1,mid;

printf("a数组中的数据如下:");

for(i=0;i

printf("Enter m: "); scanf("%d",&m);

while(low<=high)

{ mid=(low+high)/2;

if(m

high=mid-1;

/************found************/

else If(m > a[mid])

low=mid+1;

/************found************/

else {k=mid;continue;} }

if(k>=0) printf("m=%d,index=%d\n",m,k);

else printf("Not be found!\n");}

Key:第一个错误:else If(m > a[mid]) 应改为:else if(m > a[mid]) 因C语言关键字必须小写。

第二个错误:else {k=mid;continue;} 应改为:else {k=mid;break;} 因找到就可终止循环。

4.有一个3*4矩阵,找出每行中最大的元素并与第1列元素交换。

具体要求如下:

(1)使用二维数组存放该3*4矩阵。

(2)定义并初始化该二维数组。

(3)输出原矩阵和处理后的矩阵进行比较。

【程序源代码】

#include "stdio.h"

main()

{ int i,j,k,temp;

int data[3][4]={{12,15,7,11},{14,6,10,21},{25,7,16,45}};

printf("the original matrix:\n");

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

{ for(j=0;j<=3;j++)

printf("%d\t",data[i][j]);

printf("\n"); /*打印原矩阵*/

}

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

{

k=0;

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

if(data[i][j]>data[i][k])

k=j;

temp=data[i][0];

data[i][0]=data[i][k];

data[i][k]=temp;

} /*求每行最大数并与第1列上的元素交换*/

printf("\nthe handled matrix:\n");

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

{

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

printf("%d\t",data[i][j]);

printf("\n");

} /*打印处理后矩阵,此时第1列上的元素为每行的最大数*/ }

5.猴子选大王问题:n个人围坐一圈,并顺序编号1~n,从1号开始数,每数到m个就让其出局,重复...。求最后出局者的编号。当n=50,m=3时,答案为11 具体要求如下:

(1)使用一维数组存放每个人的编号,每数到m个数就让其出局,出局者编号为0。

(2)使用for循环嵌套实现。

【程序源代码】

#include "stdio.h"

main()

{int a[51],i,j,m=0,n;

for(i=1;i<=50;i++)a[i]=i;/*为了符合习惯,数组下标从1开始,下标就是编号*/

for(j=1;j<=50/3;j++) /*外层循环最多循环50/3次*/

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

{if(a[i]!=0)m++; /*对未出局者计数*/

if(m==3)a[i]=0,n=i,m=0;/*对出局者编号为0,并保存原编号,计数从0开始*/

}

printf("last: %d\n",n);} /*最后出局者的编号*/

实验7函数及其应用

3.排错题:下列给定程序中函数fun 的功能是:用递归算法求形参a 的平方根。请改正程序中的错误,使它能计算出正确的结果。注意:源程序不得增行或删行,也不得更改程序的结构!

例如,a 为2 时,平方根值为:1.414214。

#include

#include

/**********found**********/

void fun(double a, double x0)

{ double x1, y;

x1=(x0+a/x0)/2.0;

/**********found**********/

if( fabs(x1-x0)<=0.00001 )

y=fun(a,x1);

else y=x1;

return y;

}

main( )

{ double x;

printf("Enter x: "); scanf("%lf",&x);

printf("The square root of %lf is %lf\n",x,fun(x,1.0));

}

Key:第一个错误:void fun(double a, double x0) 应改为:double fun(double a, double x0) 因根据题意,需通过调用fun()函数返回a的平方根,故必须将void改为double,否则不能用带值的return语句。自增。

第二个错误:if( fabs(x1-x0)<=0.00001 ) 应改为:if( fabs(x1-x0)>=0.00001 ) 因只有fabs(x1-x0)>=0.00001才须递归。

4.设计一个程序,判断一个整数n 是否是素数。

具体要求如下:

(1)编制一个函数int prime(number),判断整数number 是否是素数。

(2)编制主函数,由键盘输入整数number,调用(1)中的函数,若返回值为真则是素数,否则不是素数。

(3)分别用以下数据运行该程序:103,117。

【程序源代码】

#include "stdio.h"

main()

{ int number;

printf("请输入一个正整数:\n");

scanf(" %d",&number);

if (prime(number))

printf("\n %d是素数. ",number);

else

printf("\n %d不是素数. ",number);

}

int prime(number)

int number;

{int flag=1,n;

for(n=2;n

if (number%n==0)

flag=0;

return(flag);}

5.编写程序,通过两个自定义函数分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。

具体要求如下:

(1)用辗转相除法实现。

(2)输出要有文字说明,输出形式为:最大公约数=具体值,最小公倍数=具体值

(3)分别用以下数据运行该程序:8 和26,64 和258

(4) 辗转相除法:对于两个数m 和n,将大数放在m 中,小数放在n 中,用n 去除m,

若余数为0,则n 为最大公约数,否则将n 作为m,余数作为n,再用n 去除m,

直到余数为0,则n 为最大公约数。

【程序源代码】

#include "stdio.h"

hcf(u,v)

int u,v;

{int a,b,t,r;

a=u;

b=v;

while((r=b%a)!=0)

{b=a; a=r;}

return(a);}

lcd(u,v,h)

int u,v,h;

{return(u*v/h);}

main()

{int u,v,h,l;

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("H.C.F=%d\n",h);

l=lcd(u,v,h);

printf("L.C.D=%d\n",l);}

6.请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为

1 3 5 7 9

2 9 9 9 4

6 9 9 9 8

1 3 5 7 0

则函数值为61。

【程序源代码】

#include

#define M 4

#define N 5

int fun( int a [M][N])

{int i,j,s=0;

for(i=0;i

for(j=0;j

if(i==0||j==0||i==M-1||j==N-1)

s+=a[i][j];;

return s; }

void main()

{ int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}}; int i, j, y; printf ("The original data is :\n ");

for(i=0; i

{for (j=0; j

y=fun(aa); printf("\nThe sun: %d\n ",y); printf("\n ");}

实验8作用域和存储类型应用

3.排错题:下列程序的输出结果应为6 15 15。通过调试程序,改正程序中不恰当的地方以便能够得到要求的结果。

#include "stdio.h"

int t=1;

int fun (int p)

{

/**********found**********/

int t= 5;

t+=p;

printf("%d ",t);

/**********found**********/

return ;

}

main()

{

int a =3;

printf("%d \n",fun(a+fun(t)));

}

Key:第一个错误:int t= 5; 应改为:static int t= 5; 因根据题意,fun()函数中的t应是静态变量。

第二个错误:return ; 应改为:return t; 因fun()函数调用是作为printf()函数的输出项。4.程序设计。函数的递归调用Hanoi(汉诺)塔问题的程序参考源代码如下。分析程序中函数的定义和调用以及程序运行的输出结果,并要求进一步改进:通过全局变量的使用使程序的运行能输出移动指定数目盘子时的总步骤数。

【程序参考源代码】

#include "stdio.h"

void move(char getone ,char putone)

{

printf("%c——>%c\n",getone,putone);

}

void hanoi(int n,char one ,char two,char three)

{

if(n==1) move(one,three);

else

{ hanoi(n-1,one,three,two);

move(one ,three);

hanoi(n-1,two,one,three);

}

}

main()

{

int n;

printf("Input the number of disks: ");

scanf("%d",&n);

printf("The step to moving %3d disks: \n",n);

hanoi(n,'A','B','C');

}

【程序改进源代码】

#include "stdio.h"

int n=0;

void move(char getone ,char putone)

{n++;

printf("step %d: %c——>%c\n",n,getone,putone);

}

void hanoi(int n,char one ,char two,char three)

{

if(n==1) move(one,three);

else

{ hanoi(n-1,one,three,two);

move(one ,three);

hanoi(n-1,two,one,three);

}

}

main()

{

int n;

printf("Input the number of disks: ");

scanf("%d",&n);

printf("The step to moving %3d disks: \n",n);

hanoi(n,'A','B','C');

}

实验9 指针及其应用

1.以下函数调用Reverse()函数按逆序重新放置数组A 中的元素,请补全程序。#include "stdio.h"

#define N 10

void Reverse(int *p, int a, int b)

{int c;

while (________)

{c=*(p+a);

*(p+a)= ________;

*(p+b)=c;

________;}}

int main()

{int A[N], i;

for (i=0; i

scanf("%d", ________);

Reverse(A, 0, N-1);

for (i=0; i

printf("%-4d", ________);

printf("\n");

return 0;}

Key:第一空应填:a

第二空应填:*(p+b) 或p[b] /*用指针方法或用下标方法*/

第三空应填:a++,b++ 或++a/a+=1/a=a+1,++b/b+=1/b=b+1

第四空应填:&A[i] 或A+i /*用数组元素的地址或数组的首地址加偏移量的方法*/

第五空应填:*(A+i) 或A[i] /*用指针方法或用下标方法*/

2.记录以下程序的运行结果,并进行分析。

#include "stdio.h"

int main()

{int a=10, b=0, *pa, *pb;

pa=&a, pb=&b;

printf("%d,%d,",a,b);

printf("%d,%d\n",*pa,*pb);

a=20, b=30;

*pa=a++, *pb=b++;

printf("%d,%d,",a,b);

printf("%d,%d\n",*pa,*pb);

(*pa)++;(*pb)++;

printf("%d,%d,",a,b);

printf("%d,%d\n",*pa,*pb);

return 0;

}

分析程序运行:________

Key:运行结果:10,0,10,0

21,31,21,31

22,32,22,32

分析:因为pa=&a;pb+&b;所以*pa和a是同一个变量,占据内存同一存储单元。

注意该程序与下面程序的区别:

#include "stdio.h"

int main()

{int a=10, b=0, c=a, d=b;

printf("%d,%d,",a,b);

printf("%d,%d\n",c,d);

a=20, b=30;

c=a++, d=b++;

printf("%d,%d,",a,b);

printf("%d,%d\n",c,d);

c++;d++;

printf("%d,%d,",a,b);

printf("%d,%d\n",c,d);

return 0;

}

Key:运行结果:10,0,10,0

21,31,20,30

21,31,21,31

分析:因为c=a++;相当于c=a;a++;而a和c是两个不同的变量,所以c++不影响a的值。

3.设计一个程序,统计字符串中大写字母的个数。

具体要求如下:

(1)字符串的长度从键盘输入,并以此分配存储空间。

(2)使用指针变量遍历字符串。

【程序源代码1:用数组存放字符串】

#define N 80

#include

int capital(char *p)

{int count=0;

while(*p)

{if(*p>='A'&&*p<='Z')

count++;

p++;}

return count;}

main()

{char c[N],n;

printf("Input a string:");

gets(c);

printf("Output the string:");

puts(c);

n=capital(c);

printf("There are %d uppercase alphas in %s\n",n,c);}

【程序源代码2:用指针指向字符串(此法可能更合出题者的意图)】

#include

#include

int capital(char *p)

{int count=0;

while(*p)

{if(*p>='A'&&*p<='Z')

count++;

p++;}

return count;}

main()

{char *c,n;

printf("Input the length of a string:");

scanf("%d",&n);

getchar();

c=malloc(n+1);

printf("Input a string:");

gets(c);

printf("Output the string:");

puts(c);

n=capital(c);

printf("There are %d uppercase alphas in %s\n",n,c);

free(c);}

指针用法的总结:

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。

实验10 结构体与共用体

2.程序设计

(1)有5 个学生,每个学生的数据包括学号、姓名、3 门课的成绩,从键盘输入5 个学

生数据,要求输出3 门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3 门课的成绩、平均分数)。

要求:用一个input 函数输入5 个学生数据;用一个output 函数输出5 个学生数据;用

一个average 函数求总平均分;用max 函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。

【程序框架】

#include"stdio.h"

struct student

{ int num;

char name[20];

float score[3];

float avg;

};

/**********函数声明**********/

void input(struct student stu[5]);

void output(struct student stu[5]);

float average(struct student stu[5]);

struct student *max(struct student stu[5]);

/**********主函数**********/

void main()

{struct student stu[5], *pmax; float avg;

printf("please input:\n");

input(stu); /*输入学生数据*/

output(stu); /*输出学生数据*/

avg=average(stu); /*求总平均分*/

printf("the total average score is:%.2f\n",avg);

pmax=max(stu); /*查找最高分学生,用指针pmax 指向*/

printf("the student having the highest score:\n");

printf("num: %d,name: %s,score: %.2f,%.2f,%.2f,avg: %.2f\n",pmax->num, pmax->name,

pmax->score[0], pmax->score[1], pmax->score[2], pmax->avg); /*输出最高分学生数据*/

}

/**********子函数**********/

void input(struct student stu[5])

{

}

void output(struct student stu[5])

{

}

float average(struct student stu[5]) /*求3 门课总平均分,并作为函数值返回*/ {

}

struct student *max(struct student stu[5]) /*查找最高分学生,函数返回最高分学生的地址*/

{

}

Key:

/**********子函数**********/

void input(struct student stu[5])

{int i,j;

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

{ printf("Input No.%d student num(Enter to end):",i+1);

scanf("%d",&stu[i].num);

getchar();

printf("Input No.%d student name(Enter to end):",i+1);

gets(stu[i].name);

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

{ printf("Input No.%d student score[%d](Enter to end):",i+1,j);

scanf("%f",&stu[i].score[j]);}

}

}

void output(struct student stu[5])

{int i,j;

printf(" num\t name\t cj[1]\t cj[2]\t cj[3]\n");

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

{ printf("%d\t%s\t",stu[i].num,stu[i].name);

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

printf("%.2f\t",stu[i].score[j]);

printf("\n");}

}

float average(struct student stu[5]) /*求3 门课总平均分,并作为函数值返回*/ {int i,j;

float aver=0;

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

{ stu[i].avg=0;

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

stu[i].avg+=stu[i].score[j]/3;

aver+=stu[i].avg/5;}

return aver;

}

struct student *max(struct student stu[5]) /*查找最高分学生,函数返回最高分学生的地址*/

{struct student *p=stu,*q;

for(q=&stu[1];q

if(p->avgavg)p=q;

return p;

}

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

要求:用一个create 函数创建链表,输入若干学生的信息存入链表中,以学号为0 作为结束标志;用一个output 函数输出链表中存放的学生信息;用一个delete 函数删除链表中其年龄等于输入年龄的结点。

【程序框架】

#include"stdio.h"

#include"stdlib.h"

struct node

{ int num;

char name[20];

char sex;

int age;

struct node *next; /*next 指向下一个结点*/

}; /*链表结点类型定义*/

/**********函数声明**********/

struct node *create( );

void output(struct node *head);

struct node *delete(struct node *head, int age);

/**********主函数**********/

void main()

{struct node *head; int age;

printf("create linklist:\n");

head=create(); /*创建链表*/

printf("ouput linklist:\n");

output(head); /*输出链表*/

printf("please input an age:");

scanf("%d",&age);

head=delete(head,age); /*删除链表中其年龄等于输入年龄age 的结点*/

printf("output linklist after deleting:\n");

output(head); /*输出删除后的链表*/

}

/**********子函数**********/

struct node *create( ) /*输入若干学生信息存入链表中,以学号为0 作为结束标志,从而

创建一个链表,函数返回链表的头指针*/

{

}

void output(struct node *head) /*输出head 所指链表中的学生信息*/

{

}

struct node *delete(struct node *head, int age) /*删除head 所指链表中其年龄等于给定值

age 的结点,函数返回删除后的链表头指针*/

{

}

Key:

/**********子函数**********/

struct node *create( ) /*输入若干学生信息存入链表中,以学号为0 作为结束标志,从而

创建一个链表,函数返回链表的头指针*/

{int num,age,n=1;char name[20],sex;

struct node *h=malloc(sizeof(struct node)),*s,*r=h;

printf("Input num of NO.%d student(0 to end):",n);

scanf("%d",&num);

while(num)

{ getchar();

printf("Input name of NO.%d student:",n);

gets(name);

printf("Input sex of NO.%d student(f or m):",n);

sex=getchar();

printf("Input age of NO.%d student:",n);

scanf("%d",&age);

s=malloc(sizeof(struct node));

s->num=num;

strcpy(s->name,name);

s->sex=sex;

s->age=age;

r=r->next=s;

n++;

printf("Input num of NO.%d student(0 to end):",n);

scanf("%d",&num);}

r->next=0;

return h;

}

void output(struct node *head) /*输出head 所指链表中的学生信息*/

{struct node *p=head->next;

if(p==0)printf("Linklist is null!\n");

else

{ printf("head");

while(p)

printf("->num:%d,name:%s,sex:%c,age:%d",p->num,p->name,p->sex,p->age), p=p->next;

printf("->end\n");}

}

struct node *delete(struct node *head, int age) /*删除head 所指链表中其年龄等于给定值

age 的结点,函数返回删除后的链表头指针*/

{struct node *q=head,*p=q->next;

if(p==0)printf("Linklist is null,cannot deleted!");

else

{ while(p&&p->age!=age)

p=p->next,q=q->next;

if(p->age==age)q->next=p->next,free(p);

else printf("not found!\n");}

return head;

}

(3)从键盘输入一个类型为unsigned long 型的整数,分别将其前两个字节和后两个字

节作为unsigned int 型数据输出。

要求:使用共用体变量实现;有必要的提示信息;用以下数据测试:12345678。

提示:

typedef union u{ unsigned int byte[2]; /*分别存放unsigned long 型数据的高低两个字节的数据*/

unsigned long word; /*存放unsigned long 型数据*/

}BYTE;

【程序源代码:考虑兼容性,两个字节的整型定义用short,输出用%hd,长整型输入用%ld】#include

typedef union u{ unsigned short byte[2]; /*分别存放unsigned long 型数据的高低两个字节的数据*/

unsigned long word; /*存放unsigned long 型数据*/

}BYTE;

main()

{BYTE num;

printf("Input a unsigned long int(for example:12345678):");

scanf("%ld",&num.word);

printf("Decimal:%ld=>first/low two bytes:%hd,high/last two bytes:%hd\n",

num.word,num.byte[0],num.byte[1]);/*十进制输出对照*/

printf("Hexidecimal:%lx=>first/low two bytes:%hx,high/last two bytes:%hx\n", num.word,num.byte[0],num.byte[1]);/*十六进制输出对照*/

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\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() { inta,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() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

C语言程序设计实验-答案

-前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include main() { int r,s; scanf("%d",&r); s=r*r; printf("s=%d\n",s); } 3.-------------------------------- (1) #include main() { printf(" *\n"); printf("***\n"); printf(" *\n"); } (2) #include

{ int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); }

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

C语言程序设计实验报告.doc

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch 语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图

Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数 */ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算 */ { n=sushu(i); /* 做判断素数的函数调用 */ ( 励志天下 ) if(n!=0)/* 对素数的处理 */ { a[j]=n;/* 把素数由大至小存入数组a[ ]中 */ j++; if(j<11) m+=n; /* 统计前10个素数之和 */ } } if(j<10)/* 当素数个数小于10个时,结果输出 */

C语言程序设计实验报告——实验2 数据类型、运算符和表达式

凯里学院 C 语言程序设计 实验报告 ××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日 实验二 数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用step by step 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } (2)按习题3. 7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre" 。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } 装订线 装订线

c语言程序设计实验报告模板

c语言程序设计实验报告模板 篇一:C语言程序设计实验报告 一、实验目的: 1、掌握C语言的数据类型和变量的声明。 2、掌握不同类型数据之间赋值的规律。 3、掌握C语言的运算符和表达式的使用。 4、熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容: ①输人程序:#includevoid main { int a, b; float d,e; char c1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果(2)按习题4. 8要求编写程序题目为: 设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。 程序: 三、实验步骤: ①输人程序: #include void main { int a, b; float d,e; char c1,c2; double f, g; long m, n;

unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果。 预计结果: a=61,b=62 c1=a,c2=b d=``3.56,e=`-6.87 f=````3157.890121,g=```````0.123456 m=50000,n=-60000 p=32768,q=40000(`代表空格) 结果: g的输出看来是四舍五入了。 ③在此基础上,将程序第9~14行改为: a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。 p=a=m=50000;q=b=n=-60000;这两条语句将p、a、m的值和q、b、

C语言程序设计实验报告

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

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

C语言程序设计实验报告

C语言程序设计实验报告 (实验三:C程序的多源文件工程化设计试验)实验成绩: (实验四:函数的调用及参数传递验证试验) 实验成绩: 专业:轨道交通信号与控制 班级:1303班 姓名:郭芸 学号:201310010 指导教师:李建国 兰州交通大学自动化与电气工程学院 2014年05月03日

实验三:C程序的多源文件工程化设计试验 一实验要求: 设计一个发牌的程序,要求按照1-13分别对应同一个花色的牌的数字,按照随机方式发出这13张牌,程序每次运行时发出的牌的顺序不同。 解题思路:随机数的产生需要采用:srand(time(0));语句和(1+rand()%13)两个语句来实现。 1.流程图:

2.编辑环境的截图与过程描述: 3.源代码: #include #include int main() { void Srand(); Srand(); return 0;

} #include #include #include void Srand() { int i,j; int a[13]; srand(time(0)); for(i=0;i<13;i++) { j=1+rand()%13; while(a[j]==1) { j=rand()%13; } a[j]=1; printf("%d ",j+1); } } 4.代码编译链接中编译系统给出的错误、警告内容截图和分析、警告和错误的原因分析,修改是怎样进行的说明: 错误分析:函数定义错误,

5.运行结果截图: 实验四:函数的调用及参数传递验证试验 一实验内容: 设计一个发牌的程序,要求按照1-13分别对应同一个花色的牌的数字,按照随机方式生成这13张牌,并存放于数组中。 1设计包括数组元素作为参数的子函数,在子函数内输出该元素,并改变该元素的值,再次输出; 2设计包括数组名为参数的子函数,在子函数内对数组进行从到大的排序; 排序后在主函数输出; 解题思路:套用实验三的函数,修改实验三的func1函数,让其多加一个改变数组元素值得语句,实现实验四的要求1。增加一个func进行数组元素排序,在func1中调用func2,实现实验四要求2。

C语言程序设计实验指导书

C 语言程序设计 实 验 指 导 书 电子工程学院 2012-2

实验一 C程序的运行环境和编辑、调试、运行简单C程序 一、实验目的 1.了解 Turbo C 的基本操作方法,学会独立使用该系统。 2.掌握在该系统上如何编辑、编译、运行一个C程序。 二、实验内容及步骤 1.进入C的工作环境 1)在Windouws环境下:“开始”→“程序”→“MS-DOS” 屏幕上进入 MS-DOS窗口 2)在Dos环境下:键入命令c:\> cd c:\tc↙ c:\tc> tc↙ 屏幕上出现Turbo C的工作环境 2.熟悉Turbo C的工作环境 了解Edit窗口与Message窗口 了解主菜单的8个菜单项 File Edit Compile Project Option Debug break/watch 3.输入并运行一个简单的程序 File→New 输入源程序:

main() { printf("This is a C program.\n"); printf("OK\n"); } 按F9进行编译和连接,观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 按Run→Run(或按Ctrl+F9) 编译、连接、运行一起完成。 按Run→User screen(或按Alt+F5) 察看运行结果。 按任一键从用户屏切换回TC窗口。 4.输入并编辑第二个C程序 File→New 输入源程序: main ( ) { int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n", sum); }

编辑、运行、调试该程序。 5.编辑、运行、调试自己编写的程序(至少一个程序) 如:输入上底、下底和高,计算梯形面积。 观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 用File→Save (或F2)保存程序(程序名为a1.c) 三、实验报告要求 写明: 1.实验目的 2.实验内容与步骤 3.编写的程序(题目,经调试、运行后正确的程序) 4.编译过程中出现的错误信息。 5.总结讨论本次实验的结果和收获。

C语言程序设计实验六_答案

1.编程实现:该程序的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5) 例如,若从键盘给n输入20后,则输出为s=534.188884。文件名:myf61.c 【参考源程序】 #include void main() { float t=1.0,s=1.; int i,n; scanf("%d",&n); for(i=2;i<=n;i++) { t=t+sqrt(i); s=s+t; } printf("%f",s); } 2.编程实现:将a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,其结 果存放在c数组中。文件名:myf62.c 例如: 若a数组中的值是:1、3、5、7、8 b数组中的值是:2、3、4、5、8 输出结果c中存放的数据是81、64、81、100、100 【参考源程序】: #define N 5 void main() { int a[N],b[N],c[N]; int i; for(i=0;i

} 3.用以下的递归公式求数列a0,a1,……,a19,递归公式为: a0=0; a1= l; a2=1; a i=a i-3十2a i-2+a i-1当i大于2时。Myf63.c 【参考源程序】: #include "stdio.h" void main() {long a[20]={0,1,1},i,j=0; for(i=3;i<=20;i++) a[i]=a[i-3]+2*a[i-2]+a[i-1]; for(i=0;i<20;i++) { if(j++%5==0) printf("\n"); printf("%8ld",a[i]); } } 4.用数组编程。输入10位学生的《C语言程序设计》成绩。求出该门课程的平均成绩, 并求高于平均成绩的人数,该门课程的最高分和最低分,以及该门课程的不及格人数。 文件名:myf64.c 【参考源程序】: #include void main() { int a[10],i,j,max,min,av_c=0,no_c=0; float sum=0,av; for(i=0;i<10;i++) { scanf("%d",&a[i]); sum=sum+a[i]; } max=min=a[0]; av=sum/10; for(i=0;i<10;i++) { if(maxa[i]) min=a[i]; if(a[i]>av) av_c++; if(a[i]<60) no_c++; } printf("\n"); printf("ave=%.2f low_av=%d NOpass=%d\n",av,av_c,no_c); printf("max=%d min=%d",max,min); }

C语言程序设计实验题

一、实验目的 1.掌握赋值语句的功能和使用方法。 2.掌握C语言的数据类型,熟悉不同类型变量的定义及赋值的方法。 3.学会使用C语言的有关算术运算符,以及包含这些运算符的表达式。 4.掌握简单数据类型的输入输出方法,能正确使用格式控制符。 5.学习编制简单的C程序。 二、实验内容(均要求给出运行结果) 1.程序改错题 (1) 以下程序输入一个十进制整数,输出与之对应的八进制数与十六进制数。例如,输入31,输出37(八进制)和1F(十六进制)。请改正程序中的错误。 #include void main() { /**********FOUND**********/ n; printf("输入一个十进制整数:"); /**********FOUND**********/ scanf("%d",n); /**********FOUND**********/ printf("对应的八进制整数是%O\n",n); printf("对应的十六进制整数是%X\n",n); } 正确程序清单:(主体黑色,改错部分红色字体) #include void main() { /**********FOUND**********/ int n; printf("输入一个十进制整数:"); /**********FOUND**********/ scanf("%d",&n); /**********FOUND**********/ printf("对应的八进制整数是%o\n",n); printf("对应的十六进制整数是%x\n",n); } 运行结果:(抓图)

大学一年级下学期C语言程序设计实验报告答案完整版

《C语言程序设计》实验教学大纲 学时课程总:64学分:4 实验学时:24 实验个数:9 实验学分: 1.5 课程性质:必做适用专业:计算机科学技术、网络工程、软件工程、电子商务、教育技术 教材及参考书:《C语言程序设计与实践实验指导》,谢满得邵俊编著,机械工业出版社,2014年1月 大纲执笔人:廖雪花大纲审定人: 一、实验课的性质与任务 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实践性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验课程目的与要求 1.实验目的 通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用Visual C++ 6.0集成环境进行C语言的编写、编译与调试。同时,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,以及培养学生用多函数、多文件组织程序的思维习惯,为今后的后继课程学习和实际工作打下良好基础。 2.实验要求 (1)掌握C语言程序的基本格式,了解C程序的开发过程和C语言中的一些常用概念。 (2)掌握常量和五种基本数据类型变量的使用。 (3)掌握C表达式和运算符的正确使用,熟练掌握数据输入、输出函数。 (4)掌握条件转移语句if-else和选择分支语句switch;掌握三种程序跳转的方法,即break语句、continue语句、return 语句。 (5)掌握循环语句(for语句;do-while语句;while语句)的正确使用,认真体会应该如何组织循环。 (6)掌握数组的定义、赋值,一维数组与二维数组的使用。 (7)掌握函数的定义、函数的调用以及函数的类型说明。 (8)掌握局部变量、全局变量的定义和使用。 (9)掌握指针的基本概念以及数组与指针、指向指针的指针的基本用法。 (10)掌握结构体变量的定义,引用结构体中成员的方法,应用结构数组解决实际问题;共用体的概念,引用共用体中成员的方法。 (11)掌握链表的类型定义及其基本操作。 (12)掌握文件的打开、读写及关闭,并能运用文件提高编程的效率。 (13)理解项目式程序开发的过程。 三、实验项目及内容提要

C语言程序设计实验报告(一)

C语言程序设计实验报告 专业:班级:日期:成绩: 实验组别:第次实验:指导教师: 学生姓名:学号:同组人姓名: 实验名称:指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握带有参数的main函数的用法。 二、实验内容及要求 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上对这个源程序进行调试修改,是之能够正确执行。 源程序: #include int main(void) { float * p; scanf("%f",p); printf("%f\n",*p); return 0; } 2.源程序修改替换 (1)下面源程序的功能是,通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 源程序: #include #include int main(void) { ____________________________ char a[80],b[80],c[160],*result=c; int choice,i;

do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n"); printf("\t\t3 exit.\n"); printf("\t\tinput a number(1-3)please! \n"); scanf("%d",&choice); } while(choice<1||choice>5); switch (choice) { case 1: p=strcpy; break; case 2: p=strcat; break; case 3: goto down; } getchar(); printf("input the first string please! \n"); i=0; _______________________ printf("input the second string please!\n"); i=0; _______________________ result=____(a,b); printf("the result is %s\n",result); down: ; return 0; } (2)请上机运行第(1)题程序使之能按下面要求输出结果(注:(输入)表示该行数据是键盘数据): 1.copy string。 2.Connect string。 3.Exit。 Input a number(1-3)please! 2(输入) Input the first string please! The more you learn,(输入) Input the second string please! The more you get.(输入)

C语言程序设计实验

实验报告 课程C语言程序设计实验项目简单程序设计成绩 专业班级学号批阅日期 姓名实验日期指导教师 一【实验目的】 1.了解使用VC++6.0或CodeBlocks的开发环境,掌握在编译器上如何编辑、编译、连接 和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点; 3.学习变量常量的使用; 4.掌握顺序结构程序设计方法; 二【实验内容】 第一部分:编译环境熟悉及常量变量的使用(2学时) 【实验1—基础题】 要求:完成实验指导书P208页2.2.1第2章实验题:熟悉上机实验环境和不同类型变量的定义与赋值,并把实验结果(包括编写的程序和运行结果)截图粘贴到“实验结果”下方(其他试验项目要求相同,不再重复说明) 目的:熟悉VC++6.0编译环境,了解变量类型和赋值方法 实验结果:

【实验2—验证题】 要求:完成实验指导书P208页2.2.2第3章实验题:编写一个程序从键盘输入球体的半径r,计算球体的体积和表面积,并把实验结果截图到相应位置 目的:熟悉简单的算术运算 实验结果: 第二部分:顺序结构程序设计(2学时) 【实验—3】数学函数及运算表达式的使用 编写程序求函数的值,要求输入一个x,程序输出y的值。 程序分析: (1)声明两个实型变量x、y

(2)用scanf函数从键盘输入一个数给x (3)带入表达式求出y的值并用printf函数输出 注意事项: (1)头文件还应包含数学头文件:#include,绝对值符号用函数fabs实现,7e x 应表达为7*exp(x),度数67应写弧度转换时应注意整除的概念,sin(67.0/180*3.14159),数学公式具体参照实验指导书附录 实验结果: 【实验—4】顺序结构程序设计应用 美国人习惯使用英制计量单位,他们用几尺几寸(英尺英寸)来报自己的身高。如果遇到?个美国人告诉你他的身高是5英尺7英寸,他的身高应该是多少米呢? 编程实现一个英尺转换器,输入英尺英寸,输出对应米数。 提示:换算关系如下: 1英尺=12英寸=30.48厘米 实验结果: 【实验5—延伸训练】算数运算符的使用 要求:编写一个程序,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a中的十位和个位数一次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如:a=45,b=12时,执行程序后,c=4152. 实验结果:

相关文档
最新文档