C语言/C++常见习题问答集锦(六十一) 之N位16进制数
程序之美
1、定义一个3行3列的二维数组,利用指针变量输入、输出数组的所有元素,并求数组元素的最大值、最小值、和。
【输入形式】
3行3列的二维数组元素值。
【输出形式】
先按照矩阵形式输出二维数组的所有元素。
接着,分行输出最大值、最小值、和。
【样例输入】
1 2 3
4 5 6
7 8 9
【样例输出】
1 2 3
4 5 6
7 8 9
9
1
45
C语言版本:
#include "stdio.h"
int main(void){
int a[3][3],sum,i,j, maxValue,minValue, (*pArr)[3];
pArr = a;
for(i=0;i<3;i++){
scanf("%d %d %d",&pArr[i][0],&pArr[i][1],&pArr[i][2]);
}
maxValue = minValue = pArr[0][0];
for(sum=i=0;i<3;i++)
for(j=0;j<3;j++){
if (pArr[i][j] < minValue)
{
minValue = pArr[i][j];
}
if (pArr[i][j] > maxValue)
{
maxValue = pArr[i][j];
}
sum += pArr[i][j];
}
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ", pArr[i][j]);
}
printf("\n");
}
printf("%d\n", maxValue);
printf("%d\n",minValue);
printf("%d\n",sum);;
return 0;
}
运行结果为:
C++版本:
#include <iostream>
using namespace std;
int main(void){
int a[3][3],sum,i,j, maxValue,minValue, (*pArr)[3];
pArr = a;
for(i=0;i<3;i++){
cin>>pArr[i][0]>>pArr[i][1]>>pArr[i][2];
}
maxValue = minValue = pArr[0][0];
for(sum=i=0;i<3;i++)
for(j=0;j<3;j++){
if (pArr[i][j] < minValue)
{
minValue = pArr[i][j];
}
if (pArr[i][j] > maxValue)
{
maxValue = pArr[i][j];
}
sum += pArr[i][j];
}
cout << endl;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
cout << pArr[i][j] << " ";
}
cout << endl;
}
cout << maxValue << endl;
cout << minValue << endl;
cout << sum<< endl ;
return 0;
}
运行结果为:
2、c语言 随机生成一个N位的16进制数的代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define COUNT 16
void rand32h(char d[COUNT])
{
int result;
unsigned char i,n3;
srand( (unsigned)time( NULL ) ); //设置随机数种子
//要点:rand()给出的随机数为15位,
// 要想得到更多位, 采用拼接的方法。
// 每次用其中12位得到3个十六进制数
for (n3=i=0;i<COUNT;)
{
if (n3==0) {result = rand(); n3=3;}
d[i++]=result&15;
result>>=4; --n3;
}
}
void print_hex(char *d, int n)
{
const char hextable[]="0123456789ABCDEF";
while(n--) putchar(hextable[*d++&15]);
}
void main()
{
char d[COUNT]; //用来存储32个16进制随机数
rand32h(d); //产生随机数
print_hex(d,COUNT); //显示随机数
printf("\n");
return;
}
运行结果:
3、声明一个基类Student(学生)类,声明一个派生出新类college_student (大学生)类,并继承Student(学生)类,要求:
(1) 在Student类中包括:num(学号),name(姓名),sex(性别)等成员数据,viod display();(输出学生学号,姓名,性别)函数成员,构造函数自己设计。
(2) 在派生出新类college_student (大学生)类中包括:Chinese(语文分),math(数学分),computer(计算机分)等成员数据,float total_score();(统计一个大学生的三科总分)。
(3) 建立一个对象数组,内放5位大学生的数据(学号、姓名、性别、语文分、数学分、计算机分),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中总成绩最高者,并输出该学生的所有信息(学号、姓名、性别、语文分、数学分、计算机分,及总分)。
(4) 对5位大学生按总分进行排名,并输出排名后的结果。
未完待续…