搜档网
当前位置:搜档网 › C编程去年参考

C编程去年参考

C编程去年参考
C编程去年参考

“高级语言程序设计”编程题

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);

}

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]

min=score[i];

ave=ave+score[i];

}

ave=ave/10.0;

printf("max=%d,min=%d,ave=%f",max,min,ave);

}

11. 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”,

否则输出“other character”。

参考答案:

#include

void main(){

char ch;

ch=getchar();

if(ch>='0'&&ch<='9')

printf("a numerical character");

else

printf("other character");

}

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二维数组转置。

参考答案:

#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: ");

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");

tag = 1;

}

if (!tag)

printf("%.2f %c %.2f = %.2f\n", a, ch, b, result);

}

17.编写输入一个字符串,计算其中空格的个数。

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);

}

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++)

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)

else

printf ("no\n");

}

27. 求出10至1000之内能同时被2、3、7整除的数,并输出。

28. 输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。

29.设计一个函数,用来判断一个整数是否为素数。

参考答案:

#include

#include

int IsPrimer(int n)

{ int i;

if(n<=1)

return 0;

for(i=2;i<=(int)sqrt(n);i++)

{ if(n%i==0)

return 0; }

return 1;

}

void main()

{ int i;

scanf("%d",&i);

if(IsPrimer(i))

printf("这是素数\n");

else

printf("这不是素数\n");

}

printf ("the sorted numbers:\n");

for (i = 0; i < 10; i++)

printf ("%d ", a[i]);

}

30.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低

于平均分的学生成绩,用输入负数结束输入。

参考答案:

#include

void main()

{

float x[1000],sum=0,ave, a;

int n=0, i;

printf("Enter mark:\n");

scanf("%f",&a);

while(a>=0 && a<=100 && n<1000)

{

sum+=a;

x[n]=a;

n++;

scanf("%f",&a);

}

ave= sum/n;

printf("Output:\n");

printf("ave=%f\n",ave);

for (i=0;i

if(x[i]

printf ("%f\n",x[i]);

}

31.设计一个函数,用来判断一个整数是否为素数。

参考答案:

#include

#include

int IsPrimer(int n)

{ int i;

if(n<=1)

return 0;

for(i=2;i<=(int)sqrt(n);i++)

{ if(n%i==0)

return 0; }

return 1;

}

void main()

{ int i;

scanf("%d",&i);

if(IsPrimer(i))

printf("这是素数\n");

else

printf("这不是素数\n");

}

printf ("the sorted numbers:\n");

for (i = 0; i < 10; i++)

printf ("%d ", a[i]);

}

32.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低

于平均分的学生成绩,用输入负数结束输入。

参考答案:

#include

void main()

{

float x[1000],sum=0,ave, a;

int n=0, i;

printf("Enter mark:\n");

scanf("%f",&a);

while(a>=0 && a<=100 && n<1000)

{

sum+=a;

x[n]=a;

n++;

scanf("%f",&a);

}

ave= sum/n;

printf("Output:\n");

printf("ave=%f\n",ave);

for (i=0;i

if(x[i]

printf ("%f\n",x[i]);

}

33. 输入三个整型数,找出其中数值最大者并输出。

34.编写程序在屏幕上显示如下图形:

1 2 3 4 5

5 1 2 3 4

4 5 1 2 3

3 4 5 1 2

2 3 4 5 1

35. 编写猜数游戏,程序给定某个整数,从键盘上反复输入数据进行猜测。如

果未猜中,程序提示输入过大或者过小;如果猜中,则输出猜的次数,最多允许猜10次。

参考答案:

#include

void main()

{

int x=58,t=0,a,flag=0;

do{

printf("请输入您猜的数:");

scanf("%d",&a);

t++ ;

if(a==x)

{

flag=1;

printf("您猜对了!总共猜了%d次。\n",t);

break ;

}

else if(a>x)

printf("您猜的数大了\n");

else

printf("您猜的数小了\n");

}while(t<10);

if(flag==0)printf("次数已到。游戏结束!");

}

36. 将一个数组中的值按逆序重新存放。例如,原来顺序为 a,b,c,d,e,f,g,现在顺序为g,f,e,d, c,b,a.(数组长度不限)

参考答案:

#include

#define N 10

void main()

{

int i,M;

char a[N], t;

for(i=0;i

scanf(“%c”,&a[i]);

M=N-1;

for(i=0;i

{

t=a[i];a[i]=a[M];a[M]=t;

}

for(i=0;i

printf(“%c”,a[i]);

}

37.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。

参考答案:

#include

#include

void main()

{

char str[3][80],c;

int e[3]={0},x[3]={0},d[3]={0},s[3]={0},o[3]={0};

int i,j;

for(i=0;i<3;i++)

gets(str[i]);

for(i=0;i<3;i++)

for(j=0;str[i][j]!='\0';j++)

{

c=str[i][j];

if(c>='A'&&c<='Z')e[i]++;

else if(c>='a'&&c<='z')x[i]++;

else if(c>='0'&&c<='9')d[i]++;

else if(c==' ')s[i]++;

else o[i]++;

}

for(i=0;i<3;i++)

printf("第%行:大写字母有%d个,小写字母有%d个,数字有%d个,空格有%d 个,其他字符有%d个。\n ",i,e[i],x[i],d[i],s[i],o[i]);

}

38.求

=

=

=

+

+

10

1

50

1

2

100

1

1

k

k

k

k

k

k

参考答案:

#include

void main()

{

int i,sum1=0,sum2=0;

double sum3;

for(i=1;i<=100;i++)

sum1+=i;

for(i=1;i<=50;i++)

sum2+=i*i;

for(i=1;i<=10;i++)

sum3+=1.0/i;

printf(“The result is %.2f”,sum1+sum2+sum3);

}

39.将十个整数输入数组,求出其平均值并输出。

40.将十个实型数输入数组(float n[10];)逆序存放后再输出。

41.编写程序:输出x2的值,x取值从1到10。( 8’)

参考答案:

#include

void main(){

int x;

for ( x=1;x<10;x++)

printf(“%d\n”,x*x)

}

42.设计程序:定义可以存储1000个整数的数组;在该数组中依次存入1到1000;在屏幕上打印出数组中所有17的倍数。(10’)

参考答案:

#include

void main(){

int i,a[1000];

for ( i=0;i<1000;i++)

a[i] = i+1;

for ( i=0;i<1000;i++)

if (i%17 == 0) printf(“%d\n”,a[i]);

43.设计一个函数,用来判断一个整数是否为素数;并在main()函数中调用该函数,在屏幕上打印出100以内的所有素数。(12’)

参考答案:

#include

#include

bool IsPrimer(int n)

{

int i,m;

m=int(sqrt(n));

for(i=2;i<=m;i++)

{

if(n%i==0)

return false;

}

return true;

}

void main()

{

int i;

for ( i=0;i<=100;i++)

if(IsPrimer(i))

printf("%d\n", i);

}

44.写出一个函数,求n! .(n! = 1*2*3*………*n)

参考答案:

#include

unsigned double fact(unsigned double n)

{

if (n==0) return 1;

return n*fact(n-1);

}

void main()

{

printf("%d",fact(10));

}

45.使用一维数组计算学生的平均成绩。用输入负数结束输入。

参考答案:

#include 〞stdio.h〞

void main(void)

{

int score[30],NumMax=30;

int i,num=0,sum=0;

double average;

printf("input the scores please:\n");

for(i=0;i

{

scanf(“%d”,&score[i]); /* 将键盘输入的成绩赋给各个数组元素 */

if (score[i]<0)

break; /*当输入为负数时,跳出循环,结束输入*/

num++; /*num用来计算非负数的成绩的个数*/ }

for(i=0;i

sum+=score[i]; /* 求学生成绩的累加和 */ average=(sum*1.0)/num; /* 计算平均成绩 */

printf("average=%lf\n",average);

for (i=0;i

if (score[i]

printf(“the number = %d, its score = %d”,i,score[i]);

}

46.从键盘上输入一个3*3的矩阵,并求其主对角线元素的和。

参考答案:

#include

void main()

{

int a[3][3],sum=0;

int i,j;

printf("请输入一个三行三列的整数矩阵:\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]); /*读入二维数组a*/

for(i=0;i<3;i++)

sum=sum+a[i][i]; /*将主对角线的元素累加到sum中*/

printf("该矩阵住对角线元素的和是:%d",sum);

printf("\n");

}

47.写一个函数is_prime,判断整数n是否素数。如果n是素数,则返回1;如

果n不是素数,则返回0。

参考答案:

/* is_prime:如果n是素数,则返回1;否则,返回0 */

int is_prime(int n)

{

int k,limit;

if (n==2) return 1;

if ((n % 2)==0) return 0; //如果是偶数,则非素数,返回0

limit=n/2 ;

for (k=3;k<=limit;k+=2)

if ((n % k)==0) return 0;

return 1;

}

48.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”

参考答案:

#include

void main()

{

int i;

char s[80];

scanf("%s", s);

for (i = 0; s[i]; i ++)

{

if (s[i] >='a' && s[i] <= 'z')

{

s[i] -= 32;

}

if (s[i] >='A' && s[i] <= 'Z')

{

s[i] += 32;

}

}

printf("%s", s);

}

49.任意输入10个整数,打印出10个数中的最大值

参考答案:

#include

void main()

{

int n, max, i;

scanf("%d", &max);

for (i = 1; i < 10; i ++)

{

scanf("%d", &n);

if (n > max)

{

max = n;

}

}

printf("max=%d", max);

}

50.输入三个整数a, b, c,请按从小到大的顺序输出这三个数参考答案:

#include

void main()

{

int a, b, c, t;

scanf("%d%d%d", &a, &b, &c);

if (a > b)

{

t = a;

a = b;

b = t;

}

if (b > c)

{

t = b;

b = c;

c = t;

}

if (a > b)

{

t = a;

a = b;

b = t;

}

printf("%d, %d, %d", a, b, c);

}

51、输入一个整数n,请判断n是否是质数,如果是,打印 n是质数,否则打印 n不是质数

参考答案:

#include

void main()

{

int n, i;

scanf("%d", &n);

for (i = 2; i <= n / 2; i ++)

{

if (n % i == 0)

{

break;

}

}

if (i <= n / 2)

{

printf("%d不是质数", n);

} else

{

printf("%d是质数", n);

}

}

52编程,先输入n,再输入n个实数并分别统计正数的和、负数的和,然后输出统计结果。

参考答案:

#include

void main()

{ int i,n;float x,s1=0;s2=0;

scanf(″%d″,&n);

for(i=1;i<=n;i++) {scanf(″%f″,&x);if(x>0) s1++;if(x<0) s2++;} printf(″%f %f\n″,s1,s2,);

}

53.编程,输入a 1、a 2、...、a

15 111111123

14

15+

+

++???

++a a a a a

参考答案:

#include

void main()

{ float a [15],y; int i;

for(i=0;i<15;i++) scanf(″%f ″,a+i);

y=a [14];for(i=13;i>=0;i --) y=1+a [i ]/(1+y);

printf(″%f \n ″,y);

}

54.编程,设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。

参考答案:

#include

struct person

{ char name[20];

int count;

}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};

main()

{ int i,j; char leader_name[20];

for(i=1;i<=10;i++)

{

scanf("%s",leader_name); 唱票:4分

for(j=0;j<3;j++) 循环寻找得票人:4分

if(strcmp(leader_name, leader[j].name)==0) 寻找得票人:8分 leader[j].count++; 更新得票人票数:4分

}

for(i=0; i<3;i++)

printf("%5s:%d\n",leader[i].name,leader[i].count);

}

55.编程,从键盘上输入一个字符串,将其中的小写字母转换成大写字母,大写字母转换成小写字母,输入字符串以“!”结束,将转换后的字符串输出到电脑屏

相关主题