实验10C语言运行环境文档格式.docx
《实验10C语言运行环境文档格式.docx》由会员分享,可在线阅读,更多相关《实验10C语言运行环境文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
c2=‘b’;
printf(“%c%c\n”,c1,c2);
(1)运行此程序;
(2)在程序的最后增加语句“printf(“%d%d\n”,c1,c2);
”再运行,并分析结果;
(3)将程序的第4行“charc1,c2;
”改为“intc1,c2;
”后再运行,并分析结果;
(4)将程序的第5、6行改为:
c1=a;
/*不用单撇号*/
c2=b;
再运行,并分析结果;
运行出现一个错误。
因为a,b是常量字符,将它赋值给一个变量字符,不能运行。
(5)再将程序的第5、6行改为:
c1=”a”;
/*用双撇号*/
c2=”b”;
(6)再将程序的第5、6行改为:
c1=300;
/*用大于255的整数*/
c2=400;
再运行,并分析结果。
2.输入以下程序:
charc1=‘a’,c2=‘b’,c3=‘c’,c4=‘\101’,c5=‘\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c%c”,c4,c5);
先用人工分析程序,写出应得结果,再与运行结果比较。
应输出:
aabbccabcAN
3.输入并运行下面的程序
voidmain()
inta,b;
unsignedc,d;
longe,f;
a=100;
b=-100;
e=50000;
f=32767;
c=a;
d=b;
printf(“%d,%d\n”,a,b);
printf(“%u,%u\n”,a,b);
printf(“%u,%u\n”,c,b);
c=a=e;
d=b=f;
printf(“%u,%u\n”,c,d);
请对照程序和运行结果分析:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果;
原样输出。
(2)将一个大于32767的长整数赋给整型变量,会得到什么结果;
(3)将一个长整型数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或等于65535以及小于65535的情况)。
大于或等于65535时:
原样输出;
小于65535时:
同学们可以改变程序中各变量的值,以便比较。
例如:
a=65580,b=-40000,e=65535,f=65580。
4.输入以下程序:
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
(1)运行程序,分析变量:
i、j、m、n的值
(2)将第7、8行改为:
m=i++;
n=++j;
再运行并分析结果;
(3)将程序改为:
inti,j;
printf(“%d,%d\n”,i++,j++);
运行并分析结果;
(4)在(3)的基础上,将printf语句改为:
printf(“%d,%d”,++i,++j);
(5)再将printf语句改为:
printf(“%d,%d,%d,%d”,i,j,i++,j++);
(6)将程序改为:
inti,j,m=0,n=0;
m+=i++;
n-=--j;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
}
最后,对这次实验作一个简要的总结。
1.阅读下面的程序,说明其功能,然后运行并观察分析结果。
程序一:
intx,y;
printf(“Enterintegerxandy:
\n”);
scanf(“%d%d”,&
x,&
y);
printf(“x=%d,y=%d\n”,x,y);
if(x>
y)printf(“x=%d\n”,x);
if(y>
x)printf(“y=%d\n”,y);
if(x==y)printf(“x=y=%d\n”,x);
功能:
判断两个数的大小,然后分别输出相应的值;
分析:
无论x>
y或y>
x,都分别输出x和y的值,若x==y,则输出x。
程序二:
inta,b,c,t;
printf(“inputintegera,b,c:
scanf(“%d%d%d”,&
a,&
b,&
c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
if(b>
{t=b;
b=c;
printf(“%d,%d;
%d\n”,a,b,c);
将a,b,c按小到大的顺序排列。
若if句成立,则运行后面花括号的结果。
程序三:
intn;
printf(“Enterintegern:
”);
scanf(“%d”,&
n);
if(n%2)
printf(“n=%disodd.\n”,n);
else
printf(“n=%diseven.\n”,n);
判断输出n的值为奇数还是偶数。
若输入n的值为奇数,则输出“n=11isodd”,若输入n的值为偶数,则输出“n=12iseven”。
程序四:
printf(“n=%d\n”,n);
if(n>
=90)
printf(“A\n”);
elseif(n>
=80)
printf(“B\n”);
=70)
printf(“C\n”);
=60)
printf(“D\n”);
printf(“E\n”);
通过判断输入的成绩,输出相应的等级。
若n>
=90,为A等,若n>
=80,为B等,若n>
=70,为C等,若n>
=60,为D等,其余为E等。
程序五:
inta=3,b=4,c=5,d=0;
d=a;
if(c>
d=c;
d=b;
d=%d\n"
d);
判断最大值。
判断定义的a,b,c,d,找出最大值,然后附值给d,然后输出d。
程序六:
intc;
scanf("
%d"
&
if(‘0’<
=c&
&
c<
=‘9’)/*条件表达式*/
{
c=c-‘0’;
printf("
c=%d\n"
}
else
dataerror!
\n"
);
功能:
根据条件,得出结果。
若满足条件,则运行c=c-‘0’。
并输出相应的值。
2.对于如下函数:
编写程序,用scanf函数输入x的值,求y值。
程序:
{intx,y;
输入x:
"
x);
if(x<
1)
{y=x;
x=%3d,y=x=%d\n"
x,y);
else
10)
{y=2*x-1;
x=%d,y=2*x-1=%d\n"
x,y);
{y=3*x-11;
x=%d,y=3*x-11=%d\n"
return0;
运行程序,输入x的值(分别为x<
1、1≤x<
10、x≥10三种情况,如0.5、8、15),检查输出的y值是否正确。
x=0.5
不正确,因为x,y已经被定义为整型。
x=8
正确
x=15
3.将第1题的程序四中的if语句改用switch语句实现,写出程序并运行。
程序:
{floatscore;
chargrade;
请输入学生成绩:
%f"
score);
while(score>
100||score<
0)
{printf("
\n输入有误,请重输"
switch((int)(score/10))
{case10:
case9:
grade='
A'
break;
case8:
B'
case7:
C'
case6:
D'
case5:
case4:
case3:
case2:
case1:
case0:
E'
成绩是%5.1f,相应的等级是%c\n"
score,grade);
5.编写程序,用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。
实验步骤与要求:
(1)有变量定义为整型。
(2)输入前要加提示语句。
(3)输出结果前要有必要的文字说明。
说明:
(1)闰年的条件是:
year能被4整除但不能被100整除,或者year能被400整除。
(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。
intyear;
intr;
请输入年份:
year);
r=year%400==0||year%100!
=0&
year%4==0;
这一年二月有%d\n天"
28+r);
return1;
总结:
平常多看书,才做得快。
1.编写输入m和n(其中,m<
n),求m+(m+1)+…+n的和的程序
intmain()
{inti,s=0,m,n;
m,&
for(i=m;
i<
=n;
i++)
s=s+i;
%d\n"
s);
结果:
2.下面程序的功能是计算n!
。
inti,n,s=1;
Pleaseentern:
for(i=1;
s=s*i;
%d!
=%d\n"
n,s);
首次运行先输入n=4,输出结果为4!
=24,这时是正确的。
为了检验程序的正确性,再输入n=10,输出为10!
=24320,这显然是错误的。
为了找到程序的错误,可以通过单步执行来观察变量的变化。
分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。
inti,n;
doubles=1;
=%f\n"
3.下列程序用于输出fibnocci数列的前20项,每行输出5个。
请补充完整后运行。
/*fibnocci数列的前两项均为1,以后各项等于其前两项之和。
*/
inti,f1,f2,f3,n;
f1=1;
f2=1;
\n%5d%5d"
f1,f2);
n=2;
i<
=20;
i++)
{
if(n%d==0)printf("
f3=f2+f1;
%5d"
f3);
n++;
f1=f2;
f2=f3;
}return0;
4.编写程序,输出100以内能被7整除的数。
提示:
对7~100的每一个数进行测试,如该数不能被7整除,即模运算不为0,则由continue语句转去下一次循环。
只有模运算为0时,才能执行后面的printf语句,输出能被7整除的数。
{inti,n;
scanf("
for(i=7;
if(i%7==0)
i);
5.编写程序打印图形
1
121
12321
1234321
123454321
1
分别使用递增循环和递减循环完成,先把图形分成两部分来看待,前五行一个规律,后四行一个规律。
每一部分利用双重for循环,外循环控制行,内循环控制列。
内循环又有两个并列的for循环,一个控制空格的输出,一个控制数据的输出。
#include<
inti,j;
=5;
for(j=1;
j<
=5-i;
j++)
printf("
"
=i;
%2d"
j);
for(j=i-1;
j>
=1;
j--)
for(i=4;
i>
i--)
for(j=1;
for(j=i-1;
用公式求PI的近似值,直到发
现某一项的绝对值小于10-6为止(该项不累计加)。
#include"
math.h"
intsign=1;
doublepi=0.0,n=1.0,term=1.0;
while(fabs(term)>
=1e-6)
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
pi=pi*4;
pi=%10.8f\n"
pi);
return0;
1.调试下列程序,使之具有如下功能:
输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
inti,n,a[10],av;
for(i=0;
n;
a[i]);
{printf("
if(i%3==0)
);
i!
=n;
av+=a[i];
av=%f\n"
av);
上面给出的程序是完全可以运行的,但是运行结果是完全错误的。
调试时请注意变量的初值问题、输出格式问题等。
inti,n,a[10];
floatav,sum=0;
for(i=0;
10;
%5d"
a[i]);
a[i]);
if((i+1)%3==0)
sum=sum+a[i];
av=sum/10;
\nav=%5f\n"
av);
6.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
inti,j,m,n,a[10];
请输入10个整数:
i++)
9;
m=i;
for(j=m+1;
j<
j++)
if(a[m]<
a[j])
m=j;
n=a[i];
a[i]=a[m];
a[m]=n;
}
从大到小排好顺序输出:
i++)
%4d"
7.输入两个字符串,找出其中较大者。
string.h>
charstr[2][10];
charstring[10];
inti;
2;
gets(str[i]);
if(strcmp(str[0],str[1])>
strcpy(string,str[0]);
strcpy(string,str[1]);
\nthelargeststringis:
\n%s\n"
string);
8.将一个数组中的值按逆序重新存放。
原来顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
intreverse(inta[],intn)
intp=a+n-1;
intt;
while(a<
p)
t=p,p=a,a=t;
inta[5]={8,6,5,4,1};
reverse(a,5);
5;
%d"
a[i]);
5.输入4名学生的姓名及三门课成绩,打印学生成绩表。
(姓名、三门课成绩、平均分)。
#include<
charname[4][30];
doublescore[4][4]={0.0};
inti=0,j;
********请输入4名学生的名字和三门成绩********\n"
for(i=0;
i<
4;
++i){
姓名:
scanf("
%s"
name[i]);
for(j=0;
3;
{
第%d门成绩:
j+1);
scanf("
%lf"
score[i][j]);
score[i][3]+=score[i][j];
}
//输出各科成绩和平均成绩
%s\n"
3;
%lf\n"
j+1,score[i][j]);
平均成绩为:
scor