太原理工大学13级c语言实验指导书参考题答案Word格式.docx
- 文档编号:3256047
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:56
- 大小:25.61KB
太原理工大学13级c语言实验指导书参考题答案Word格式.docx
《太原理工大学13级c语言实验指导书参考题答案Word格式.docx》由会员分享,可在线阅读,更多相关《太原理工大学13级c语言实验指导书参考题答案Word格式.docx(56页珍藏版)》请在冰点文库上搜索。
c+=(a%10*1000);
Theresultis:
%d\n"
实验二选择
必做题
2.1编一程序,使用单分支的if语句形式,求a,b,c三个整数的中间值。
例如:
a、b、c的值分别为3、4、5,则输出4。
inta,b,c,t;
printf("
Inputa,b,c:
scanf("
%d,%d,%d"
if(a>
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
if(b>
c){t=b;
b=c;
中间数=%d\n"
b);
2.2有一函数
x
(x<
1)
y=
2x–1
(1≤x<
10)
3x–11
(x≥10)
用
scanf函数输入x的值(分别取x<
1、1~10、≥10三种情况),求y值。
intx,y;
Inputx:
%d"
x);
if(x<
1)y=x;
elseif(x<
10)y=2*x-1;
elsey=3*x-11;
x=%d,y=%d\n"
x,y);
2.3编写程序,输入一位学生的生日(年:
y0、月:
m0、日:
d0)数据,再输入当前的日期(年:
y1、月:
m1、日:
d1)数据,计算并输出该学生的实足年龄。
inty0,m0,d0,y1,m1,d1,nl;
Input生日(年,月,日):
y0,&
m0,&
d0);
Input当前日期(年,月,日):
y1,&
m1,&
d1);
if(m1>
m0||m1==m0&
&
d1>
=d0)nl=y1-y0;
elsenl=y1-y0-1;
年龄=%d\n"
nl);
2.4编写程序,定义四个字符变量c1,c2,c3和c4,分别用getchar()函数任意输入四个字母,分别输出其中的最大值和最小值。
charc1,c2,c3,c4,max,min;
Input四个字符:
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
max=min=c1;
if(c2>
max)max=c2;
if(c3>
max)max=c3;
if(c4>
max)max=c4;
min=c2<
min?
c2:
min;
min=c3<
c3:
min=c4<
c4:
max=%c,min=%c\n"
max,min);
2.5设整型变量a的值为正数,请将以下C源程序中的if语句形式改写成switch语句形式。
main()
{
inta;
printf(”a=”);
scanf(”%d”,&
a);
if(a<
30)
m=1;
elseif(a<
40)m=2;
50)m=3;
elseif(a<
60)m=4;
elsem=6;
printf(”m=%d\n”,m);
}
inta,t,m;
Inputa="
0)
{t=a/10;
switch(t)
{case0:
case1:
case2:
m=1;
break;
case3:
m=2;
case4:
m=3;
case5:
m=4;
default:
m=6;
m=%d\n"
m);
else
a为非正数\n"
实验三
循环
3.1编写程序,计算并输出正整数n的所有因子(1和n除外)之和。
intn,i,s=0,m=0;
Inputn:
n);
for(i=2;
i<
n;
i++)
{if(n%i==0)
{printf("
%5d"
i);
s+=i;
m++;
if(m%10==0)printf("
\n"
\ns=%d\n"
s);
3.2编写程序,利用以下所示的简单迭代方法求方程:
cos(x)-x=0的一个实根。
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根。
math.h>
doublex0,x1=0.0;
do
{x0=x1;
x1=cos(x0);
while(fabs(x1-x0)>
=1e-6);
\nx1=%.2f\n"
x1);
3.3编写程序,输入一行字符,分别统计出其中的大写字母、小写字母、空格和数字的个数。
提示:
用以下循环格式处理输入的一行字符。
while((c=getchar())!
=’\n’)
/*若输入的c不是回车符时继续*/
循环体
或者:
c=getchar();
while(c!
/*若c不是回车符时继续*/
{
c=getchar();
ctype.h>
charc;
intn1,n2,n3,n4;
n1=n2=n3=n4=0;
请输入一行字符,以换行结束:
while((c=getchar())!
='
\n'
)
if(isupper(c))n1++;
elseif(islower(c))n2++;
elseif(isdigit(c))n3++;
elseif(c=='
'
)n4++;
\n大写=:
%d,小写:
%d,数字:
%d,空格:
%d,\n"
n1,n2,n3,n4);
3.4编写程序,在屏幕上输出杨辉三角形。
1
1
2
3
4
6
5
10
…
…
#defineN20
{inti,j,array[N][N]={0},n;
请输入n行:
for(i=0;
{array[i][0]=1;
array[i][i]=1;
for(i=2;
for(j=1;
j<
i;
j++)
array[i][j]=array[i-1][j-1]+array[i-1][j];
杨辉三角形:
{for(j=0;
=i;
%4d"
array[i][j]);
选做题
3.1
floatx,,t,sum=1.0,i=1.0,m=1.0;
ints=1;
请输入x:
t=x;
while(fabs(t)>
1e-6)
{sum+=t;
s=-s;
i++;
m*=i;
t=s*1.0*pow(x,i)/m;
\nx=%f,f(x)=%f\n"
x,sum);
3.2
inti,m,n,k=0,j;
doubles;
请输入正整数m,n(m<
n):
m,&
for(i=m+1;
{s=sqrt(i);
for(j=2;
=s;
if(i%j==0)break;
if(j>
s){printf("
%6d"
k++;
if(k%8==0)printf("
3.3
inti,m=2,j,n;
doubles=0.0,k=1.0,t;
请输入正整数n:
for(i=1;
=n;
{t=m/k;
s+=t;
j=m;
m=m+k;
k=j;
\n和为:
%lf\n"
s);
3.4
{inti;
doubleh=100.0,h1,s=100.0;
=10;
{h1=h/2;
h=h1;
s+=2*h;
s=%lf,h=%lf\n"
s,h);
实验四数组
4.1编写程序,将3~n之间的所有非素数存入数组array中,然后输出该数组元素。
若n=20,则输出4,6,8,9,10,12,14,15,16,18,20。
{inti,array[N],j,m,k=0;
for(i=3;
=N;
{m=sqrt(i);
=m;
if(i%j==0){array[k++]=i;
=k-1;
%d"
array[i]);
4.2编写程序,将字符数组str中的字符串逆置后输出。
若str字符串为“ThisisaCprograme.”,则输出为“.emargorpCasisihT”。
string.h>
#defineN80
{inti,k;
charstr[N],t;
gets(str);
k=strlen(str);
k/2;
{t=str[i];
str[i]=str[k-1-i];
str[k-1-i]=t;
\n%s\n"
str);
4.3从键盘输入10个整数,选择一种排序算法,将这些数按从大到小的顺序排列输出。
#defineN10
{inti,j,array[N],m,t;
请输入10个整数:
N;
array[i]);
N-1;
{m=i;
for(j=i+1;
if(array[j]>
array[m])m=j;
if(m!
=i)
{t=array[m];
array[m]=array[i];
array[i]=t;
4.4计算5×
5矩阵的主对角线元素和此对角线元素之和。
若有下列矩阵,则输出的值应该是130。
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#defineN5
{inti,j,array[N][N],s=0;
请输入5×
5个整数:
for(j=0;
array[i][j]);
{if(i==j||i+j==N-1)s+=array[i][j];
if(i==j&
i+j==N-1)s+=array[i][j];
s=%d\n"
4.1
string.h"
#defineM5
{inti,j,a[M],k,x;
charstr[M][80],t[M];
请输入5个字符串:
M;
{gets(str[i]);
a[i]=strlen(str[i]);
M-1;
{k=i;
if(a[j]>
a[k])k=j;
if(k!
=i){strcpy(t,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],t);
x=a[k];
a[k]=a[i];
a[i]=x;
for(i=0;
puts(str[i]);
4.2
#defineM80
{inti,j=0,k=0,a;
chars[M],t[M],w[M];
请输入1个字符串:
gets(s);
a=strlen(s);
a;
if(!
(s[i]>
0'
s[i]<
9'
))t[j++]=s[i];
elsew[k++]=s[i];
t[j]='
\0'
;
w[k]='
strcat(t,w);
strcpy(s,t);
puts(s);
4.3
#defineN6
{inti,array[N],t,k;
请输入N个整数:
k=N%2?
N/2+1:
N/2;
{t=array[i];
array[i]=array[k+i];
array[k+i]=t;
4.4
#defineN4
{inti,j,array[N][N],t;
请输入4×
4个整数:
移动前矩阵:
{for(j=0;
2;
if(j==0){t=array[i][j];
array[i][j]=array[i][2-j];
array[i][2-j]=t;
else{t=array[i][j];
array[i][j]=array[i][4-j];
array[i][4-j]=t;
移动后矩阵:
实验五
函数
5.1编写一个判断素数的函数intIsprime(intm)。
在主函数中输入一个整数n,然后调用Isprime,如果n是素数,则输出:
nisprime!
否则输出:
nisn’tprime!
intn;
if(Isprime(n))printf("
%disprime!
n);
elseprintf("
%disn'
tprime!
intIsprime(intm)
{intj;
for(j=2;
=m/2;
if(m%j==0)break;
if(j>
m/2)return1;
elsereturn0;
5.2编写两个函数,分别求两个整数的最小公倍数和最大公约数并返回给主函数,两个整数由主函数输入。
intLowest_common_multiple(intm,intn,inth);
intGreatest_common_divisor(intm,intn);
intm,n,t,p,k;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 13 语言 实验 指导书 参考 答案