重庆邮电大学自动化集中上机实验报告.docx

上传人:b****2 文档编号:23127740 上传时间:2023-05-08 格式:DOCX 页数:40 大小:1.01MB
下载 相关 举报
重庆邮电大学自动化集中上机实验报告.docx_第1页
第1页 / 共40页
重庆邮电大学自动化集中上机实验报告.docx_第2页
第2页 / 共40页
重庆邮电大学自动化集中上机实验报告.docx_第3页
第3页 / 共40页
重庆邮电大学自动化集中上机实验报告.docx_第4页
第4页 / 共40页
重庆邮电大学自动化集中上机实验报告.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

重庆邮电大学自动化集中上机实验报告.docx

《重庆邮电大学自动化集中上机实验报告.docx》由会员分享,可在线阅读,更多相关《重庆邮电大学自动化集中上机实验报告.docx(40页珍藏版)》请在冰豆网上搜索。

重庆邮电大学自动化集中上机实验报告.docx

重庆邮电大学自动化集中上机实验报告

成绩:

 

实验名称:

集中上级1——C语言程序设计

学生姓名:

学生学号:

学生专业:

学生班级:

指导教师:

 

实习时间:

大一下第5、8、9、12周

实验名称C语言运行过程、简单的C程序设计

一:

实验目的

1.了解VC软件的窗口界面,熟练掌握VC的菜单命令及相应的键命令,并在VC环境下掌握如何编辑、编译、连接、运行一个C程序过程滨如何保存和修改C语言的源程序。

2.通过运行一个简单的C程序过程,逐步了解C程序的基本结构及特点。

3.掌握C语言的基本数据类型,熟悉它们的使用方法及定义方式,了解几种类型数据输出是用的格式转换符(整型、字符型、实型),熟悉各种运算符和表达式的使用特点。

4.熟悉掌握C中赋值运算的使用。

二:

实验内容

5.使用VC

6.运行简单的C程序

三:

实验结果

第一题:

输出三个数中的最大值

#include

voidmain()

{

inta,b,c,max;

printf("请输入三个数:

");

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

max=(a>b)?

a:

b;

max=(max>c)?

max:

c;

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

}

 

 

第二题:

输出四个数中的最大值

#include

voidmain()

{

inta,b,c,d,max1,max2,max;

printf("请输入四个数:

");

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

max1=(a>b)?

a:

b;

max2=(c>d)?

c:

d;

max=(max1>max2)?

max1:

max2;

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

}

 

四:

问题讨论(实验心得和体会)

通过运行一个简单的C程序过程,掌握Vc的界面以及功能,了解C程序基本结构及特点以及掌握简单的编程思路,

 

实验名称数据类型、运算符和表达式

一:

实验目的

1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。

2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

3.进一步实习C程序的编辑、编译、连接和运行的过程。

二:

实验内容

1.定义一个整型、字符型、实型变量以及对它们赋值

2.算术运算符及表达式

三:

实验结果

第一题:

将大写字母转换成小写字母后输出,怎样写程序

#include

voidmain()

{

chars[80],x;

printf("inputacharacters:

");

gets(s);

x=0;

while(s[x]!

='\0')

{

s[x]=(s[x]>='A'&&s[x]<='Z')?

(s[x]+32):

s[x];

x++;

}

s[x]='\0';

puts(s);

}

第二题i++,++i,i--,--i的练习

(1)#include

voidmain()

{

inti,j,m,n;

i=8;

j=9;

m=++i;

n=j++;

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

}

(2)#include

voidmain()

{

inti,j,m,n;

i=8;

j=9;

m=i++;

n=++j;

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

}

(3)#include

voidmain()

{

inti,j,m,n;

i=8;

j=9;

m=i++;

n=++j;

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

}

(4)#include

voidmain()

{

inti,j,m,n;

i=8;

j=9;

m=i++;

n=++j;

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

}

第三题:

将100-1000之间的所有素数按每个数之间空3列并且每行只输出5个素数

#include

#include

voidmain()

{

intm,k,i,n=0;

for(m=101;m<=1000;m=m+2)

{

k=sqrt(m);

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

if(m%i==0)break;

if(i>=k+1)

{

printf("%d",m);

n=n+1;

}

if(n%5==0)

printf("\n");

}

printf("\n");

}

 

第四题:

有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?

请输出满足条件的数。

#include

voidmain()

{

inti,j,k,sum=0;

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

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

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

if(i!

=j&&j!

=k&&i!

=k)

{

printf("%d",i*100+j*10+k);

sum=sum++;

if(sum%5==0)

printf("\n");

}

printf("\n");

printf("总共有%d个数\n",sum);

}

四:

问题讨论

正确恰当的使用循环for,if语句很重要,熟悉自加(++)和自减(--)运算符的使用,要想学好C语言,必须付出努力,多读多写程序。

 

实验名称逻辑运算与分支判断结构程序设计

一:

实验目的

1.了解C语句表达逻辑量得方法(以0代表“假”以1代表“真”);

2.学会正确使用逻辑运算符和逻辑表达式;

3.熟练掌握if语句和switch语句。

二:

实验内容

1.使用逻辑运算符和逻辑表达式;

2.使用循环控制。

三:

实验结果

第一题:

非零即真,零既假。

第二题:

(1)#include

voidmain()

{

inta=7;

floatx=2.5,y=4.7,t;

t=x+a%3*(int)(x+y)%2/4;

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

}

(2)#include

voidmain()

{

inta=2,b=3;

floatx=3.5,y=2.5,t;

t=(float)(a+b)/2+(int)x%(int)y;

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

}

第三题:

3.给一个不多于5位的正整数,要求:

求出它是几位数;

分别输每一位数字;

按逆序输出各位数字(例如原数321,应输出123)。

#include

voidmain()

{

intnum,j,m,n,s,i=0;

printf("pleaseinputnum\n");

scanf("%d",&num);

s=num;

do

{

num=num/10;

i++;

}while(num!

=0);

printf("输入的是%d位数\n",i);

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

{n=s%10;

m=s/10;

s=m;

printf("%d",n);

}

}

第四题:

所谓‘同构数’是指它出现在它的平方数的右端。

如:

6的平方数是36,6出现在36的右端,6就是一个同构数。

编程输出2-1000之间的所有同构数。

 

#include

voidmain()

{

inti,j,k;

k=10;

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

{

if(i==k)k*=10;

j=i*i;

if(j%k==i)printf("%d%d\n",i,j);

}

}

第五题:

水仙花数”是一个三位数,其各位数立方和等于该数本身,输出所有的水仙花数

#include

#include

voidmain()

{

inti,j,k,m;

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

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

for(k=0;k<=9;k++)

{

m=i*100+j*10+k;

if(m==pow(i,3)+pow(j,3)+pow(k,3))

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

}

}

第六题:

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数字相加),几个数相加由键盘控制。

请由键盘输入a和个数的值后输出s的值。

#include

voidmain()

{

inta,n,i,s=0;

printf("pleaseinputa,n\n");

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

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

{

s=s+a;

a=a+a*10;

}

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

}

四:

问题讨论

通过学习本实验学会了一些编程的常用技巧;了解C语句表示逻辑量的方法;学会正确适应逻辑运算符和逻辑表达式;熟练使用嵌套循环和if语句条件控制,利用循环求一个数的各个位数比较方便。

 

实验名称循环结构程序设计

一;实验目的

1.熟悉while语句,do……while语句和for语句实现循环的方法;

2.熟练掌握循环结构的嵌套;

3.掌握break和continue语句的使用;

4.练习调试与修改程序。

二;实验内容

1.使用while语句、do-while语句编写程序;

2.使用循环结构;

3.使用迭代法编写程序。

三;实验结果

第一题:

用递归法编程实现1!

+2!

+、、、、、+20!

的和

#include

intfac(intm)

{if(m==1)return1;

elsereturnm*fac(m-1);

}

voidmain()

{

inti;

longintsum=0;

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

sum+=fac(i);

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

}

第二题;

用迭代法求x等于根号a.求平方根的迭公式为

=

要求前后两次求出的x的差的绝对值小于

#include

#include

voidmain()

{

floatx0,x1,a;

printf("请输入a的值:

");

scanf("%f",&a);

x1=a/2;

do

{

x0=x1;

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

}

while(fabs(x0-x1)>=0.00001);

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

}

第三题:

有一个数是5623265,它是一个左右对称,求比它大的对称数中的最小数并输出。

#include

voidmain()

{

intx=5623265,i;

inta,b,c,d,e,f,g;

for(i=x;;i++)

{

a=i/(1000000);

b=i%1000000/100000;

c=i%100000/10000;

d=i%10000/1000;

e=i%1000/100;

f=i%100/10;

g=i%10;

if(a==g&&b==f&&c==e&&i>x)

break;

}

printf("比它大的数的最小的一个为%d\n",i);

}

第四题:

有两个正整数a,b,已知a*b=2048,求a,b各位何值时,a+b最小。

#include

#include

voidmain()

{

inta,b,min=2048,X1,X2;

for(a=1;a

{

if(2048%a==0)

{b=2048/a;

if(min>a+b)

{min=a+b;

X1=a;

X2=b;

}

}

}

printf("a=%db=%d\n",X1,X2);

}

第五题;

将一个正整数分解质因数。

例如输入90,打印出90=2*3*3*5.

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下属步骤完成;

(1)如果这个质数恰好等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n>k能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

#include

voidmain()

{

inta,i;

printf("输入一个数a:

");

scanf("%d",&a);

printf("%d=",a);

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

{

while(a!

=i)

{

if(a%i==0)

{

printf("%d*",i);

a=a/i;

}

else

break;

}

}

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

}

四:

问题讨论

使用while语句,do…while语句和for语句编写程序,学会用break和continue语句,递归调用在适当条件下可以替代循环结构的功能。

 

实验名称数组

一:

实验目的

1.掌握数组的定义、赋值和输入输出的方法;

2.掌握字符数组和字符串函数的使用;

3.掌握与数组有关的算法(例如排序算法)。

二:

实验内容

1.对数组中的数排序;

2.计算字符串中某个特定字符的个数;

3.算出数组中最大值、最小值;

4.向数组中插入数或者字符。

三:

实验结果

第一题:

已有一个已排好序的数组,输入一个数,要求按原来的排序规律将其插入数组中:

#include

voidmain()

{

inta[5]={2,5,8,13,20};

inti,j,x;

printf("插入之前的顺序为:

\n");

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

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

printf("\n");

printf("插入的数是:

\n");

scanf("%d",&x);

if(a[5]

a[6]=x;

else

{

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

if(a[i]>x)

{

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

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

a[i]=x;

break;

}

}

printf("插入之后的顺序为:

\n");

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

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

printf("\n");

}

第二题:

任意输入俩个字符串s1和s2,要求每个字符串中无重复的字符,求两者的交集的字符,若空则输出相应的提示符:

#include

voidmain()

{

inta[5],b[5];

inti,j;

printf("输入数组a的值:

\n");

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

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

printf("输入数组b的值:

\n");

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

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

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

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

{

if(a[i]==b[j])

printf("相同字符有:

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

}

}

第三题:

一个含有若干字符的字符串,分别找出其中的字母和数字,其余的字符一概不计,将重复的去掉后,分别按升序排列后输出:

#include

#include

voidmain()

{

chartemp,str1[80],str2[80];

inti,k,j=0;

gets(str1);

for(i=0;i

if(str1[i]>='0'&&str1[i]<='9'||str1[i]>='A'&&str1[i]<='Z'||str1[i]

>='a'&&str1[i]<='z')

str2[j++]=str1[i];

str2[j]='\0';

for(i=0;i

{

k=i;

for(j=i+1;j

if(str2[k]>str2[j])k=j;

if(i!

=k)

{

temp=str2[i];

str2[i]=str2[k];

str2[k]=temp;

}

}

j=1;

for(i=0;i

if(str2[i]!

=str2[i+1])

str2[j++]=str2[i+1];

str2[j]='\0';

puts(str2);

}

第四题

求一个4×4矩阵对角线元素之和(中间交叉点上的数只计算一次)

#include

voidmain()

{inti,j,sum=0;

inta[4][4]={{0},{0},{0},{0}};

printf("请输入数组a:

\n");

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

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

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

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

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

if(i==j||i+j==3)

sum+=a[i][j];

printf("对角线元素之和为%d\n",sum);

}

第五题:

打印出杨辉三角形(要求打印出10行):

#include

voidmain()

{inta[10][10]={1},i,j;

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

{a[i][0]=1;

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

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

}

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

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

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

printf("\n");

}

}

第六题:

写一个函数,输入一个十六进制数,输出相应的十进制数:

#include

#include

voidmain()

{

chara[100];

inti,j=1,n=0;

printf("请输入一个十六进制数:

\n");

gets(a);

for(i=strlen(a)-1;i>=0;i--,j=j*16)

{

if(a[i]<='9'&&a[i]>='0')

n+=(a[i]-'0')*j;

elseif(a[i]<='F'&&a[i]>='A')

n+=(a[i]-55)*j;

elsen+=(a[i]-87)*j;

}

printf("该十六进制数对应的十进制数为:

%d\n",n);

}

四:

问题讨论

数组在定义时的长度必须是一个已知的数,不能是变量,在实验中掌握数组的定义,赋值和输入和输出的方法。

字符数组和字符串函数的使用,与数组有关的算法。

字符数组的结束标志也可以恰当用在循环中作为结束标志;调用strlen()函数来测定字符串的长度也可以用在终止循环结构。

 

实验名称函数

一:

实验目的

1.掌握C语言函数的定义方法、函数的声明及函数的调用方法;

2.了解主调函数和被调函数之间的参数传递方式;

3.掌握函数的嵌套调用和递归调用的方法;

4.熟悉不同变量的作用域;

5.掌握变量的存储类型及变量说明的一般形式,熟练掌握存储类型区分符的表示方式用auto表示自动变量、extern(外部)、static(静态)、register(寄存器)。

二:

实验内容

1.定义函数、声明函数、调用函数;

2.嵌套调用函数;

3.递归调用函数;

三:

实验结果

第一题:

定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。

用主函数调用它,统计5个学生中,高于平均成绩的有多少人:

#include

intfac(inta[],intn)

{

inti,m=0;

floatsum=0,ave;

for(i=0;i

sum+=a[i];

ave=sum/n;

for(i=0;i

if(ave

m++;

returnm;

}

voidmain()

{

inti,str[5];

printf("pleaseinputstudentgrade:

\n");

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

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

fac(str,5);

printf("高于平均成绩的有%d个人\n",fac(str,5));

}

第二题

编写求方程ax2+bx+c=0根程序,用三个函数分别求出当b2-4ac大于0、等于0和小于0的根。

要求从主调函数输入a,b,c的值并输出相应提示或根的结果:

#include

#include

floatfac(floata,floatb,floatdisc)

{

floatx1,x2;

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf("x1=%f,x2=%f\n",x1,x2);

}

floatFac(floata,floatb,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1