8 9 3 6 9算法提示:程序名TC8-1.C要求用原数组转置,办法,用双重for循环逐行逐列交换a[i][j]和a[j][i]。注意:循环只需做上半个或下半个三角阵即可,以防止重复交换。即j从1~i或i 从1~j循环即可。#include void main( )( int i, j, t, a[3][3];printf( "请输入 3 * 3 矩阵: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 < i; j++ ){ t = a[i][j]; a[i][j] = a[j][i]; a[j][i] = t; )printf( "变换后的矩阵:n" );for ( i = 0; i < 3; i++ ) (for ( j = 0; j < 3; j++ )printf( "%4d", a[i][j]);printf( "n" );)}教材习题6.8,找出一个二维数组中的鞍点。程序名ex6-8.C算法提示:此数组可由随机数产生,大小可自由设置,设为a[3][4]扫描所有行,找出第i行最大值max及所在列下标index扫描第index列所有行看是否有a[k][index] < max,如果有,本行没有鞍点,如果没有则a[k][index]就是鞍点,输出其下标及元素值,并将鞍点个数t加一将max及index值设为下一行第一列的值,开始扫描下一行全部行扫描[1]完毕,如果t仍然为0则输出信息“没有鞍点”。#include #include #define M 3#define N 4void main( )( int i, j, k, a[M][N], index, max, t = 0;srand(11);printf( "随机产生 %d * %d 矩阵:n", M, N );for ( i = 0; i < M; i++ ) {for ( j = 0; j < N; j++ ) {A. [i][j] = 1 + rand( ) % 50; B. [i][j]); C. ) D. n" ); E. } F. M; i++ ) G. (x = a[i][0]; index = 0;N; j++ )[i][j] > max )x = a[i][j]; index = j; )M; k++ )[k][index] < max )reak;M )([%d][%d] = %d 是鞍点n", i, index, a[i][index] );t++;)}n" );n", t );}要求:输出10行, 即行号i范围:1~10算法提示:杨辉三角的特点是:只有下三角矩阵,即列号j范围:1~i (i是行号)[i][i][i][j] = a[i-1][j-1] + a[i-1][j]提示:先将所有数组元素值求出后再输出下三角矩阵。h>M 10in( )[M][M];M; i++ )[i][0] = 1;[i][i] = 1;}M; i++ )or ( j = 1; j < i; j++ )[i][j] = a[i-1][j-1] + a[i-1][j];n" );M; i++ ) (or ( j = 0; j <= i; j++ )[i][j]);n" );)}实验九 数组(三) 答案trlen函数。程序名TC9-1.C算法提示:输入一个字符串到字符数组str(str定义一个较大的长度,如80)。0'为止,每次做i++操作,退出时的i值即为字符串的长度。h>in( )(r str[80];int i =0;printf( "输入字符串:" );ets( str );[i] != '0' ) i++; /还可编为:for( ; str[i] != '0'; i++ );n", i );)算法提示:判断一个数是否为素数的方法参考教材例题6.8,要求在主函数中输入m的值并作为实参[2]传递给prime函数。prime函数的类型可设计为int,返回值为1时表示m是素数,为0表示不是根据返回值在主函数中输出信息是或不是素数。h>int prime( int n )(int k;or( k = 2; k <= n / 2; k++ )reak;if ( k > n / 2 ) return 1;lse return 0;)in( )(int m;printf( " 请输入 m : " );nf("%d", m );n", m);n", m);)算法提示:[3][80]存放,字符串输入方法参考教材例题7.9,[5]存放,m[0]~m[4]分别表示大写字母、小写字母、数字、空格及其它字符的个数。[i][j]并用if –else if – else 语句分别判断ch是否是五种情况中的哪一个,分别将其个数加一。例如是大写字母,则做m[0]++。当所有字符串的所有字符全部循环完毕,输出数组m。附加扩充:可以考虑每行文字分别统计,此时每行文字统计完后要先输出m后将m数组清零。程序一:总统计h>in( )([5] = {0), i, j;r str[3][80];or ( i = 0; i < 3; i++ )[i] );or ( i = 0; i < 3; i++ )[i][j] != '0'; j++ )[i][j]>='a' str[i][j]<= 'z' ) m[0]++;[i][j]>='A' str[i][j]<= 'Z' ) m[1]++;[i][j] == ' ' ) m[2]++;[i][j] >= '0' str[i][j] <= '9' ) m[3]++;[4]++;n" );[i]);n" );}程序二:分行统计h>in( )([5] = {0), i, j;r str[3][80];or ( i = 0; i < 3; i++ )[i] );n" );or ( i = 0; i < 3; i++ )([i][j] != '0'; j++ )[i][j]>='a' str[i][j]<= 'z' ) m[0]++;[i][j]>='A' str[i][j]<= 'Z' ) m[1]++;{t d = 300000, r = 0.01, p = 6000, m;m = log10( p / ( p - d * r ) ) / log10( 1 + r );n", d, p, r, m );)附加题:第三章习题3.2,有1000元想存5年,有5种方法,求5年后本息和。X3-2.C算法参考教材例题3.2,定义5个变量分别完成5种情况计算,并输出。h>th.h>in( )(t r, p1,p2,p3,p4,p5,p,n;printf( "存5年期:" );n = 5; r = 5.85 / 100;p1 = 1000 * ( 1 + n * r );n", p1 );printf( "存2年+3年期:" );n = 2; r = 4.68 / 100;p = 1000 * ( 1 + n * r );n = 3; r = 5.4 / 100;p2 = ( 1000 + p ) * ( 1 + n * r );n", p2 );printf( "存3年+2年期:" );n = 3; r = 5.4 / 100;p = 1000 * ( 1 + n * r );n = 2; r = 4.68 / 100;p3 = ( 1000 + p ) * ( 1 + n * r );n", p3 );printf( "存5次1年期:" );n = 5; r = 4.14 / 100;p4 = 1000 * pow( 1 + r, n );[i][j] == ' ' ) m[2]++;[i][j] >= '0' str[i][j] <= '9' )m[3]++;[4]++;or ( j = 0; j < 5; j++ ){[j]);[j] = 0;)n" );}}n", p4 );printf( "存活期:" );n = 5, r = .72 / 100;p5 = 1000 * pow( 1 + r / 4, 4 * n );n", p5 );}实验三 输入输出练习答案请写出下面程序的执行结果。h>in( )(=5,=7;t x= 67.8564, y=-789.124, z = 12.35;r c='A';long n=1234567;unsigned u=65535;n", a, b ); /* 57 */n", a, b ); /* 5 7 */n", x, y ); /* x=67.856400,y=-789.124023 */n", x, y ); /* x=67.856400 ,y=-789.124023 */n", x, y, x, y, x, y ); /* x= 67.86,y= -789.12 ,x=67.8564,y=-789.1240, x=67.856400,y=-789.124023 */n", x, y ); /* x=6.785640e+001,y=-7.891240e+002 */n", x+y, y+z, z+x ); /* x+y=-721.27 y+z=-776.77 z+x=80.21 */n", n, n, n ); /* n=1234567 , 4553207, 12d687 */n", u, u, u, u ); /* u=65535, 177777, ffff, 65535 */n", c, c, c, c ); /* c=A, 65, 101, 41 */n", "COMPUTER", "COMPUTER" ); /* COMPUTER, COM */)NO3-1.C。输入以下程序并执行,观察结果并将结果以注释方式录入本输出语句结尾处,要求输出格式保持屏幕输出原样。输入数据练习程序:输入以下程序,要求输出结果为:。=3,=7x=8.5, y=71.82, c2='a'h>in( )(,;t x, y;r c1, c2;nf( "a=%d=%d", a, b );nf( " %f %e", x, y );nf( " %c %c", c1, c2 );=%d, b=%dn", a,);n", x, y );’%c’n", c1, c2 );)要求:NO3-2.C。请输入程序后,直接删除空格,输入填写内容,并调试[3]运行程序。要求运行输出结果与题目完全一样。输出格式控制:题目:=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。想得到以下的输出格式和结果,请写出程序(包括定义变量类型、赋值和设计输出格式)。说明:“”表示空格。=3b=4c=5x=1.200000,y=2.400000,z=-3.600000u=51274n=128765'or97(ASCII)'or98(ASCII)NO3-3.C要求输出与以上指定效果完全一样。h>in( )(=3,=4,=5;t x=1.2, y=2.4, z= -3.6;r c1='a', c2='b';long n=128765;unsigned u=51274;=%2d=%2d c=%2dn", a, b,);n", x, y, z );n", u, n );'%c' or %d(ASCII)n", c1, c1 );'%c' or %d(ASCII)n", c2-32, c2 );)实验四 选择结构输入三角形的三边长,求三角形的面积。b、c为三角形的三边长注意:三角形有任意两边之和必须大于第三边的条件限制。NO4-1.Cb、c后,用if语句判断是否满足此条件,满足了再求面积,否则输出一个错误提示信息,结束程序。h>th.h>in( )(t a,,, s, area;nf("%f,%f,%f", a, b, c ); c+a > b+c > a c+a > b ){++);= sqrt( s * ( s – a ) * ( s –) * ( s –) );=%7.2f,=%7.2f,=%7.2f, s=%7.2fn", a, b, c, s ););)lsen");}第五章习题5.8。和ex5-8switch.C。提示:h.C再将其改写成if-else if-else语句程序ex5-8if.C。I,奖金为mI * .1I <= 200000 m= 100000*.1 + (I-100000) * .075I <= 400000 m= 100000*.1+100000*.075 + (I-20000) * .05I <= 600000 m= 100000*.1+100000*.075 + 200000 * .05 + (I-400000) * .03I <= 1000000 m= 33500 + (I – 600000) * .015I > 1000000 m= 39500 + ( I – 1000000) * .01h>in()(int I;ouble m;printf("请输入利润值:");nf("%d",I);if (I<=100000)I * .1;if (I<=200000)I-100000) * .075;if (I<=400000)I-200000) * .05;if (I<=600000)I-400000) * .03;if (I<=1000000)I-600000) * .015;lseI * .01;n",m);)h.Ch>in( )(int I;ouble m;printf("请输入利润值:");nf( "%d", I );I – 1 ) / 100000 ){se 0 : m = I * 0.1;reak;se 1 : m = 100000*0.1 + (I-100000) * .075;reak;se 2 :se 3 : m = 100000*0.1 + 100000*.075 + ( I-200000 ) * .05;reak;se 4 :se 5 : m = 100000*0.1 + 100000*.075 + 200000*.05 + ( I-400000 )*.03;reak;se 6 :se 7 :se 8 :se 9 : m = 33500 + ( I-600000 ) * .015;reak;ult: m = 39500 + ( I-1000000 ) * .01;reak;)n", m );}附加题:某商场根据购物金额采用打折的方式销售商品。顾客购物的折扣率如下:金额≤500元, 不打折金额在500到1000元之间,8.8折金额大于1000元 8折以下程序的功能是计算购物金额。请填空:in( )(t price, r, cost;nf( "%f ", price );if (price <= 500 )r = 1.0;lse if ( price<=1000 )r = 0.88 ;lse if ( price > 1000 )r = 0.8;ost = price * r ;n", cost );)实验五 循环结构(一)答案第五章习题3,输入两个正整数,求其最大公约数和最小公倍数。X5-3.C算法:输入m, n,如果m < n, 交换m和n的值求m除以n的余数 r如果r 不等于0 ,则以n代替m, 以r代替n,再返回(2)循环如果r 等于0 结束循环,此时m的值即为最大公约数,输出即可最小公倍数=m * n / 最大公约数h>in( )(int m, n, r, mul;nf( "%d%d", m, n );if ( m < n ) {mul = m;m = n;n = mul;)mul = m * n;o (r = m % n;m = n;n = r;hile( r != 0 );n" , m );mul = mul /m;n" , mul );)第五章习题8。输出所有的水仙花数。X5-8.C。算法提示:= n/100。拆完后只要判断a, b, c的立方和是否等于n,,分别表示3位数字,则a = n/100。拆完后只要判断a, b, c的立方和是否等于n,满足条件就输出这个n。注意:n直接由循环得到值。提示:它是一个三位数。h>in( )(,,, m;printf(" 水仙花数有:" );or( n = 100; n<= 999; n++ )= n / 100;* 100 ) / 10 */= n % 10;* a * a +* b * b +* c * c;if ( m == n )printf(" %4d", n );)n" );}从1~9,b,c各自从0~9各取一位数字,然后搭成一个新数,再判断立方和是否等于新数即可。h>in( ),,, m;printf(" 水仙花数有:" );= 1; a <= 9; a++ )or( b = 0; b <= 9; b++ )or( c = 0; c < 10; c++ )* 100 +* 10 +;* a * a +* b * b +* c * c;if ( m == n ) printf(" %4d", n );}n" );}附加题:输入一个正整数,找出其各位数字中的最大者。例:输入4396,输出9TC5-3.C。算法提示:TC 5.3-1A.C,区别是本题不搭建新数,而是先假设最大数字max为0,然后每拆出一个数字r就将其与max比较,如果r较大则替换max。当循环结束时max的值就是要求的最大数字。m.h>in( ){x = 0;
8 9 3 6 9
算法提示:程序名TC8-1.C
要求用原数组转置,办法,用双重for循环逐行逐列交换a[i][j]和a[j][i]。
注意:循环只需做上半个或下半个三角阵即可,以防止重复交换。即j从1~i或i 从1~j循环即可。
#include 
void main( )
{ int i, j, t, a[3][3];
printf( "请输入 3 * 3 矩阵:\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 < i; j++ )
{ t = a[i][j]; a[i][j] = a[j][i]; a[j][i] = t; }
printf( "变换后的矩阵:\n" );
for ( i = 0; i < 3; i++ ) {
for ( j = 0; j < 3; j++ )
printf( "%4d", a[i][j]);
printf( "\n" );
}
}
教材习题6.8,找出一个二维数组中的鞍点。程序名ex6-8.C
算法提示:
此数组可由随机数产生,大小可自由设置,设为a[3][4]
扫描所有行,找出第i行最大值max及所在列下标index
扫描第index列所有行看是否有a[k][index] < max,如果有,本行没有鞍点,如果没有则a[k][index]就是鞍点,输出其下标及元素值,并将鞍点个数t加一
将max及index值设为下一行第一列的值,开始扫描下一行
全部行扫描[1]完毕,如果t仍然为0则输出信息“没有鞍点”。
#include 
#include 
#define M 3
#define N 4
void main( )
{ int i, j, k, a[M][N], index, max, t = 0;
srand(11);
printf( "随机产生 %d * %d 矩阵:\n", M, N );
for ( i = 0; i < M; i++ ) {
for ( j = 0; j < N; j++ ) {
A. [i][j] = 1 + rand( ) % 50;B. [i][j]);
C. }
D. \n" );
E. }
F. M; i++ )
G. {
x = a[i][0]; index = 0;
N; j++ )
[i][j] > max )
x = a[i][j]; index = j; }
M; k++ )
[k][index] < max )
reak;
M )
{
[%d][%d] = %d 是鞍点\n", i, index, a[i][index] );
t++;
}
}
\n" );
\n", t );
}
要求:输出10行, 即行号i范围:1~10
算法提示:杨辉三角的特点是:
只有下三角矩阵,即列号j范围:1~i (i是行号)
[i][i]
[i][j] = a[i-1][j-1] + a[i-1][j]
提示:先将所有数组元素值求出后再输出下三角矩阵。
h>
M 10
in( )
[M][M];
M; i++ )
[i][0] = 1;
[i][i] = 1;
}
M; i++ )
or ( j = 1; j < i; j++ )
[i][j] = a[i-1][j-1] + a[i-1][j];
\n" );
M; i++ ) {
or ( j = 0; j <= i; j++ )
[i][j]);
\n" );
}
}
实验九 数组(三) 答案
trlen函数。程序名TC9-1.C
算法提示:
输入一个字符串到字符数组str(str定义一个较大的长度,如80)。
\0'为止,每次做i++操作,退出时的i值即为字符串的长度。
h>
in( )
{
r str[80];
int i =0;
printf( "输入字符串:" );
ets( str );
[i] != '\0' ) i++; //还可编为:for( ; str[i] != '\0'; i++ );
\n", i );
}
算法提示:
判断一个数是否为素数的方法参考教材例题6.8,
要求在主函数中输入m的值并作为实参[2]传递给prime函数。
prime函数的类型可设计为int,返回值为1时表示m是素数,为0表示不是
根据返回值在主函数中输出信息是或不是素数。
h>
int prime( int n )
{
int k;
or( k = 2; k <= n / 2; k++ )
reak;
if ( k > n / 2 ) return 1;
lse return 0;
}
in( )
{
int m;
printf( " 请输入 m : " );
nf("%d", m );
\n", m);
\n", m);
}
算法提示:
[3][80]存放,字符串输入方法参考教材例题7.9,
[5]存放,m[0]~m[4]分别表示大写字母、小写字母、数字、空格及其它字符的个数。
[i][j]并用if –else if – else 语句分别判断ch是否是五种情况中的哪一个,分别将其个数加一。例如是大写字母,则做m[0]++。
当所有字符串的所有字符全部循环完毕,输出数组m。
附加扩充:可以考虑每行文字分别统计,此时每行文字统计完后要先输出m后将m数组清零。
程序一:总统计
h>
in( )
{
[5] = {0}, i, j;
r str[3][80];
or ( i = 0; i < 3; i++ )
[i] );
or ( i = 0; i < 3; i++ )
[i][j] != '\0'; j++ )
[i][j]>='a' str[i][j]<= 'z' ) m[0]++;
[i][j]>='A' str[i][j]<= 'Z' ) m[1]++;
[i][j] == ' ' ) m[2]++;
[i][j] >= '0' str[i][j] <= '9' ) m[3]++;
[4]++;
\n" );
[i]);
\n" );
}
程序二:分行统计
h>
in( )
{
[5] = {0}, i, j;
r str[3][80];
or ( i = 0; i < 3; i++ )
[i] );
\n" );
or ( i = 0; i < 3; i++ )
{
[i][j] != '\0'; j++ )
[i][j]>='a' str[i][j]<= 'z' ) m[0]++;
[i][j]>='A' str[i][j]<= 'Z' ) m[1]++;
{
t d = 300000, r = 0.01, p = 6000, m;
m = log10( p / ( p - d * r ) ) / log10( 1 + r );
\n", d, p, r, m );
}
附加题:第三章习题3.2,有1000元想存5年,有5种方法,求5年后本息和。
X3-2.C
算法参考教材例题3.2,定义5个变量分别完成5种情况计算,并输出。
h>
th.h>
in( )
{
t r, p1,p2,p3,p4,p5,p,n;
printf( "存5年期:" );
n = 5; r = 5.85 / 100;
p1 = 1000 * ( 1 + n * r );
\n", p1 );
printf( "存2年+3年期:" );
n = 2; r = 4.68 / 100;
p = 1000 * ( 1 + n * r );
n = 3; r = 5.4 / 100;
p2 = ( 1000 + p ) * ( 1 + n * r );
\n", p2 );
printf( "存3年+2年期:" );
n = 3; r = 5.4 / 100;
p = 1000 * ( 1 + n * r );
n = 2; r = 4.68 / 100;
p3 = ( 1000 + p ) * ( 1 + n * r );
\n", p3 );
printf( "存5次1年期:" );
n = 5; r = 4.14 / 100;
p4 = 1000 * pow( 1 + r, n );
[i][j] == ' ' ) m[2]++;
[i][j] >= '0' str[i][j] <= '9' )m[3]++;
[4]++;
or ( j = 0; j < 5; j++ )
{
[j]);
[j] = 0;
}
\n" );
}
}
\n", p4 );
printf( "存活期:" );
n = 5, r = .72 / 100;
p5 = 1000 * pow( 1 + r / 4, 4 * n );
\n", p5 );
}
实验三 输入输出练习答案
请写出下面程序的执行结果。
h>
in( )
{
=5,
=7;
t x= 67.8564, y=-789.124, z = 12.35;
r c='A';
long n=1234567;
unsigned u=65535;
\n", a, b ); /* 57 */
\n", a, b ); /* 5 7 */
\n", x, y ); /* x=67.856400,y=-789.124023 */
\n", x, y ); /* x=67.856400 ,y=-789.124023 */
\n", x, y, x, y, x, y ); /* x= 67.86,y= -789.12 ,x=67.8564,y=-789.1240, x=67.856400,y=-789.124023 */
\n", x, y ); /* x=6.785640e+001,y=-7.891240e+002 */
\n", x+y, y+z, z+x ); /* x+y=-721.27 y+z=-776.77 z+x=80.21 */
\n", n, n, n ); /* n=1234567 , 4553207, 12d687 */
\n", u, u, u, u ); /* u=65535, 177777, ffff, 65535 */
\n", c, c, c, c ); /* c=A, 65, 101, 41 */
\n", "COMPUTER", "COMPUTER" ); /* COMPUTER, COM */
}
NO3-1.C。
输入以下程序并执行,观察结果并将结果以注释方式录入本输出语句结尾处,要求输出格式保持屏幕输出原样。
输入数据练习程序:输入以下程序,要求输出结果为:。
=3,
=7
x=8.5, y=71.82
, c2='a'
h>
in( )
{
,
;
t x, y;
r c1, c2;
nf( "a=%d
=%d", a, b );
nf( " %f %e", x, y );
nf( " %c %c", c1, c2 );
=%d, b=%d\n", a,
);
\n", x, y );
\’%c\’\n", c1, c2 );
}
要求:
NO3-2.C。
请输入程序后,直接删除空格,输入填写内容,并调试[3]运行程序。
要求运行输出结果与题目完全一样。
输出格式控制:
题目:
=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。想得到以下的输出格式和结果,请写出程序(包括定义变量类型、赋值和设计输出格式)。说明:“”表示空格。
=3b=4c=5
x=1.200000,y=2.400000,z=-3.600000
u=51274n=128765
'or97(ASCII)
'or98(ASCII)
NO3-3.C
要求输出与以上指定效果完全一样。
h>
in( )
{
=3,
=4,
=5;
t x=1.2, y=2.4, z= -3.6;
r c1='a', c2='b';
long n=128765;
unsigned u=51274;
=%2d
=%2d c=%2d\n", a, b,
);
\n", x, y, z );
\n", u, n );
\'%c\' or %d(ASCII)\n", c1, c1 );
\'%c\' or %d(ASCII)\n", c2-32, c2 );
}
实验四 选择结构
输入三角形的三边长,求三角形的面积。
b、c为三角形的三边长
注意:三角形有任意两边之和必须大于第三边的条件限制。
NO4-1.C
b、c后,用if语句判断是否满足此条件,满足了再求面积,否则输出一个错误提示信息,结束程序。
h>
th.h>
in( )
{
t a,
,
, s, area;
nf("%f,%f,%f", a, b, c );
c+a >
b+c > a c+a > b )
{
+
+
);
= sqrt( s * ( s – a ) * ( s –
) * ( s –
) );
=%7.2f,
=%7.2f,
=%7.2f, s=%7.2f\n", a, b, c, s );
);
}
lse
\n");
}
第五章习题5.8。
和ex5-8switch.C。
提示:
h.C再将其改写成if-else if-else语句程序ex5-8if.C。
I,奖金为m
I * .1
I <= 200000 m= 100000*.1 + (I-100000) * .075
I <= 400000 m= 100000*.1+100000*.075 + (I-20000) * .05
I <= 600000 m= 100000*.1+100000*.075 + 200000 * .05 + (I-400000) * .03
I <= 1000000 m= 33500 + (I – 600000) * .015
I > 1000000 m= 39500 + ( I – 1000000) * .01
h>
in()
{
int I;
ouble m;
printf("请输入利润值:");
nf("%d",I);
if (I<=100000)
I * .1;
if (I<=200000)
I-100000) * .075;
if (I<=400000)
I-200000) * .05;
if (I<=600000)
I-400000) * .03;
if (I<=1000000)
I-600000) * .015;
lse
I * .01;
\n",m);
}
h.C
h>
in( )
{
int I;
ouble m;
printf("请输入利润值:");
nf( "%d", I );
I – 1 ) / 100000 )
{
se 0 : m = I * 0.1;
reak;
se 1 : m = 100000*0.1 + (I-100000) * .075;
reak;
se 2 :
se 3 : m = 100000*0.1 + 100000*.075 + ( I-200000 ) * .05;
reak;
se 4 :
se 5 : m = 100000*0.1 + 100000*.075 + 200000*.05 + ( I-400000 )*.03;
reak;
se 6 :
se 7 :
se 8 :
se 9 : m = 33500 + ( I-600000 ) * .015;
reak;
ult: m = 39500 + ( I-1000000 ) * .01;
reak;
}
\n", m );
}
附加题:某商场根据购物金额采用打折的方式销售商品。
顾客购物的折扣率如下:
金额≤500元, 不打折
金额在500到1000元之间,8.8折
金额大于1000元 8折
以下程序的功能是计算购物金额。请填空:
in( )
{
t price, r, cost;
nf( "%f ", price );
if (price <= 500 )
r = 1.0;
lse if ( price<=1000 )
r = 0.88 ;
lse if ( price > 1000 )
r = 0.8;
ost = price * r ;
\n", cost );
}
实验五 循环结构(一)答案
第五章习题3,输入两个正整数,求其最大公约数和最小公倍数。
X5-3.C
算法:
输入m, n,如果m < n, 交换m和n的值
求m除以n的余数 r
如果r 不等于0 ,则以n代替m, 以r代替n,再返回(2)循环
如果r 等于0 结束循环,此时m的值即为最大公约数,输出即可
最小公倍数=m * n / 最大公约数
h>
in( )
{
int m, n, r, mul;
nf( "%d%d", m, n );
if ( m < n ) {
mul = m;
m = n;
n = mul;
}
mul = m * n;
o {
r = m % n;
m = n;
n = r;
hile( r != 0 );
\n" , m );
mul = mul /m;
\n" , mul );
}
第五章习题8。输出所有的水仙花数。
X5-8.C。
算法提示:
= n/100。拆完后只要判断a, b, c的立方和是否等于n,
,
分别表示3位数字,则a = n/100。拆完后只要判断a, b, c的立方和是否等于n,满足条件就输出这个n。
注意:n直接由循环得到值。提示:它是一个三位数。
h>
in( )
{
,
,
, m;
printf(" 水仙花数有:" );
or( n = 100; n<= 999; n++ )
= n / 100;
* 100 ) / 10 */
= n % 10;
* a * a +
* b * b +
* c * c;
if ( m == n )
printf(" %4d", n );
}
\n" );
}
从1~9,b,c各自从0~9各取一位数字,然后搭成一个新数,再判断立方和是否等于新数即可。
h>
in( )
,
,
, m;
printf(" 水仙花数有:" );
= 1; a <= 9; a++ )
or( b = 0; b <= 9; b++ )
or( c = 0; c < 10; c++ )
* 100 +
* 10 +
;
* a * a +
* b * b +
* c * c;
if ( m == n ) printf(" %4d", n );
}
\n" );
}
附加题:输入一个正整数,找出其各位数字中的最大者。例:输入4396,输出9
TC5-3.C。
算法提示:
TC 5.3-1A.C,区别是本题不搭建新数,而是先假设最大数字max为0,然后每拆出一个数字r就将其与max比较,如果r较大则替换max。当循环结束时max的值就是要求的最大数字。
m.h>
in( )
{
x = 0;
题目解答
答案
程序名 ex6-6.C 程序名 TC9-1.C 程序名 ex7-3.C 程序名 ex6-10.C m[j] = 0; /* 57 */ /* 5 7 */ /* x=67.856400,y=-789.124023 */ /* x=67.856400 ,y=-789.124023 */ /* x= 67.86,y= -789.12 ,x=67.8564,y=-789.1240, x=67.856400,y=-789.124023 */ /* x=6.785640e+001,y=-7.891240e+002 */ /* x+y=-721.27 y+z=-776.77 z+x=80.21 */ /* n=1234567 , 4553207, 12d687 */ /* u=65535, 177777, ffff, 65535 */ /* c=A, 65, 101, 41 */ /* COMPUTER, COM */ "a=%d, b=%d\n" "x=% .1f , y=% .2f \n" "c1=%c,c2= \’ %c \’ \n" 注意:三角形有 任意 两边之和必须大于第三边的条件限制。 float price<=1000 0.88 cost = price * r