C语言/C++常见习题问答集锦(十三)
程序之美
1、输入学号查找学生 函数根据键盘输入的一个学号,t查找该学生是否存在,若存在,则输出其平均成绩,若不存在,则显示“not Find!”
float aver(int (*pStu)[7], int stuNo){
float varAge = 0.0;
int sum = 0;
for(int i = 0; i < TOTAL_STU; i++){
if(pStu[i][0] == stuNo){
for(int j = 0; j < 7; j ++){
sum += pStu[i][j];
}
}
}
if(sum > 0){
varAge = sum / 7.0;
return varAge;
}
else{
return NO_FIND;
}
}
2、输入4×4的数组,编写具有以下功能的程序。
① 求出对角线上各元素的和;
② 求出对角线上行、列下标均为偶数的各元素的积;
③ 找出对角线上其值最大的元素和它在数组中的位置。
#include <iostream>
#include <string>
#define M 4
#define N 4
using namespace std;
int main (int argc, char** argv) {
int i, j, sum1, sum2;
sum1 = sum2 = 0;
int array[M][N] = {0};
cout << "请给数组赋值初始化: ";
for (i = 0; i < M; ++i) {
for (j = 0; j < N; ++j) {
cin >> array[i][j];
}
}
cout << "赋值完成" << endl;
for (i = 0; i < M; ++i) {
for (j = 0; j < N; ++j) {
cout << array[i][j] << " ";
}
cout << endl;
}
cout << sum1 << " " << sum2 << endl;
//对角线求和
for (i = 0; i < M; ++i) {
for (j = 0; j < N; ++j) {
if (i == j) {
sum1 += array[i][j];
//对角线上均为偶数的元素和
if (0 == i % 2) {
sum2 += array[i][j];
}
}
}
}
cout << "对角线求和:" << sum1 << endl;
cout << "对角线偶求和:" << sum2 << endl;
return true;
}
3、编写函数long compose(long number)完成如下功能:将长整型数中数字为偶数的数依次取出,构成一个新数返回。
#include<stdio.h>
long compose(long number)
{
int n=10,m=0;
while (number)
{
int t=number%10;
if(t%2==0)
{
m+=t*n/10;
n*=10;
}
number/=10;
}
return m;
}
void main()
{
long a,b;
printf("Enter a number:");
scanf("%ld",&a);
b=compose(a);
printf("b=%ld\n",b);
}
4、用c语言输出ABCDEFG组成的直角三角形图案
A
BB
CCC
DDDD
EEEEE
FFFFFF
解法一:
#include<stdio.h>
void main()
{
int i,j,k=65;
for(i=1;i<=8;i++,k++)
{
for(j=1;j<=i;j++)
printf("%c",k);
printf("\n");
}
}
解法二:
#include<stdio.h>
int main(){
for(int i =0;i<7;i++){
for(int j=1;j<=i+1;j++){
printf("%c",'A'+i);
}
printf("\n");
}
return 0;
}