c语言编程题

发布时间:2014-07-05 20:02:56   来源:文档文库   
字号:

实验2 数据类型和标准输入与输出

1)编写程序,输入摄氏温度,转换为华氏温度。转换公式如下:

华氏度 = 32 + 摄氏度 × 1.8

#include "stdio.h"

void main()

{ int s;

double h;

printf("请输入摄氏度");

scanf("%d",&s);

h=32+s*1.8;

printf("%lf",h);

}

2)编写一个程序,输入大写字符,转换成对应的小写后输出。

#include "stdio.h"

void main()

{ char a,b;

printf("请输入一个大写字母");

scanf("%c",&b);

a=b+32;

printf("%c",a);

}

升级版:

#include "stdio.h"

void main()

{ char a,b;

printf("请输入一个大写字母");

scanf("%c",&b);

if(b>'Z')

printf("请重新输入");

else

a=b+32;

printf("%c",a);}

升级版:

#include "stdio.h"

void main()

{

char a,b1;

printf("请输入一个字母");

scanf("%c",&b1);

if('a'<=b1&&b1<='z');

a=b1-32;

if('A'<=b1&&b1<='Z')

a=b1+32;

printf("%c",a);

}

3)输入一元二次方程的三个系数,计算该方程的根。

/* Note:Your choice is C IDE */

#include "stdio.h"

#include<math.h>

void main()

{

double a,b,x1,x2,d,c;

printf("请输入一元二次方程的三个系数abc");

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

d=b*b-4*a*c;

x1=(-b+sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

printf("第一个根是%lf,第二个根是%lf",x1,x2);

}

加强版:

#include "stdio.h"

#include<math.h>

void main()

{

double a,b,x1,x2,d,c;

printf("请输入一元二次方程的三个系数a,b,c\n");

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

d=b*b-4*a*c;

if(d<0)

printf("你输入的方程没有根");

else

{ x1=(-b+sqrt(d))/(2*a);

x2=(-b+sqrt(d))/(2*a);

printf("第一个根是%lf,第二个根是%lf",x1,x2) ;}

}

4请编一程序,用赋初值的方法使c1c2c3c4c5 五个变量的值分别

为’c’、’h’、’i’、’n’、’a’,经过运算,使c1c2c3c4c5 分别变为’G’、’l’、’m’、’r’、’e’,并输出,分析是否符合要求。

源代码:

/* Note:Your choice is C IDE */

#include "stdio.h"

void main()

{

char c1,c2,c3,c4,c5;

c1='c';

c2='h';

c3='i';

c4='n';

c5='a';

printf("%c%c%c%c%c" ,c1,c2,c3,c4,c5);

c1=c1-28;

c2=c2-28;

c3=c3+4;

c4=c4+4;

c5=c5+4;

printf("%c\n",c1);

printf("%c\n",c2);

printf("%c\n",c3);

printf("%c\n",c4);

printf("%c\n",c5);

实验3-5 选择结构程序设计

}

3编程判断从键盘上输入的正整数是否既是5又是7的倍数,若是,则输出yes,否则输出no

#include "stdio.h"

void main()

{

int a,b;

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

scanf("%d",&a);

if(a%5==0&&a%7==0)

printf("yes");

else

printf("no");

}

4、输入一个年份,判断是否是闰年?

闰年的条件

能被4整除,但不能被100整除。

能被4整除,又能被400整除

#include

void main()

{

int a;

printf("请输入一个年份");

scanf("%d",&a);

if((a%4==0&&a%100!=0)||(a%4==0&&a%400==0))

printf("是闰年");

else

printf("不是闰年");

}

5、编写一个程序,从键盘输入三个数a,b,c,编程输出最大的数和最小的数。

#include

void main()

{

int a,b,c,max;

printf("请输入三个数字");

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

max=(a>b?a:b);

max=(max>c?max:c);

printf("%d",max);

用?表达式计算四级成绩是否通过,大于425分则输出通过,否则输出不通过。

源代码:

#include

void main()

{

int a;

printf("请输入四级成绩");

scanf("%d",&a);

printf("%s",a>425?"通过":"不通过");

}

2、用?表达式对输入的一个字母进行判断,如果是大写则转换为小写,如果是小写则转换为大写输出。

#include "stdio.h"

void main()

{

char a,b;

printf("请输入一个字母");

scanf("%c",&a);

if(64<a&&a<123)

{b=(a<97?a+32:a-32);

printf("%c",b);}

else

printf("请重新输入");

}

3从键盘上输入x的值,按下式计算y的值。(要求用两种if结构实现,一种是串行if结构,无论什么数都必须比较三次;一种是多分枝if结构,可以减少比较次数)

#include "stdio.h"

void main()

{

double x,y;

printf("请输入一个x");

scanf("%lf",&x);

if(x<1)

y=x;

if(1<=x&&x<10);

y=2*x-1;

if(x>=10)

y=3*x-11;

printf("%lf",y);

}

第二种结构

#include "stdio.h"

void main()

{

double x,y;

printf("请输入一个x");

scanf("%lf",&x);

if(x<1)

y=x;

else if(1<=x&&x<10)

y=2*x-1;

else if(x>=10)

y=3*x-11;

printf("%lf",y);

}

4编写程序,给出一个百分制成绩,要求输出相应的等级ABCDE90分以上为'A'8089分为'B'7079分为'C'6069分为'D'60分以下为'E'(要求用多分枝if结构实现)

#include "stdio.h"

void main()

{

int x;

char y;

printf("请输入你的成绩");

scanf("%d",&x);

if(x>90)

y='A';

if(x>80&&x<90)

y='B';

if(x>70&&x<80)

y='C';

if(x>60&&x<70)

y='D';

if(x<60)

y='E';

printf("你的成绩是%c",y);

5、输入三个数,如果能构成三角形,则输出三角形的类型(钝角、锐角、直角),否则输出不能构成三角形。

#include "stdio.h"

void main()

{

double a,b,c;

printf("请输入三角形的三个边");

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

if(a>b+c||b>a+c||c>a+c)

printf("不是三角形");

else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a)

printf("是直角三角形");

else if(a*a>b*b+c*c||b*b>a*a+c*c||c*c>b*b+c*c)

printf("是钝角三角形");

else if(a*a<b*b+c*c||b*b<a*a+c*c||c*c<b*b+c*c)

printf("是锐角三角形");

}

6输入三个数a,b,c,要求按由小到大的顺序输出。

#include "stdio.h"

void main()

{

int a,b,c,t;

printf("请输入三个数");

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

if(a>b)

{

t=a;

a=b;

b=t;

}

if(a>c)

{t=a;

a=c;

c=t;}

if(b>c)

{t=b;

b=c;

c=t;}

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

1、运输公司对用户计算运费。

路程(s)越远,每公里运费越低。标准如下:

   s<250km 没有折扣

250≤s<500 2%折扣

500≤s<1000 5%折扣

1000≤s<2000 8%折扣

2000≤s<3000 10%折扣

3000≤s 15%折扣

设每公里每吨货物的基本运费为p,货物重为w,距离为s,

折扣为d,则总运费f的计算公式为:

f=p***(1-d) 

要求分别用if else if多分支选择结构和switch多分支结构实现。

#include "stdio.h"

void main()

{

int p,w,s;

double f;

printf("请由此输入基本运费为p,货物重为w,距离为s");

scanf("%d %d %d", &p,&w,&s);

if(s<250)

f=p*w*s;

else if(s<500)

f=p*w*s*(1-0.02);

else if(s<1000)

f=p*w*s*(1-0.05);

else if(s<2000)

f=p*w*s*(1-0.08);

else if(s<3000)

f=p*w*s*(1-0.10);

else if(s>3000)

f=p*w*s*(1-0.15);

printf("%f",f);

}

方法2

#include "stdio.h"

void main()

{

double p,w,d,f;

int s;

scanf("%lf%lf%d",&p,&w,&s);

switch(s/250)

{

case 0:d=0;break;

case 1:d=0.02;break;

case 2:

case 3:d=0.05;break;

case 4:

case 5:

case 6:

case 7:d=0.08;break;

case 8:

case 9:

case 10:

case 11:d=0.1;break;

default:d=0.15;

}

f=p*w*s*(1-d);

printf("总运费=%f",f);

}

2编写程序,判断一个学生成绩的R 优、良、中、差R : 假如从键盘输入的字母是 A

输出评语You are Excellent; 如果输入 B ,输出评语You are well ;

果输入 C ,输出评语You are passing ; 如果输入‘ D ,输出评语“You are notpassing!“ 如果输入的不是这四个字母,则出现提示“Input error!” 请编写一个程序,实现该判断功能。要求必须使用switch-case 结构实现。

#include "stdio.h"

void main()

{

char a;

int b;

printf("请输入你成绩的等级");

scanf("%c",&a);

switch(a)

{ case 'A':

printf("You are Excellent");

break;

case 'B':

printf("You are well");

break;

case 'C':

printf("You are passing");

break;

case 'D':

printf("You are notpassing");

break;

default:

printf("Input error");

break;

}

}

3编写一个简单计算器程序,输入格式为:data1 op data2。其中data1

data2 是参加运算的两个数,op 为运算符,它的取值只能是+-*/。要求必须使用switch-case 语句实现。

4while 完成计算自然数1-N之间的和。要求N从键盘输入,并输出结果。

#include "stdio.h"

void main()

{ double s=0;

int n,i=0;

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

scanf("%d",&n);

while(i<=n)

{s=i+s;

i++;}

printf("%f",s);

}

实验6-7 循环结构程序设计

1、分别用while,do while for完成计算n!。要求N从键盘输入,并输出结果。

#include "stdio.h"

void main()

{ double s=1;

int n,i=1;

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

scanf("%d",&n);

while(i<=n)

{s=i*s;

i++;}

printf("%f",s);

}

2、输入一个正整数n,统计不大于n值的所有偶数的和。(要求必须用do while实现)

#include "stdio.h"

void main()

{

int n,i=1;

double s=0;

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

scanf("%d",&n);

do

{ s=2*i+s;

i=i+2;

}

while(2*i<=n);

printf("偶数项和%lf",s);

}

3、计算 s=1-1/3 + 1/5- 1/7+1/2n-1 的值并输出,(必须使用do while实现)

#include "stdio.h"

void main()

{

int n,i=1,t=1;

double s=0;

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

scanf("%d",&n);

do

{

s=t*(1.0/i)+s;

t=-1;

i=i+2;

}

while(i<=(2*n-1));

printf("和为%lf",s);

}

4、从键盘输入10个实型数,求其倒数的和并输出。

#include "stdio.h"

void main()

{

int i;

double s=0,a;

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

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

{

scanf("%lf",&a);

s=1/a+s;

}

printf("和为%lf",s);

}

5、编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+…50 项之和。要求必须

使用for 语句实现。

#include "stdio.h"

void main()

{

int i;

double s=0;

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

{

s=(1.0)/(i*(i+1))+s;

}

printf("S=1/(1*2)+1/(2*3)+1/(3*4)+50 项之和为%f",s);

}

6、输入10 个整数,统计同时能被3 7 整除的个数,结果存放在变量nCount

中,将nCount 输出。要求必须使用do-while 语句实现。

do While源码:

#include "stdio.h"

void main()

{

int i=1,nCount=0,n;

printf("请输入10个整数");

do

{

scanf("%d",&n);

if(n%3==0&&n%7==0) nCount=nCount+1;

i++;

}

while(i<=10);

printf("能被37整除的个数是%d",nCount);

}

1打印出所有的“水仙花数”,所谓“水仙花数”是指一个3 位数,其各位数字立方和等于该数本身。例如:153 是一水仙花数,因为153=1^3+5^3+3^3.

#include "stdio.h"

void main()

{

int i,g,s,b,n=0;

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

{ b=i/100;

s=i/10-(10*b);

g=i-100*b-10*s;

if(i==b*b*b+s*s*s+g*g*g)

{ n=n+1;

printf("水仙花数是%d\n",i);}

}

}

2 从键盘任意输入一个整数,判断它是否为素数。

#include "stdio.h"

void main()

{

int i,n,k=0;

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

scanf("%d",&n);

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

{ if(n%i==0)

k=k+1;}

{if(k!=0)

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

else

printf("%d是素数",n);}

}

方法2

#include "stdio.h"

void main()

{

int i,m;

scanf("%d",&m);

for(i=2;i

{

if(m%i==0)

break;

}

if(i==m)

printf("是素数");

else printf("不是素数");

}

3、用循环结构程序设计方法,输出一个九九乘法表.

源码:#include "stdio.h"

void main()

{

int i,j,s;

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

{

for(j=1;j<9;j++)

{

s=i*j;

printf("%d*%d=%d ",i,j,s);

}

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

}

4从键盘输入10 个整数,统计其中正数、负数和零的个数,并在屏幕上依次输出。要求必须使用while 语句。

#include "stdio.h"

void main()

{

int i=1,j=0,s=0,n=0,m;

while(i<=10)

{

scanf("%d",&m);

if(m>0) j=j+1;

else if(m<0) s=s+1;

else n=n+1;

i++;

}

printf("%d,%d,%d",j,s,n);

}

5编程求1+1+2+..+1+2+..+n),n 的值由键盘输入。要求使用for 语句实现

源码:

#include "stdio.h"

void main()

{

int i,s,t,n;

s=0;t=0;

scanf("%d",&n);

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

{

s=s+i;

t=t+s;

}

printf("%d",t);

}


实验8-9 数组的应用(一)

1从键盘输入10 学生的成绩至数组中,将最低分和最高分的成绩输出,并输出所有成绩。

源码:

#include "stdio.h"

void main()

{

int i,n[10],max,min;

printf("请输入10个整数");

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

scanf("%d",&n[i]);

max=n[0];min=n[0];

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

if(max<n[i]) max=n[i];

if(min>n[i]) min=n[i];

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

{

printf("n[%d]=%d\n",i,n[i]);

}

printf("max=%d,min=%d\n",max,min);

}

2定义含有300 个元素的数组xx[i]=10* tan ((3.0+I*I)/ 5) (i=0,1,2..299),计算该一维数组的平均值,并求出此数组中大于平均值的数据之和,最后输出此数组的平均值及大于平均值的数据之和。

#include "stdio.h"

#include "math.h"

void main()

{

int i;

double s,n,a,x[300];

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

{x[i]=10*tan((3.0+i*i)/5);}

s=0;

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

{

s=s+x[i];

a=s/300;

}

n=0;

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

{if(x[i]>a)

n=n+x[i];

}

printf("a=%f,n=%f",a,n);

}

3定义含有300 个元素的数组yy[i]=10* cos ((3.0+i*i) / 5) (i=0,1,2…,299),计算一维数组的最大值及其所在位置(即下标),并输出此数组的最大值及其所在位置。

#include "stdio.h"

#include "math.h"

void main()

{

int i,max_i;

double y[300],max;

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

{y[i]=10*cos((3.0+i*i)/5);}/*由于数据类型原因3必须写成3.0*/

max=0;

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

{

if(max<y[i])

max=y[i];

max_i=i;

}

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

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

}

4编写程序求出555555 的约数中最大的三位数是多少。要求必须使用do-while 语句实现。

源码:

#include "stdio.h"

#include "math.h"

void main()

{

int n=555555,i=999;

do

{

if(n%i==0)break;

else i--;

}

while(i>=100);

printf("555555的最大三位数的公约数是i=%d",i);

}}

5输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出54321。注:1 不得使用数组;2 必须使用while 语句实现。

#include "stdio.h"

void main()

{

int n,k;

printf("请输入整数");

scanf("%d",&n);

while(n)

{

k=n%10;

printf("%d",k);

n=n/10;

}

}

1、从键盘输入10个整数,用起泡法进行排序。

源码:

#include "stdio.h"

void main()

{

int a[10],i,j,t;

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

{

scanf("%d",&a[i]);

}

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

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

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

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

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

printf("\n");

}

2有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 二维数组如下:

4 4 34 5

37 3 12 6

5 6 5 7

源码:

#include "stdio.h"

void main()

{

int max,i,j,im,jm;

int a[3][4]={{4,4,34,5},{37,3,12,6},{5,6,5,7}};

max=a[0][0];

im=0;

jm=0;

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

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

{

if(max<a[i][j])

{

max=a[i][j];

im=i;

jm=j;

}

}

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

}

3将一个二维数组行和列元素互换,存到另一个二维数组中并输出这两个矩阵。

原始矩阵如下:

1 4 5 6

3 2 7 8

7 9 0 3

源码:

#include "stdio.h"

void main()

{

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

int i,j,b[4][3];

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

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

b[j][i]=a[i][j];

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

{

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

printf("%d ",b[j][i]);

printf("\n");}

}

4、从键盘输入一个整数,把转换得到的二进制位存放在一维数组中并输出。

源码:

#include "stdio.h"

void main()

{

int n,i,j,a[100],t;

scanf("%d",&n);

t=n;

i=0;

while(t)

{

a[i]=t%2;

t=t/2;

i++;

}

for(j=i-1;j>=0;j--)

{

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

}

}

5200以内的所有素数存放到一维数组中并输出。

源码:

#include "stdio.h"

void main()

{

int i,m,j,k;

int a[200];

k=0;

for(m=199;m>1;m--)

{ for(i=2;i

{

if(m%i==0) break;

}

if(i>=m)

a[k++]=m;

}

for(j=k-1;j>=0;j--)

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

}

1、从键盘输入长方形的长和宽,计算长方形的面积并输出用*表示的长方形图形。要求面积计算和图形输出分别用函数实现。

源码:

/* Note:Your choice is C IDE */

#include "stdio.h"

int mianji(int w,int l) //此处的intreturn有关,需要携带一个整数返回

{ //形参的作用相当于定制式客户提供的尺寸等信息

int area; //函数体内部可以自由使用形参

area=w*l;

return area;

}

//函数的定义只是一个静态功能,此时不会做任何工作,具体使用要看调用者的函数调用

void printstar(int w,int l)

{

//void表示函数执行完毕不需要带任何结果回来,不能出现在等号后面,只能单独一条调用语句

int i,j;

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

{ for(j=1;j<=l;j++)

{printf("*");}

printf("\n");

}

}

void main()

{int len,wid,area;

scanf("%d%d",&wid,&len);

//mianji(wid,len);

//函数名(实参1,实参2)的方式使用函数,就叫函数调用,此时形参分配空间;

//实参的值拷贝给形参;执行函数体语句;最后用return携带结果返回。

area=mianji(wid,len);

//return返回的结果赋值给area变量。只要函数有返回结果,它可以当作表达式来使用,

//可以出现在等号后面任何相容的表达式中。

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

printf("\n");

printstar(wid,len);//单独一条调用语句,void函数的标准使用格式

}

2、从键盘输入长方体的长和宽和高,计算长方体的表面积和体积,并在main函数中输出。要求面积计算和体积计算分别用函数实现。

源码:

#include "stdio.h"

int bmj(int w,int l,int h) //此处的intreturn有关,需要携带一个整数返回

{ //形参的作用相当于定制式客户提供的尺寸等信息

int area; //函数体内部可以自由使用形参

area=(w*l+w*h+l*h)*2;

return area;

}

int tj(int w,int l,int h)

{//形参中的每个变量要分别进行类型定义

int tj=w*l*h;

return tj;

}

void main()

{int len,wid,high,area,vol;

scanf("%d%d%d",&wid,&len,&high);

area=bmj(wid,len,high);

vol=tj(wid,len,high);

printf("area=%d,vol=%d",area,vol);

}

3编写一个具有两个整形形参的函数max,返回较大值。在main函数中接受从键盘输入的两个整数,输出较大者。

源码:

#include "stdio.h"

int maxli(int x,int y)

{ int max;

if(x>y)

max=x;

else

max=y;

return max;

}

void main()

{

int max=1,a,b;

printf("请输入两个整数");

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

max=maxli(a,b);

printf("最大数为%d",max);

}

4、编写一个无参且无返回值的函数,用来打印出所有的水仙花数,在、main函数中调用该函数。

所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=1^3+5^3+3^3.

源码:#include "stdio.h"

void shuixian()

{

int i,g,s,b,n=0;

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

{ b=i/100;

s=i/10-(10*b);

g=i-100*b-10*s;

if(i==b*b*b+s*s*s+g*g*g)

{ n=n+1;

printf("水仙花数是%d\n",i);}

}

}

void main()

{

shuixian();

}

5、通过调用自定义函数来完成求圆柱体的体积(v=3.14*r2*h,要求圆柱体的高和底半径在主函数中做输入,圆柱体的体积在主函数中做输出

源码:

#include "stdio.h"

double yuanzhutiji(int r,int h)

{

double v;

v=3.14*r*r*h;

return v;

}

void main()

{ int r,h;

double v;

printf("请输入圆柱体的半径和高");

scanf("%d%d",&r,&h);

v=yuanzhutiji(r,h);

printf("圆柱的体积是%f",v);

}

6、通过函数调用求华氏温度,要求在主函数中输入摄氏温度,在主函数中输出华氏温度。(公式f=5/9*c+32

源码:

#include "stdio.h"

double huashidu(int c)

{

double h;

h=32+c*1.8;

return h;

}

void main()

{ int c;

double h;

printf("请输入摄氏度");

scanf("%d",&c);

h=huashidu(c);

printf("%d摄氏度变成华氏度是%f",c,h);

}

4有两个数组a和b,各有10个元素,将它们对应地逐个相比(即a[0]与b[0]比,a[1]与b[1]比……)。如果a数组中的元素大于b数组中的相应元素的数目多于b数组中元素大于a数组中相应元素的数目(例如,ai>bi6次,bi>ai3次,其中i每次为不同的值),则认为a数组大于b数组,并分别统计出两个数组相应元素大于、等于、小于的次数。 要求用函数实现比较并返回结果。

源码:

#include "stdio.h"

int great(int a,int b)

{

int f;

if(a>b) f=1;

else if(a==b) f=0;

else f=-1;

return f;

}

void main()

{

int a[10],b[10],i,j=0,k=0,m=0;

printf("请输入第一个数组10个元素\n");

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

scanf("%d",&a[i]);

printf("请输入第二个数组10个元素\n");

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

scanf("%d",&b[i]);

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

{

if(great(a[i],b[i])==1) j++;

else if(great(a[i],b[i])==0) k++;

else if(great(a[i],b[i])==-1) m++;

}

printf("a[i]大于b[i]的元素为%d\n",j);

printf("a[i]等于b[i]的元素为%d\n",k);

printf("a[i]小于b[i]的元素为%d\n",m);

if(j>m) printf("数组a大于数组b");

else printf("数组b大于数组a");

}

界面截图:

5用选择法对数组中10个整数按由小到大排序。要求主函数输入10个元素存入数组,调用排序函数实现数组元素的排序。

源码:

#include

void main()

{

int s[10];

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

scanf("%d",&s[i]);

printf("函数调用前数组元素值");

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

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

sort(s);

printf("函数调用后数组元素值")

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

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

}

void sort(int a[10] )

{int i,j,t,b;

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

{b=i;

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

{if(a[n]>a[j])b=j;}}

t=a[i];

a[i]=a[b];

a[b]=t;

}

1、编一函数,统计一维整数组小于数组元素平均值的元素的个数;主函数定义x[50],x[i]=600*cos(i*0.35), 调用函数,输出小于数组元素平均值的元素的个数。

(注:此程序不允许使用全局变量,不允许在avernum函数中输出)

源码:

#include "stdio.h"

#include "math.h"

void main()

{int avernum(double a[],int n);

double x[50];

int i,num;

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

x[i]=600*cos(i*0.35);

num=avernum(x,50);

printf("小于平均值元素的个数为%d",num);

}

int avernum(double a[],int n)

{int i,count;

double sum,ave; sum=0;

for(i=0;i

count=0;ave=sum/n;

for(i=0;i

{ if(a[i]

}

return count;}

2、求一维整型数组中的最小元素。 要求:主函数定义数组y[50]y[j]=600*sin(j*0.16) (j=0,1,2……49),调用自定义函数qmin求出最小元素,最后在主函数中输出结果。

源码:

#include "stdio.h"

#include "math.h"

void main()

{

double qmin(double a[],int n);

double y[50],min;

int j;

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

y[j]=600*sin(j*0.16);

min=qmin(y,50);

printf("最小值为%f",min);

}

double qmin(double a[],int n)

{int i;

double min;

min=a[0];

for(i=0;i

{ if(min>a[i]) min=a[i];

}

return min;}

3、求一维整型数组中正数的和。 要求:主函数定义数组a[10],从键盘输入十个数,调用自定义函数求出正数的和,然后在主函数中输出结果

源码:

#include "stdio.h"

#include "math.h"

void main()

{

double qsum(double a[],int n);

double a[10],sum;

int j;

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

scanf("%lf",&a[j]);

sum=qsum(a,10);

printf("正整数之和是%f",sum);

}

double qsum(double a[],int n)

{ int i;

double sum;

sum=0;

for(i=0;i

{ if(a[i]>0) sum+=a[i];

}

return sum;

}

4、编写程序求下式的值:S=2^1*1!+2^2*2!+……+2^n*n!(n<10)(^表示乘方),要求不使用数学函数而采用如下方法:先编写两个函数分别求解2^n n!,再编写求解S的函数,求解过程中调用前两个函数。最后在主函数中输入n,调用求解S的函数完成任务。

源码:

5编程验证歌德巴赫猜想:一个大于等于4的偶数都是两个素数之和,要求用函数实现(选作)

源码:

界面截图:

6用户从键盘输入一个1—99999之间的数,编写一个函数判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如121213223都是回文数。。(选作)

源码:

1、编一通用函数avermax,计算含有n个数据的一维数组的平均值,并求出此数组中大于平均值的数据之和;
主函数中定义含有300个元素的数组x,x[I]=10* cos ((3.0+I*I) / 5) (I=0,1,2……299),调用上述函数,输出此数组的平均值及大于平均值的数据之和。
(注:此程序不允许使用全局变量,不允许在avermax函数中输出)

源码:

#include

#include

double avermax(double a[],int n,double *m)

{

int i;

double s,aver;

aver=0;

for(i=0;i

{aver=aver+a[i];}

aver=aver/n;

s=0;

for(i=0;i

{

if(a[i]>aver)

s+=a[i];

}

*m=s;

return aver;

}

void main()

{

double x[300],s,a;

int i;

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

x[i]=10*cos((3.0+i*i)/5);

a=avermax(x,300,&s);

printf("平均值是%f\n",a);

printf("大于平均值的和是%f",s);

}

界面截图:

2、编一通用函数avernum,计算含有n个数据的一维数组的平均值,并统计此数组中大于平均值的数据的个数;
主函数中定义含有100个元素的数组x,x[I]=200*cos(I*0.875)(I=0,1,2……99),调用上述函数,输出此数组的平均值及大于平均值的数据的个数。
(注:此程序不允许使用全局变量,不允许在avernum函数中输出)

源码:

#include

#include

double avernum(double a[],int n,double *m)

{

int i;

double s,aver;

aver=0;

for(i=0;i

{aver=aver+a[i];}

aver=aver/n;

s=0;

for(i=0;i

{

if(a[i]>aver)

s=s+1;

}

*m=s;

return aver;

}

void main()

{

double x[100],s,a;

int i;

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

x[i]=200*cos(i*0.875);

a=avernum(x,100,&s);

printf("平均值是%f\n",a);

printf("大于平均值的和是%f",s);

}

界面截图:

3、编一通用函数maxsub,求出含有n个数据的一维数组的最大值及其所在位置(即下标);
主函数中定义含有300个元素的数组x,x[I]=10* cos ((3.0+I*I) / 5) (I=0,1,2……299),调用上述函数,输出此数组的最大值及其所在位置。
(注:此程序不允许使用全局变量,不允许在avermax函数中输出)

源码:

#include

#include

double maxsub(double a[],int n,double *m)

{

int i,t,max=a[0];

for(i=0;i

{

if(a[i]>max)

{max=a[i];

t=i;}

}

*m=t;

return max;

}

void main()

{

double x[300],s,a;

int i;

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

x[i]=10*cos((3.0+i*i)/5);

a=maxsub(x,300,&s);

printf("最大值%f\n",a);

printf("位置%f",s);

}

界面截图:

4、编写函数,实现任何整形数组元素的逆置。在主函数调用该函数,完成10个数组元素的逆置。

源码:#include "stdio.h"

void inverse(int a[],int n)

{

int i,j,m,t;

j=n-1;

m=(n-1)/2;

for(i=0;i<=m;i++,j--)

{

t=a[i];

a[i]=a[j];

a[j]=t

};

}

void main()

{

int b[10];

int *q,i;

q=b;

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

scanf("%d",(q+i));

inverse(b,10);

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

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

}

界面截图:

5、编写程序求下式的值:S=2^1*1!+2^2*2!+……+2^n*n!(n<10)(^表示乘方),要求不使用数学函数而采用如下方法:先编写两个函数分别求解2^n n!,再编写求解S的函数,求解过程中调用前两个函数。最后在主函数中输入n,调用求解S的函数完成任务。

源码:

#include "stdio.h"

int nj(int n)

{

int i=1,s=1;

while(i<=n)

{

s=s*i;

i++;

}

return s;

}

int nf(int n)

{

int i,s=1;

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

{s=s*2;}

return s;

}

void main()

{

int i,s=0,n;

scanf("%d",&n);

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

{s=s+nj(i)*nf(i);}

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

}

界面截图:

1、复制下面的程序并运行,观察程序运行的结果,并分析原因(注意程序第2行中有些单引号之间是空格)。

/* c8-1.c 字符数组的输出*/

#include "stdio.h"

void main( )

{ char a[10]={I, , a, m, ,a, , b, o, y};

printf("%s\n",a);

}

将字符数组a的大小改为11,再运行程序,并将结果与修改前的结果进行比较,分析原因。

界面截图:

结果不一致的原因:%s只针对字符串有效,以’\0’结束的串或字符数组

2、用gets函数从键盘接收一行字符串,自定义函数strlength计算字符串的长度。

源码:

#include

#include

int strlength(char t[]);

void main()

{

char s[80];

int len;

gets(s);

len=strlength(s);

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

}

int strlength(char t[])

{

int i;

i=0;

while(t[i]!='\0')

{i++;}

return i;

} 界面截图:

调用字符串库函数完成同样的功能。

源码:

#include

#include

void main()

{

char s[80];

int len;

gets(s);

len=strleng(s);

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

}

界面截图:

3按照要求编写程序:有一行文字,不超过80个字符,分别统计出其中英文大写字母、小写字母、数字、空格、及其它字符的个数。

源码:

#include

#include

void count(char *t);

void main()

{

char s[80];

gets(s);

count(s);

}

void count(char *t)

{

int u,l,b,d,q ;

u=l=b=d=q=0;

while(*t!='\0')

{

if(*t>='A'&&*t<='Z') u++;

else if(*t>='a'&&*t<='z') l++;

else if(*t>='0'&&*t<='9') d++;

else if(*t==' ') b++;

else q++;

t++;

}

printf("大写字母个数是%d\n", u );

printf("小写字母个数是%d\n",l);

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

printf("空格个数是%d\n", b);

printf("其他个数是%d\n",q);}

4、自己定义一个函数strconnect,实现字符串的连接。在主函数中进行测试。

源码:

#include

#include

void stringcopy(char *s,char *t);

void main()

{

char s[80],t[40];

gets(s);

gets(t);

stringcopy(s,t);

printf("链接后的字符串为%s",s);

}

void stringcopy(char *s,char *t)

{

while(*s++!='\0');

s--;

while(*t='/0')

*s++=*t++;

*s='\0';

}

5、编写一个函数,把字符串的所有小写字符转换成大写字符。并在主函数中测试。

源码:

界面截图:

6、自己定义一个函数stringcopy,实现字符串的复制。在主函数中进行测试。

源码:

界面截图:

调用字符串库函数完成同样的功能。

源码:

界面截图:

1用结构体数组建立一张班级成绩单,包括每个学生的姓名、英语、数学、语文三门课程的成绩。用函数编程实现下列功能:

(1) 输入每个学生的各项信息。

函数源码:

#include

#include

typedef struct grade

{char name[20];

int yw;

int sx;

int yy;

} student;

void input(student s[],int n)

{

int i;

for(i=0;i

{ printf("please input name");

scanf("%s",s[i].name);

printf("please input yw");

scanf("%d",&s[i].yw);

printf("please input sx");

scanf("%d",&s[i].sx);

printf("please input yy");

scanf("%d",&s[i].yy);

printf("\n");

}

}

void print(student s[],int n)

{ int i;

printf("\t姓名\t语文\t数学\t英语\n");

for(i=0;i

printf("\t%s\t%d\t%d\t%d\n",s[i].name,s[i].yw,s[i].sx,s[i].yy);

}

void main()

{

student stu[5];

int i;

input (stu,5);

print(stu,5);

界面截图:

(2) 输出每个学生的各项信息。

函数源码:

界面截图:

(3) 修改指定学生的指定数据项的内容。

函数源码:

界面截图:

(4) 统计每个同学的平均成绩(保留2位小数)。

函数源码:

界面截图:

(5) 输出各位同学的学号、姓名、门课程的成绩平均成绩。

函数源码:

界面截图:

本文来源:https://www.2haoxitong.net/k/doc/3f36618449649b6649d7470d.html

《c语言编程题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式