高级 C++编程题库
“高级语言程序设计”编程题
1. 从键盘输入 3 个整数,求其中的最大数和最小数,并输出结果。
2. 从键盘上输入一个 3*3 的整数矩阵,求其各行的平均值并输出,输出时保
留两位小数。
23. 输出 x 的值,x 取值从 0 到 10。
4. 从键盘上输入一个 3*4 的整数矩阵,要求输出其最大元素的值,以及它的
行号和列号。
5.编写一个程序从键盘输入 10 个数,要求输出其中最小的。
6.编写一个函数根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传
入。
s=
7.输出 1000 年(包括 1000 年)到 1999 年之间的所有闰年,要求每三个一行,
分行输出。
8. 编写程序打印所有的“水仙花数”。“水仙花数”指一个三位数,其各位
数字立方和等于该数本身,例如 153 是一个“水仙花数”,因为 153,1×1×1,
3×3×3,5×5×5。
9.编写一个程序,输入一个 3 位数的正整数,然后反向输出对应的数。
如:123,则输出 321。
参考答案:
#include
void main(){
int i,s=0,j;
scanf("%d",&i);
if(i>=100&&i<=999){
j=i%10;
s=s+j;
j=(i-j)/10%10;
s=s*10+j;
j=i/100;
s=s*10+j;
printf("the inverse number is %d",s);
}
1
else
printf("input erroe!"); }
10. 从键盘输入 10 名学生的 C 语言成绩存入一维数组内,编写程序计算 10 名
学
生的最高分、平均分和及格人数。
参考答案:
#include
void main(){
int i,score[10],max,min;
float ave;
for(i=0;i<10;i++)
scanf("%d",&score[i]);
max=score[0];
min=score[0];
ave=score[0];
for(i=1;i<10;i++){
if(score[i]>max)
max=score[i];
if(score[i]
void main(){
char ch;
ch=getchar();
if(ch>='0'&&ch<='9')
printf("a numerical character");
else
printf("other character");
}
2
12. 从键盘输入 12 个数存入二维数组 a[3][4]中,编写程序求出最大元素的值
及它所在的行号和列号。
参考答案:
#include
void main(){
int i,j,a[3][4],max,index_i,index_j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
index_i=0;
index_j=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max){
max=a[i][j];
index_i=i;
index_j=j;
}
printf("max=%d,index_x=%d,index_y=%d",max,index_i,index_j);
}
13(打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各
位数字的立方和等于该数本身。
参考答案:
#include
void main()
{
int i, j, k, n;
printf ("result is: ");
for (n = 100; n < 1000; n++)
{
i = n / 100;
j = (n - i *100) / 10;
k = n % 10;
if (n == i*i*i + j*j*j + k*k*k)
printf ("%d ", n);
}
printf ("\n");
}
14.利用函数将给定的 3×3 二维数组转置。
3
参考答案:
#include "stdio.h"
void convert(int array[3][3]) {
int i,j,k;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
k=array[i][j];
array[i][j]=array[j][i];
array[j][i]=k;
}
}
void main()
{
int i,j;
int a[3][3]={1,2,3,4,5,6,7,8,9};
printf("转换前:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("\t%d",a[i][j]);
printf("\n");
}
convert(a);
printf("\n 转换后:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("\t%d",a[i][j]);
printf("\n");
}
}
215.编程输入 a、b、c 的值后,输出一元二次方程 ax+bx+c=0 的解。
参考答案:
#include
#include
void main( )
{
float a, b, c,d, x1, x2;
printf("input a,b,c: ");
4
scanf("%f%f%f", &a, &b, &c);
d = sqrt(b * b - 4 * a *c);
x1 = (-b + d) / (2 * a);
x2 = (-b - d) / (2 * a);
printf("x1 = %.2f x2 = %.2f\n", x1, x2); }
16.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符
对
两个数计算,并输出结果。
参考答案:
#include
void main()
{
float a, b;
int tag = 0;
char ch;
float result;
printf("input two number: ");
scanf("%f%f", &a, &b);
fflush(stdin);
printf("input arithmetic lable(+ - * /): ");
scanf("%c", &ch);
switch(ch)
{
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/': if (!b)
{
printf("divisor is zero!\n");
tag = 1;
}
else
result = a / b;
break;
default: printf("illegal arithmetic lable\n");