“高级语言程序设计”编程题
1. 从键盘输入 3 个整数,求其中的最大数和最小数,并输出结果。
2. 从键盘上输入一个 3*3 的整数矩阵,求其各行的平均值并输出,输出时保留
两位小数。
3. 输出 x2 的值,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");
}
}
15.编程输入 a、b、c 的值后,输出一元二次方程 ax2+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 '+':
case '-':
case '*':
case '/':
result = a + b;
result = a - b;
result = a * b;
if (!b)
break;
break;
break;
{
printf("divisor is zero!\n");
tag = 1;
}
else
result = a / b;
break;
default:
printf("illegal arithmetic lable\n");
tag = 1;
}
if (!tag)
printf("%.2f %c %.2f = %.2f\n", a, ch, b, result);
}
17.编写输入一个字符串,计算其中空格的个数。
5
18. 采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和
每门课的成绩。
19.编写程序,逆转字符串。
20. 编写程序,统计一个英语文本中的英语单词个数。
21. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数
字立方和等于该数本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方
+5 的三次方+3 的三次方。
参考答案:
#include “stdio.h”
void main()
{
int i,j,k,n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
{
n=i*100+j*10+k;
printf("n=%d\n",n);
}
}
22.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前
20 项之和。
参考答案:
#include "stdio.h"
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
}
printf("sum is %9.6f\n",s);
}
6
23.找出 101~200 中所有的素数。
参考答案:
#include
#include
int isprimer(int n)
{
int i,m;
m=(int)(sqrt(n));
for(i=2;i<=m;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
void main()
{
int i;
for(i=101;i<=200;i++)
if(isprimer(i))
printf("%d\n",i);
}
24.使用循环结构编写程序,打印出如下图案
*
***
*****
参考答案:
#include “stdio.h”
void main()
{
int i,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
7
printf("*");
printf("\n");
}
}
25.用冒泡排序法将 10 个整数由大到小排序。
参考答案:
#include
void main ( )
{ int a[10], i, j, t;
printf ("input %d numbers: \n", 10);
for (i = 0; i < 10; i++)
scanf ("%d", &a[i]);
for (i = 0; i < 9; i++)
for (j = 0; j < 9 - i; j++)
if (a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
printf ("the sorted numbers:\n");
for (i = 0; i < 10; i++)
printf ("%d ", a[i]);
}
26.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右
到左读一样,如 12321)。
参考答案:
#include
void main ( )
{ int n, m = 0, s, r;
printf ("Input data is: ");
scanf ("%d", &n);
s = n;
while (s != 0)
{ r = s % 10;
m = 10 * m + r;
s = s / 10;
}
if (m == n)
8