2020-04-25

苏州大学c/c++程序设计教材习题(部分)

教材习题第五章

2.输入一整数并能逐为正序或反序输出。
#include<stdio.h>
void f1(int n)
{
if(n>10)
f1(n/10);
printf("%2d ",n%10);

}
void f2(int m)
{

printf("%2d ",m%10);
if(m>10)
f2(m/10);
}

main()
{
int n,temp;
printf(“输入一个整数: “);
scanf(”%d”,&n);
printf(“选择正序输出输入0,反序输出输入1 :”);
scanf("%d",&temp);
if(temp==0)
f1(n);
else
f2(n);

}
3. 对一个 4*4 矩阵逆时针旋转 90 度。
#include<stdio.h>

int main()
{
int a[4][4], b[4][4];
int i = 0;
int j = 0;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%d", &a[i][j]);
b[3 - j][i] = a[i][j];
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("%3d “, b[i][j]);
}
printf(”\n");
}
system(“pause”);
return 0;
}
4. 将一个数组中的数据奇数放到前面,偶数放到后面。
#include <stdio.h>
void main()
{
int a[9],b[9],i,j,m=0;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
for(i=0;i<0;i++)
{
if(a[i]%2!=0)
{
b[j]=a[i];
j++;
}
else
{
b[8-m]=a[i];
m++;
}
}
for(i=0;i<9;i++)
printf("%d",b[i]);
}
5. 输入一个 4*4 的矩阵,求四个边上元素的和。
#include “stdio.h”
void main(){
int i,j,s=0,a[4][4];
printf(“输入数组:”);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
if(i0||j0||i3||j3)
s+=a[i][j];
}
printf(“S=%d”,s);
}
6. 输入9个10以内的自然数,将它们组成两个整数,求如何组合得到的两个数的乘积最大 或最小。
#include<stdio.h>
#include<math.h>

void main(void)
{
int a[9] = {0};
int i;
int j;
int k;
int temp;
printf(“请输入9个0至9的整数:\n”);
for(i=0; i<9; i++)
scanf("%d", a+i);
for(i = 9/2;i>=1;i/=2)
{ for(k=0;k<9;k++)
for(j=0;j<9-i;j++)
if(a[j]<a[j+i])
{
temp = a[j];
a[j] = a[j+i];
a[j+i] = temp;
}
}
k = j = 0;
for(i=0; i<9; i++)
{
if(i<5)
k+=a[i](int)pow(10, 5-i-1);
else
j+=a[i]
(int)pow(10, 8-i);
}
printf(“最大值为:%d “, kj);
k = j = 0;
for(i=6;i>=0; i–)
{
if(i>2)
k+=a[i]
(int)pow(10, i-3);
else
j+=a[i](int)pow(10, i);
}
printf(“最小值为%d\n”, k
j);
}
7. 输入一个数组,输出它的区间范围,例如输入 1,2,3,4,5,6,7,8,20,21,22,23,输出:1-8,20-23
#include<stdio.h>
int main()
{
int i,j,m,n;
int count=0;
printf(“请输入区间:”);
scanf(”%d %d”,&m,&n);
for(i=m;i<=n;i++)
{
printf("%d\n",i);
}
return 0;
}
8. 输入一个区间范围,输出数组,例如输入 1-8,20-23,输出:1,2,3,4,5,6,7,8,20,21,22,23;
#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
printf(“输入10个整数:\n”);
for( i = 0; i < 10; i ++ )
scanf("%d",&a[ i ]); //依次输入10个整数
for( j = 0; j < 9; j ++ ) //进行9轮排序 即n-1次
{
for( i = 0; i < 9-j; i ++) //每轮进行n-1-j 次比较,最多n-1-j 次交换
if( a[ i ] > a[ i + 1 ] )if( a[ i ] > a[ i + 1 ] )
{
t = a[ i ] ;
a[ i ] = a[ i + 1 ]; //小的沉底,大的上浮
a[ i + 1 ] = t;
}
}
printf(“排序结果:”);
for( i = 0; i < 10; i ++ ) //依次输出排序结果
printf("%d\t",a[ i ]);
printf("\n");
printf(“区间范围为:%d-%d\n”,a[0],a[j]);
}
剩下的有时间再发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值