武汉纺织大学 48学时 C语言编程题复习

更新时间:2023-05-14 23:39:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

48学时编程题,答案。。有了它,考试编程题必过3!

编程题复习

选择结构

1.使用if形式编写程序:若a>b将两个数的位置调换;

年组 55岁以上的分老年组。排除不可能 7.编写程序,求二元一次方程ax2+bx+c=0

的岁数。 的根 #include”stdio.h” void main() { int age;

printf(“请输入年龄(0<=年龄<=150):”);

#include”stdio.h” #include”math.h” void main() { int a,b,c;

否则,保持不变。 scanf( “ %d ” ,&age);

#include”stdio.h” if(age>0&&age<=150) float x1,x2; void main() { if(age<18)

printf(“请输入一元二次方程的三个系数a、

{ int a,b,temp; printf( “ 参加儿童组 \n ”); b 、 c:\n ”); printf(“请输入两个整数:”); else if(age<45) scanf(“%d%d%d”,&a,&b,&c); scanf(“%d%d”,&a,&b); if(a>b) { temp=a; a=b; b=temp; if(c>a&&c>b)

printf(“%d,%d\n”,a,b); }

2.用if形式求3个数中的最大数。 #include”stdio.h” void main() { int a,b,c;

printf(“请输入三个整数:”); scanf(“%d%d%d”,&a,&b,&c); if(a>b&&a>c) printf(“%d最大\n”,a); if(b>a&&b>c) printf(“%d最大\n”,b); printf(“%d最大\n”,c); }

3.将输入的字符的大写字符转换成小写字符

输出,小写字符原样输出 #include”stdio.h” 岁到45岁之间分在青年组,45岁到55岁之间分在中

void main() { int c; c=getchar(); if(c>= A &&c<= Z ) putchar(c+32); putchar(c); } 4.编写程序,输入报名者的岁数,小于18岁分儿童组.18

岁到45岁之间分在青年组,45岁到55岁之间分在中

printf( “ 参加青年组 \n ” ); else if(age<55) printf( “ 参加中年组 \n ” ); else printf(“ 参加老年组 \ n”);

} else printf(“数据错误!\n)

} 5.根据输入字符( 0到F,用%c接收)显示与该字符所表示的 十六 进制数相对

应的十进制数。(例如输入A,输出10; 输入0,输出0。) #include”stdio.h” void main() printf(“请输入0~F:”);

scanf(“%c”,&i);

。 switch(i) { case

0 :case 1 :case 2 :

case

3 :case 4 :case 5 :

case 6 :case 7 : case 8 :case 9 :printf(“%d\n”,i- 0 );break; case

A :case a :printf( “ %d\n ”,10);break; case

B :case b :printf( “ %d\n ” ,10);break; case

C :case c :printf( “ %d\n ”,10);break; case D :case d :printf( “ %d\n ” ,10);break; case E :case e :printf( “%d\n”,10);break; case F :case f :printf(“%d\n”,10);break; default:printf(“输入有误!”); }

} 1 / 8

if(b*b-4.0*a*c>=0)

{ x1=(-b+sqrt(b*b-4.0*a*c))/(2.0*a); x2=(-b-sqrt(b*b-4.0*a*c))/(2.0*a);

printf(“方程的根是x1=%f\tx2=%f\n”,x1,x2);

} else printf(“方程无根!\n”); }

6.编写程序,从键盘接受一个简单的表示四则运算的表达式,

计算结果并输出。例如,输入“ 20+32”,

输出“ =52 ” 。 要求用 switch 语句和 else if形式编写程序。

用 switch 实现 #include ” stdio.h ”

void main() {

int a,b;

char c; printf(“请输入一个四则运算表达式(例如20+32):\n”);

scanf(“%d%c%d”,&a,&c,&b); switch(c)

{

case

+ :printf(“%d+%d=%d\n”,a,b,a+b);break; case

- :printf(“%d-%d=%d\n”,a,b,a-b);break; case

* :printf(“%d*%d=%d\n”,a,b,a*b);break; case / :printf(“%d/%d=%d\n”,a,b,a/b);break; default:printf(“输入有误!\n”); } }

用else if 实现

#include ” stdio.h ”

48学时编程题,答案。。有了它,考试编程题必过3!

void main { int a,b; char c;

printf(“请输入一个四则运算表达式(例如20+32):\n”);

scanf(“%d%c%d”,&a,&c,&b); if(c== + )

printf(“%d+%d=%d\n”,a,b,a+b); else if(c== - )

printf(“%d-%d=%d\n”,a,b,a-b); else if(c== * )

printf(“%d*%d=%d\n”,a,b,a*b); else if(c== / )

printf(“%d/%d=%d\n”,a,b,a/b); else

printf(“输入有误!\n”); }

8.从键盘接受一个字符,输出该字符字典排列顺序的下一个字符,

例如,输入a,输出b。如果输入的字符不在26个英语字母中,

则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。 #include”stdio.h” void main { char c;

printf(“请输入一个英文字母:”); c=getchar(); if(c>= a &&c<= z ) {

printf(“%c--%c\n”,c,(c- a +1)%26+ a ); }

if(c>= A &&c<= Z ) {

printf(“%c--%c\n”,c,(c- A +1)%26+ A ); } else

printf(“输入数据有误!\n”); }

9编写程序,根据输入的百分制分数,按五分制的成绩输出。

把百分制改成5分制 /* 使用else if */ #include<stdio.h> void main() { int score;

printf("请输入百分制成绩(0~100):

\n"); scanf("%d",&score); if(score>=90)

printf("百分制成绩%d转换成五分制成绩是5\n",score); else if(score>=80)

printf("百分制成绩%d转换成五分

制成绩是4\n",score); else if(score>=60)

printf("百分制成绩%d转换成五分

制成绩是3\n",score); else

printf("百分制成绩%d转换成五分

制成绩是2\n",score); }

/* 使用switch */ #include<stdio.h> void main() { int score,k;

printf("请输入百分制成绩(0~100):\n");

scanf("%d",&score); k=score/10; switch(k) {

case 10:case 9:printf("百分制成绩%d转换成五分制成绩是5\n",score);break; case 8:printf("百分制成绩%d转换成五分制成绩是4\n",score);break;

case 7:case 6:printf("百分制成绩%d转换成五分制成绩是3\n",score);break; case 5:case 4:case 3:case 2:case 1:case 0: printf("百分制成绩%d转换成五分制成绩是2\n",score); }

}

循环结构

1、输入一行字符,分别统计其中英文字母、

2 / 8

空格、数字和其他字符的个数 #include<stdio.h>

main()

{

char a;

int b,c,d,e;

b=0;c=0;d=0;e=0;

fflush(stdin);

printf("请输入一串东西:");

while ((a=getchar())!='\n')

{

if(a>='a'&&a<='z'||a>='A'&&a<='Z')

b++;

else if(a>='0'&&a<='9')

c++;

else if(a==' ')

e++;

else

d++;

}

printf("字母%d个\n",b);

printf("数字%d个\n",c);

printf("空格%d个\n",e);

printf("符号%d个\n",d);

48学时编程题,答案。。有了它,考试编程题必过3!

#include”stdio.h” int yue (int a,int b) { int r,m; r=a%b; while(r!=0) { a=b; b=r; r=a%b; } m=b; return m; }

int bei(int a,int b,int m) { int t; t=(a*b)/m; return t; }

void main() { int a,b,m,t;

printf(“请输入两个正整数:”); scanf(“%d%d”,&a,&b); m=yue(a,b);

printf(“最大公约数=%d\n”,m); t=bei(a,b,m);

printf(“最小公倍数=%d\n”,t); } 3.

1111( 1)n 1

234 n

值并输出。

结束条件为

1 10 5

n

#include "stdio.h" #include "math.h" void main()

{ float a,b,h,x,sum;

int flag; long i;

for

(i=1,sum=0,flag=1;fabs(1.0/i)>=1.E-5;i++)

{ sum=sum+flag*1.0/i; flag=-flag;

}

printf("计算结果是:%f",sum); }

4.编写程序,输入一个正整数,计算并显示该整数的各位数字之和。

例如,整型数1987的各位数字之和是

1+9+8+7,等于25. #include<stdio.h> void main() { int i,sum,k;

printf("请输入一个正整数:"); scanf("%d",&i); sum=0; while(i!=0) { k=i%10; sum=sum+k; i=i/10;

}

printf("=%d\n",sum);

}

5.计算歌手得分:去掉一个最高分,去掉一

3 / 8

个最低分,

取剩余成绩的平均分。编写程序输入一个歌手的若干

成绩,以-1作为输入结束标记,计算歌手的最后得分。 #include<stdio.h> void main()

{ int x,min,max,n=0,sum=0;

printf("请输入若干歌手的成绩,以-1作为输入结束标记\n"); scanf("%d",&x); max=min=x; while(x!=-1)

{ if(min>x)

min=x; if(max<x) max=x; sum+=x; n++;

scanf("%d",&x);

} if(n==0)

printf("错误!用户没有输入成绩!\n"); else if(n>2)

printf("去掉一个最高分%d、去掉一个最低分%d,歌手的最后得分是:%d\n",max,min,(sum-max-min)/(n-2)); else

printf("输入成绩个数小于3,歌手的最后得分是:%d\n",sum/n);

48学时编程题,答案。。有了它,考试编程题必过3!

}

6.输出所有的水仙花数。水仙花数是一个3位正整数,

它的三个数字的立方和等于该数本身。例

如:153 = 13 + 53 +33

#include <stdio.h> void main() { int i,j,k,n=100; while(n<1000) { i=n/100; j=n%100/10; k=n%10;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%d%d%d\n",i,j,k); n++; } }

7.编写程序列出斐波那契(Fibonacci)数列的前20项。

斐波那契数列源自一个有趣的问题:一对小兔,一个月后长成中兔

,第三个月长成大兔,长成大兔以后每个月生一对小兔。第20个月有多少对兔子? #include "stdio.h" void main() { int a,b,j,f;

a=1;b=1; printf("%10d%10d",a,b); for( j=3;j<=20; j++) {

f=a+b; a=b; b=f;

printf("%10d",f); if

(j%5==0)

printf("\n"); }

}

8.编写程序求a+aa+aaa+....其中a是一个数字。例如:3+33+333+3333+33333

(此时n为5)。要求a和n从键盘输入,输

出格式:3+33+333+3333+33333=37035 #include<stdio.h> void main() { int a,n,x,i,sum;

printf("输入a和n的值:"); scanf("%d%d",&a,&n); sum=a; x=a;

printf("%d",a); for(i=2;i<=n;i++) { x=x*10+a; printf("+%d",x); sum+=x;

}

printf("=%d\n",sum);

}

9.假设数列中的每一项都比前一项大一个常量。假设第一项为a,

并且两个相邻项之间的差为d。编写程序提示输入数列的前两项,

以及需要计算的项数k。利用循环语句输出数列的前k项, 并计算前k项的和。 #include<stdio.h> void main()

{ int a1,a2,d,k,i,sum;

4 / 8

printf("请输入数列的前两项:"); scanf("%d%d",&a1,&a2);

printf("请输入需要计算的项数:"); scanf("%d",&k); d=a2-a1; sum=a1;

printf("%d

项数列分别是:

\n%d\t",k,a1); for(i=2;i<=k;i++) { a2=a1+d; printf("%d\t",a2); sum=sum+a2; a1=a2;

}

printf("\n

%d

是:%d\n",k,sum);

}

10. 编写程序输出下列图形: 1 22 333 4444 55555 666666

7777777 88888888 999999999

#include "stdio.h" void main() {

int i,j; for (i=1;i<=9;i++) { for (j=1;j<=10-i;j++) printf(" ");

for (j=1;j<=i;j++) printf("%d",i);

printf("\n");

48学时编程题,答案。。有了它,考试编程题必过3!

} }

11.若口袋里放12个球,3个红的,3个白的,6个黑的,

从中任取8个,编写程序列出所有可能的取法。

#include "stdio.h" void main() {

,大班每人2个,中班每人3个,小班每人4个,

正好分掉100个。编写程序求幼儿园共有多少个小朋友。 #include<stdio.h> void main()

{ int t,r; if(v>u) {

t=u;u=v;v=t;} while((r=u%v)!=0) { u=v;v=r; } int red,white,black;

{ int x,y,z; for (red=0;red<=3;red++) for (white=0;white<=3;white++) for (black=0;black<=6;black++) if (red+white+black==8)

printf("\nred %d,white %d,black %d", red,white,black); }

12.请为“百鸡问题”编写程序。百鸡问题:“鸡翁一,值钱五;鸡母一,

值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁,母,雏各几只”。 #include<stdio.h> void main() { int x,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) { z=100-x-y; if(15*x+9*y+z==300)

printf("百钱买白鸡,鸡翁%d个、鸡母%d个,鸡雏%d个\n",x,y,z); }

}

13.幼儿园有大,中,小3个班的小朋友。分西瓜时,大班3人1个,

中班4人1个,小班5人1个,正好分掉10个;分苹果时

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

for(y=1;y<40;y++)

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

if(20*x+15*y+12*z==600&&2*x+3*y+4*z=

=100)

printf("大班%d人,中班%d人,小班%d人,幼儿园共有%d个小朋友\n",x,y,z,x+y+z); }

14.求3到100之间的所有素数。 #include "stdio.h" void main() {

int i,j;

for (i=3;i<=100;i++) { for (j=2;j<=i-1;j++) if (i%j==0) break;

if (i==j) printf("%4d",i); }

printf("\n"); }

模块化程序设计

1.定义两个函数分别求两个整数的最大公约数和最小公倍数,

并在主函数中输入两个整数以后调用该函数。编写主函数调用该函数。 int hcf(int u,int v)

5 / 8

return(v); }

int lcd(int u,int v,int h) { return(u*v/h); }

#include <stdio.h> void main() {

int u,v,h,l;

printf("输入两个正整数按照格式a,b:"); scanf("%d,%d",&u,&v); h=hcf(u,v);

printf(" 最大公约数 =%d\n",h);

l=lcd(u,v,h);

printf(" 最小公倍数 =%d\n",l);

}

2.函数间的参数传递。 #include "stdio.h"

void fail_swap(int a,int b); void main() { int i,j;

i=2;j=4; printf("before call

i=%d,j=%d\n",i,j); fail_swap (i,j);

printf("called i=%d,j=%d\n",i,j); }

void fail_swap(int x,int y)

48学时编程题,答案。。有了它,考试编程题必过3!

{ int temp; printf("

before

change

A_V_sphere (r,&v)); printf("\n

Volume

of sphere

scanf("%lf",&r);

A_V_sphere (r,&v,&area);

printf("\n 球的表面积 %lf.", area);

x=%d,y=%d\n",x,y); temp=x; x=y; y=temp; printf("

changed

is %lf.", v); },

5,用递归法计算Fibonacci序列的前20项。

printf("\n 球的体积 %lf.", v);

}

数组和指针

x=%d,y=%d\n",x,y); }

3.编写函数真正交换两个数。 #include "stdio.h"

void swap(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; }

void main() {

int a,b; printf("Please enter

two

integer:");

scanf("%d%d",&a,&b); printf("Before exchanged:");

printf("a=%d\t b=%d\n",a,b); swap(&a,&b); printf("After exchanged:");

printf("a=%d\t b=%d\n",a,b); }

4. 编写一个函数求球的表面积和球的体积, 在主函数中调用该函数输出球的表面积和球的体积。

#include "stdio.h"

double A_V_sphere(double r,double *v) { double area;

area=4*3.1415926*r*r;

*v=4.0/3*3.1415926*r*r*r; return area; }

void main() { double r,v; printf("\nEnter radius

of

sphere:");

scanf("%lf",&r); printf("\n Area of sphere is %lf.",

#include "stdio.h" int f(int x)

{ if(x==1) return 1;

if(x==2) return 1; else return f(x-1)+f(x-2);

}

void main() { int a,i;

printf("请输入一个正整数:");

scanf("%d",&a); for(i=1;i<a;i++) {

printf("%d,",f(i));

}

if(i=a) printf("%d\n",f(i));

}

6 编写一个不带返回值的函数分别求球的表面积和球的体积,

在主函数中调用该函数输出球的表面积和球的体积。 #include "stdio.h" void

A_V_sphere(double

r,double

*v,double *area) { *area=4*3.1415926*r*r;

*v=4.0/3*3.1415926*r*r*r; } void main()

{ double r,v,area; printf("\n输入球的半径:");

6 / 8

1.输入30名歌手的分数,求出最小的分数以及第一个

最小的分数在数组中的下标。 #include "stdio.h" #define SIZE 30 void main() { int i;

float data[SIZE];

int min_allo; printf("\nPlease input

%d

float:",SIZE);

for (i=0;i<SIZE;i++) { scanf("%f",&data[i]);

}

min_allo=0; for (i=1;i<SIZE;i++) { if (data[i]<data[min_allo]) min_allo=i; }

printf("Min is %5.2f , Alloction is %5d\n",data[min_allo],min_allo); }

2.输入30名歌手的分数,将这30个分数从

小到大输出。 #include "stdio.h" #define SIZE 30 void main() {

int i,j;

float data[SIZE];

int min_a; printf("\nPlease input

%d

int:",SIZE);

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

scanf("%f",&data[i]); for (i=0;i<SIZE;i++)

{ min_a=i; for (j=i+1;j<SIZE;j++) if (data[j]<data[min_a])

48学时编程题,答案。。有了它,考试编程题必过3!

min_a=j; for (i=0;i<size;i++) temp=data[min_a]; scanf("%f",&a[i]); data[min_a]=data[i]; data[i]=temp; }

printf("\n排序后的结果是:");

}

printf(" %d",a[i]); 程序段二:

void show_array(float a[],int size)

int a[10] ={1,2,3,4,5,6,7,8,9,10}; { int i;

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

int *pa=a; int i;

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

for (i=0;i<SIZE;i++) printf(" %5.2f",a[i]); printf("%5.2f",data[i]);

}

printf("\n"); }

void sort(float a[],int size)

printf(" %d",pa[i]); { int i,min_a,j;

3.用函数求一个数组的和,在主函数中初始化一个数组后调用该函数输出结果。 #include "stdio.h"

float sum_function(int size,float a[]); void main()

{ float price[5]={1.1,2.2,3.3,4.4,5.5}; printf("Sum

is %f\n",sum_function(5,price));

}

float sum_function(int size,float a[]) { int i; float sum=0;

for (i=0;i<size;i++) sum=sum+a[i]; return(sum); }

4. 输入30个歌手的分数,对这些分数进行

排序,输出排序之前和排序之后的结果。

#include "stdio.h"

#define SIZE 30

void accept_array(float a[],int size); void sort(float a[],int size); void show_array(float a[],int size); void main()

{ float score[SIZE];

accept_array(score,SIZE); printf("Before sorted: "); show_array(score, SIZE); sort(score, SIZE); printf("After sorted: "); show_array(score,SIZE); }

void accept_array(float a[],int size) { int i; printf("\nPlease enter

%d

score:",size);

float temp; for (i=0;i<SIZE;i++)

{ min_a=i; for (j=i+1;j<SIZE;j++) if (a[j]<a[min_a])

min_a=j; temp=a[min_a]; a[min_a]=a[i];

a[i]=temp;

}

}

5.反的顺序输出。 输入

10个数到一个数组中,按照与输入相

#include "stdio.h"

#define SIZE 10

void main()

{ int a[SIZE]={1,2,3,4,5,6,7,8,9,10};

int *pa,i;

int *qa;

pa=qa=&a[0];

printf("\nPlease enter %d

integer:",SIZE);

for (;pa<qa+SIZE;pa++)

scanf("%d",pa);

printf("Array data:",SIZE);

for (pa--;qa<=pa;pa--) printf(" %d",*pa);

}

6.四个程序段的功能是将数组a中的10

个整数输出。

程序段一:

int a[10] ={1,2,3,4,5,6,7,8,9,10}; int i;

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

7 / 8

程序段三:

int a[10] ={1,2,3,4,5,6,7,8,9,10};

int *pa=a;

int i;

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

printf(" %d",*(pa+i));

程序段四:

int a[10]={1,2,3,4,5,6,7,8,9,10}; int *pa=a;

int i;

for (i=0;i<9;i++) printf(" %d",*(a+i))

7. 编写程序首先询问用户学生的人数,然后读入这些学生的成绩到

一组动态分配的空间中,最后输出这组成绩。

#include "stdio.h"

#include "stdlib.h"

#define ERROR {printf("out of

memory\n");return;}

void main()

{ int size; int *p,*aux; printf("Please let me know how many students in your class:");

scanf("%d",&size);

p=(int *)malloc(sizeof(int)*size);

48学时编程题,答案。。有了它,考试编程题必过3!

if (p==NULL) ERROR printf("Please scores:",size);

enter

%d

j=0; while (str2[j]!= '\0') { str1[i]=str2[j]; i++;j++;

{ char strl[100]; printf(“请输入字符串:\n”); gets(strl);

printf(“字符串长度:%d\n”,str_len(strl)); }

12、输入3行4列的二维整型数组,求最大值及行号、列号

for (aux=p;aux<p+size;aux++) } scanf("%d",aux);

for (aux=p;aux<p+size;aux++) printf(" %d",*aux);

str1[i]='\0';

}

10.输入两个字符串,输出较大的字符串

free(p);

#include "stdio.h"

}

#include "string.h"

8.自定义一个字符串拷贝函数,并在主函数void main()

#include”stdio.h” 中调用。

#include "stdio.h"

void str_cpy(char *s,char *t) { while (*t!=0) {*s=*t; s++;t++;} *s='\0'; }

void main()

{ char *str2; char str1[80]; str2="Welcome"; str_cpy(str1,str2); puts(str2); }

9.编写一个函数将两个字符串连接起来,用主函数调用该函数。 #include "stdio.h" #include "string.h"

void str_cat(char str1[],char str2[]); void main()

{ int i,j; char str1[160]; char str2[80]; puts("请输入第一个字符串:"); gets(str1); puts("请输入第二个字符串:"); gets(str2); str_cat(str1,str2); puts(str1); }

void str_cat(char str1[],char str2[]) { int i,j; i=0; while (str1[i]!= '\0') i++;

{ char strl[100],strl[100];

printf(“请输入两个字符串;\n”); gets(strl1); gets(strl2);

if(strcmp(strl1,strl2)>=0) puts(strl1); else puts(strl2); }

11.编写函数 str_len 求字符串的长度,并在主函数中调用该函数, 函数说明如下:

(不准使用

库函数strlen) int str_len(char *str); #include”stdio.h” int str_len( char strl[]) { int sum=0,i=0; while (strl[i]!= \0 ) { i++; sum++; }

return sum; }

void main()

8 / 8

void main() { int a[3][4],temp; int i,j,k,h;

printf(“请输入12个整数:\n”); for(i=0;i<3;i++) for(j=0;j<4;i++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) { for(j=0;j<4;i++) printf (“%5d”,a[i][j]); printf(“\n”); }

temp=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;i++) { if (a[i][j]>=temp) { k=i; h=j; temp=a[i][j]; } }

printf(“最大数:%d,其坐标为:%d,%d\n”,a[k][h],k,h); }

本文来源:https://www.bwwdw.com/article/ah3e.html

Top