C语言集中上机报告.docx

上传人:b****7 文档编号:10550740 上传时间:2023-02-21 格式:DOCX 页数:28 大小:85.93KB
下载 相关 举报
C语言集中上机报告.docx_第1页
第1页 / 共28页
C语言集中上机报告.docx_第2页
第2页 / 共28页
C语言集中上机报告.docx_第3页
第3页 / 共28页
C语言集中上机报告.docx_第4页
第4页 / 共28页
C语言集中上机报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言集中上机报告.docx

《C语言集中上机报告.docx》由会员分享,可在线阅读,更多相关《C语言集中上机报告.docx(28页珍藏版)》请在冰豆网上搜索。

C语言集中上机报告.docx

C语言集中上机报告

成绩:

 

实验名称:

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

学生姓名:

彭威威

学生学号:

2010213157

学生专业:

电气工程与自动化

学生班级:

0831004班

指导教师:

李敏、张开碧老师

 

实习时间:

大一下第7、10、11、12周

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

专业班级0831004学号201021315姓名彭威威

第7周,星期日第1—4节实验日期4月10日

一、实验目的

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

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

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

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

二、实验内容

1.使用VC

2.运行简单的C程序

三、实验结果

题目:

编写一个C程序,输入a、b、c三个数,输出其中的最大者:

程序

(一)

#include

voidmain()

{

intmax(int,int,int);

inta,b,c;

printf("pleaseinputthreenumber:

");

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

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

}

intmax(inta,intb,intc)

{

inttemp;

if(a>=b)

temp=a;

elsetemp=b;

if(a>=c)

temp=a;

elsetemp=c;

if(b>=c)

temp=b;

elsetemp=c;

return(temp);

}

程序

(二)

#include

#definemax(x,y,z)(x>y?

x:

y)>z?

(x>y?

x:

y):

z

voidmain()

{

inta,b,c;

printf("pleaseinputthreenumber:

");

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

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

}

四、问题讨论

一个C程序只能含有一个主函数即main()函数,并且总是从main()函数开始执行;

数据类型要一致,比如定义、赋值、运算、输出控制;

 

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

专业班级0831004学号201021315姓名彭威威

第7周,星期日第1—4节实验日期4月10日

一、实验目的

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

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

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

二、实验内容

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

2.算术运算符及表达式

三、实验结果

题目:

输入一串字符串,将其中的大写字母转换成小写字母,其余的保持不变:

#include

voidmain()

{

chars[80],x;

printf("inputacharacter:

");

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);

}

题目:

自加++,自减--练习:

#include

voidmain()

{

inti,j,m,n;

i=8;j=10;

m=++i;n=j++;

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

}

题目:

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

#include

#defineM100

#defineN1000

voidmain()

{

intn,i,sum=0;

printf("theprimenumberis:

\n");

for(n=M;n<=N;n++)

{

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

if(n%i==0)break;

if(i>n/2)

{

sum++;

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

if(sum%5==0)

printf("\n");

}

}

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

}

题目:

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

请输出满足条件的数:

程序

(一)

#include

voidmain()

{

inta1,a2,a3,m=0,n;

for(n=111;n<=444;n++)

{

a1=n/100;

a2=n/10-a1*10;

a3=n%10;

if((a1<=4&&a1>=1)&&(a2<=4&&a2>=1)&&(a3<=4&&a3>=1))

{

if(a1!

=a2&&a1!

=a3&&a2!

=a3)

{

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

m++;

if(m%6==0)printf("\n");

}

}

}

printf("thenumbershave:

%d\n",m);

}

程序

(二)

#include

voidmain()

{

inti,j,k,t,n=0,a[4]={1,2,3,4};

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

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

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

if(i!

=j&&i!

=k&&j!

=k)

{t=a[i]*100+a[j]*10+a[k];

n++;

printf("%-6d",t);

if(n%6==0)printf("\n");}

printf("thenumbershave:

%d\n",n);

}

四、问题讨论

恰当使用i++、循环、if语句的条件控制相结合是一个程序的的功能更多,而且输出时的格式更加美观,结合使用宏定义能更加方便的更改程序。

 

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

专业班级0831004学号201021315姓名彭威威

第10周,星期一第9—12节实验日期4月25日

一、实验目的

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

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

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

二、实验内容

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

2.使用循环控制。

三、实验结果

题目:

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

①求出它是几位数;

②分别输出每一位数字;

③按逆序打出各位数字。

#include

voidmain()

{

intn,i,t,a[10];

printf("输入任意数n:

");

scanf("%d",&n);

for(i=0;n!

=0;i++)

{

a[i]=n%10;

n/=10;

}

printf("这个数是%d位数\n",i);

t=--i;

printf("各位数为:

\n");

for(;i>=0;i--)

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

printf("\n");

printf("逆序各位数为:

\n");

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

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

printf("\n");

}

题目:

编程输出2~1000之间的所有同构数:

#include

voidmain()

{

inti;

printf("满足要求的数有:

\n");

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

if(i*i%1000==i||i*i%100==i||i*i%10==i)

printf("i=%-6di*i=%-6d\n",i,i*i);

}

题目:

输出所有的水仙花数:

#include

voidmain()

{

inti,a,b,c,n=0;

printf("满足要求的数有:

\n");

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

{

a=i/100;

b=i/10%10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)

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

}

}

题目:

求s=a+aa+aaa+aaaa+aa…a的值:

#include

voidmain()

{

inta,b,i,j,n;

longsum=0,s=0;

printf("输入a和个数n:

");

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

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

{

b=a;

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

{

sum+=b;

b*=10;

}

s+=sum;

}

printf("s=%ld\n",s);

}

四、问题讨论

恰当使用嵌套循环和if语句条件控制,利用循环求一个数的各个位数比较方便。

 

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

专业班级0831004学号201021315姓名彭威威

第10周,星期一第9—12节实验日期4月25日

一、实验目的

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

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

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

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

二、实验内容

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

2.使用循环结构;

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

三、实验结果

题目:

用递归法实现:

1!

+2!

+3!

+…+20!

的和:

#include

#defineN20

floatf(intn)

{

if(n==1)return1;

returnn*f(n-1);

}

floatcount(intm)

{

inti;

floatsum=0;

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

sum+=f(i);

returnsum;

}

voidmain()

{

printf("1!

+2!

+3!

+…+20!

=%.0f\n",count(N));

}

题目:

用迭代法求x=

求平方跟的公式的迭代公式为xn+1=

要求前后两次求出的x的差的绝对值小于10-5:

#include

floatmysqrt(floata)

{

floatx=a/2;

floatd=10000;

while(d>1e-5||d<-1e-5)

{

d=x;

x=(x+a/x)/2;

d-=x;

}

returnx;

}

voidmain()

{

floata;

printf("pleaseinputthenumber:

\n");

scanf("%f",&a);

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

}

题目:

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

#include

#include

main()

{

inti,j,k,a[7];

for(i=5623266;;i++)

{k=i;

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

{

a[j]=k%10;

k/=10;

}

for(j=0;a[j]==a[6-j]&&j<=3;j++);

if(j>=3)

{printf("该数为:

%d\n",i);

break;}

}

}

题目:

有两个数a和b,一直a*b=2048,求a、b为何值时,a+b的值最小:

#include

main()

{

inta=0,b=0,min=2049,num_a,num_b;

for(a=1;a<=sqrt(2048);a++)

{

if(2048%a==0)

{

b=2048/a;

if(min>a+b)

{

min=a+b;

num_a=a;

num_b=b;

}

}

}

printf("最小时:

a=%db=%d\n",num_a,num_b);

}

题目:

讲一个正整数分解质因数:

#include

voidmain()

{

intn,k=2,i;

printf("输入一个数:

\n");

scanf("%d",&n);

printf("%d=",n);

while(n>=k)

{if(n==k)

{printf("%d",k);break;}

else

if(n%k==0)

{printf("%d*",k);n=n/k;k=2;}

else

k=k+1;

}

printf("\n");

}

四、问题讨论

将循环、continue和break恰当结合控制循环的执行,递归调用在适当条件下可以替代循环结构的功能。

 

实验名称数组

专业班级0831004学号201021315姓名彭威威

第11周,星期六第5—8节实验日期5月7日

一、实验目的

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

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

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

二、实验内容

1.对数组中的数排序;

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

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

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

三、实验结果

题目:

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

#include

voidmain()

{

inti,j,n,a[5]={10,20,30,40};

printf("输入数n:

");

scanf("%d",&n);

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

if(a[i]>n)break;

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

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

a[i]=n;

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

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

printf("\n");

}

题目:

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

#include

#include

voidmain()

{

inti,j,n=0;

charstr1[100],str2[100];

printf("输入str1、str2:

\n");

gets(str1);

gets(str2);

for(i=0;i

for(j=0;j

if(str1[i]==str2[j])

{printf("%c",str1[i]);

n++;}

if(n==0)printf("空集");

printf("\n");

}

题目:

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

#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,a[4][4];

printf("输入4×4数组:

\n");

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

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

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

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

sum+=a[i][i]+a[i][3-i];

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

}

题目:

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

#include

#defineN11

voidmain()

{

inti,j,sum=0,a[N][N]={1};

for(i=1;i

for(j=1;j

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

for(i=1;i

{

for(j=1;j

if(a[i][j]!

=0)

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

printf("\n");

}

}

题目:

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

#include

intfun(inta)

{

intb=0,i=0,j=0;

intx[80];

while(a!

=0)

{

x[i]=a%16;

a=a/16;

j++;

i++;

}

for(i=j-1;i>=0;i--)

b=b*16+x[i];

returnb;

}

voidmain()

{

inta,b;

printf("请输入一个16进制数\n");

scanf("%x",&a);

b=fun(a);

printf("十进制数为%d\n",b);

}

 

四、问题讨论

数组在定义时的长度要是已知的,不能为变量,可以用宏定义来指定数组的长度,这能方便更改数组的长度。

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

 

实验名称函数

专业班级0831004学号201021315姓名彭威威

第11周,星期六第1—4节实验日期5月7日

一、实验目的

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

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

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

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

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

二、实验内容

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

2.嵌套调用函数;

3.递归调用函数;

三、实验结果

题目:

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

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

#include

#defineN5

intcount(charc[],intn)

{

inti,sum=0,count=0;

floataverage;

for(i=0;i

sum+=c[i];

average=sum/n;

for(i=0;i

if(c[i]>average)

count++;

returncount;

}

voidmain()

{

inti,a[N];

printf("输入N个学生的成绩:

");

for(i=0;i

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

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

}

题目:

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

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

#include

#include

floatf1(floata,floatb,floatc)

{

floaty=b*b-4*a*c;

floatx1;

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

returnx1;

}

floatf2(floata,floatb,floatc)

{

floaty=b*b-4*a*c;

floatx2;

x2=(-b-sqrt(y))/2/a;

returnx2;

}

float

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

当前位置:首页 > 医药卫生 > 基础医学

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

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