C程序设计上机实验报告Word下载.docx

上传人:b****6 文档编号:21124470 上传时间:2023-01-27 格式:DOCX 页数:25 大小:130.09KB
下载 相关 举报
C程序设计上机实验报告Word下载.docx_第1页
第1页 / 共25页
C程序设计上机实验报告Word下载.docx_第2页
第2页 / 共25页
C程序设计上机实验报告Word下载.docx_第3页
第3页 / 共25页
C程序设计上机实验报告Word下载.docx_第4页
第4页 / 共25页
C程序设计上机实验报告Word下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C程序设计上机实验报告Word下载.docx

《C程序设计上机实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《C程序设计上机实验报告Word下载.docx(25页珍藏版)》请在冰豆网上搜索。

C程序设计上机实验报告Word下载.docx

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("

%c%c%c%c%c\n"

&

c1,&

c2,&

c3,&

c4,&

c5);

←需改进处

return0;

}

问题分析:

输出函数printf书写错误,加上了&

符号

解决方法:

删除&

p.s.输入函数scarf是才需要(“%?

”,&

改进后:

c1,c2,c3,c4,c5);

←改进处

}

⑤ 用户屏幕:

实验

(二)

数列计算

利用循环语句对简单规律的数列进行混合运算

将整个混合计算分解为对单个独立规律的数列的计算。

以此计算自然数列1+2+3+4,平方数列1*1+2*2+3*3+4*4,分母为自然数的数列1/1+1/2+1/3+1/4.最后将三个数列的和汇总。

{floatsum=0,sum1,sum2,sum3,i1,i2,i3;

for(sum1=0,i1=1;

i1<

4;

i1=i1+1)

sum1=sum1+i1;

for(sum2=0,i2=1;

i2<

i2=i2+1)

sum2=sum2+i2*i2;

for(sum3=0,i3=1;

i3<

i3=i3+1)

sum3=sum3+(1/i3);

sum=sum1+sum2+sum3;

sum=%f\n"

sum);

return0;

实验(三)

显示改进

将书上的例子进行改进,使显示出的结果更加清晰明了

在书本内原有基础上增加一个计数变量i,每循环一次是使技术变量增加1

{intn,i=0;

for(n=100;

n<

=200;

n++)

{if(n%3==0)

continue;

%d"

n);

i++;

if(i%5==0)

\n"

);

}

单个数字输出之间无间隔,使用户易读取错误数字

对输出进行限制,例如改为“%5d”

%5d"

实验(四)

使显示出的结果更加清晰明

在不使用实验三的计数变量的情况下,通过增加计数循环来控制换行

{inti,j;

for(i==1;

i<

=4;

i++)←需改进处

{for(j==1;

j<

=5;

j++)←需改进处

i*j);

return0;

对整型变量i,j错误使用了关系运算符

解决方案:

将关系运算符改为赋值语句

for(i=1;

i++)←改进处

{for(j=1;

j++)←改进处

实验(五)

估算

通过给定公式对π值进行估算,同时掌握对精度值判断的方法

通过while循环表示分母为奇数的数列,由绝对值来判断其末项。

有中间变量sign,sn来分布计算值,最后汇总到Pi

math.h>

{intsign=1,n=1.0;

doublePi,Sn=0.0,time;

←需改进处

while(fabs(1/n)>

=1e-6)

{Sn=Sn+sign*(1/n);

n=n+2;

sign=-sign;

Pi=4*Sn;

time=(n-1)/2;

Pi=%f\ntime=%d"

Pi,time);

输出不正确,Pi=4

由于n定义为整型,所以虽然Pi是双精度实型,但是输出仍旧只能是整型,故应将n定义为双精度实型

{intsign=1;

doublePi,Sn=0.0,time,n=1.0;

←改进处

Pi=%f\ntime=%d\n"

实验(六)

循环语句互换

输出三个数字就换行;

将for循环语句用while循环语句代替

将for语句第一分句提到while结构之前。

第二语句以及for循环内容合并作为while语句内容。

第三分句改为while内部限制条件。

{intf1=1,f2=1,f3;

inti;

%d\n%d\n"

f1,f2);

i=1;

while(i<

=38)

{f3=f2+f1;

f3);

if(i%3==1)

f1=f2;

f2=f3;

i++;

f1、f2、f3是同一列输出;

单个数字之间没有间隔;

经过二的改变后,由于i增加到接近38时f123变得极大所以“%5d”仍不能使各列对齐

去掉f1、f2输出时的换行符;

输出时改为"

%15d"

%d%d"

i=1;

if(i%3==1)printf("

实验(七)

统计程序

运用循环结构统计字符串内各类型字符的数量

输入字符串。

依次对所输入字符串进行扫描,分类进行统计,每扫描一个字符在其对应的类型加一

{charc;

intm=0,n=0,q=0,p=0;

pleaseenterc=?

scanf("

%c"

c);

while(c!

='

\n'

{if(c>

A'

&

c<

Z'

||c>

z'

m=m+1;

elseif(c=='

'

n=n+1;

elseif(c>

0'

9'

p=p+1;

elseq=q+1;

letter=%d,space=%d,number=%d,other=%d\n"

m,n,p,q);

(输入内容为12*&

mo)

实验(八)

数组使用

从a[1]开始使用数组

利用for循环,设定i为计数变量,i从1考试赋值

{inta[11],i,j,t;

pleaseenter10numberstoa[i]\n"

=10;

i++)

a[i]);

for(j=1;

j++)

=10-j;

i++)

if(a[i]>

a[i+1])

{t=a[i];

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

a[i+1]=t;

a[i]);

printf("

实验(九)

排序

训练自己基础算法设计能力

通过循环来进行一次筛选。

将两两比较中,小的一个数换为编号小的数,一次进行,直到每两个相邻的数都进行一次比较。

起泡法。

{inta[10],i,j,t;

for(i=0;

=9;

for(j=0;

=9-j;

实验(十)

二维数组使用

交换顺序输出矩阵

通过两个循环来分别控制行和列的循环,按照循环的顺序在for语句中加入矩阵内数字的递推公式。

{inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

Arraya:

=1;

for(j=0;

=2;

{printf("

a[i][j]);

}←需改进

\nArrayb:

{b[j][i]=a[i][j];

printf("

b[j][i]);

编写时格式没有正确输出,是123456;

152436这样的

只用在第二层for循环内加printf("

就行了,因为第二层for循环本来就是要显示完整个一行以后才出现第二行的内容

{for(j=0;

}←改进

{for(i=0;

i++)

实验(十一)

对数组内数值进行排序,并输出最大数值所在的编号

采用实验九的排序方法,每比较一次,则将i值替换为n值,由n来体现编号,并且在程序最后增加输出n

{intmax,a[3][4],hang,lie,i,j;

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

max=a[0][0];

for(i=0;

=3;

{if(a[i][j]>

max)

max=a[i][j];

hang=i;

lie=j;

max=%d\nhang=%d\nlie=%d"

max,hang,lie);

数组的定义与初始化没有区分清楚,造成重复定义

改进方案:

删除inta[3][4],只保留初始化行

{intmax,hang,lie,i,j;

max=%d\nhang=%d\nlie=%d\n"

实验(十二)

字符串函数比较的探究

字符串比较函数中,str1大于/小于/等于str2会输出什么数字?

利用字符串比较函数编写比较函数,改变被比较值进行试验,从而得到具体数值

string.h>

{inta;

a=strcmp("

※"

"

a);

(改变※的值为:

a/a,a/c,c/a;

分别得到结果0/-1/1)

a/a

a/c

c/a

实验(十三)

比较字符串大小

比较大小,并输出结果

利用strcmp函数进行比较,由strcpy函数进行对换,最后输出结果

#include<

{charstr1[20],str2[20],str3[20];

charmax[20];

pleaseenterstr1,str2,str3.\n"

gets(str1);

gets(str2);

gets(str3);

if(strcmp(str1,str2)>

0)

strcpy(max,str1);

elsestrcpy(max,str2);

if(strcpy(str3,max)>

strcpy(max,str3);

themaxstringis%c\n"

max);

输出总为“0”

将输出格式改为字符串%s

themaxstringis%s\n"

实验(十四)

统计

训练字符数组的使用能力

先输入字符数组,在逐个扫描统计各个字符数量

{charstr[3][80];

inti,j,m=0,n=0,p=0,q=0,w=0,s;

gets(str[3][80]);

=79;

{if(str[i][j]>

str[i][j]<

m++;

elseif(str[i][j]>

n++;

p++;

elseif(str[i][j]=='

q++;

elsew++;

thereare%dcapitalletters,%dsmallletters,%dnumbers,%dspaces,%dothersighs.\n"

m,n,p,q,w);

编写“输入数组”错误写成了gets(str[3][80])

添加循环,分行输入

for(s=0;

s<

s++)

gets(str[s]);

实验(十五)

连续输出字符数组

不使用strcpy函数进行连续输出

输入两个字符串,用scanf函数连续输出

{charstr1[81],str2[81];

%s%s\n"

str1,str2);

实验(十六)

输出字符串

不适用strcpy函数进行覆盖输出

输入两个字符串,用if语句进行比较,用赋值语句进行覆盖,在输出被覆盖的字符

{chars2[81],s1[81];

gets(s2);

gets(s1);

s2[i]!

\0'

s1[i]=s2[i];

printf('

strings1=%s\n"

s1);

由于定义字符数组时写的是【81】,结果输出结果是中间未利用的部分就造成乱码现象

定义短些,或者直接输入字符串,不由用户输入字符串

{chars2[]="

a"

s1[]="

def"

实验(十七)

斐波那契数列

利用函数编写斐波那契数列

将斐波那契数列的递推公式定义为函数F,通过函数进行计算

{intn,m;

intF(intx);

pleaseentern.\n"

n);

m=F(n);

F(n)=%d\n"

m);

retur

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

当前位置:首页 > 解决方案 > 学习计划

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

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