文档视界 最新最全的文档下载
当前位置:文档视界 › C语言程序简单例子

C语言程序简单例子

C语言程序简单例子
C语言程序简单例子

实验二参考答案

1.输入两个整型数字,输出他们的和。

#include

main()

{

int a, b, sum;

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

sum=a+b;

printf(“a+b=%d ”, sum);

}

2.输入两个实型数,输出他们的和与乘积。

#include

main()

{

float a, b, sum, product;

scanf(“%f%f ”, &a, &b);

sum=a+b;

product=a*b;

printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product);

}

3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。

#include

#include

main()

{

float a, b, c, dt, x1, x2;

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

dt=sqrt(b*b-4*a*c);

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

x2=(-b-dt)/(2*a);

printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2);

}

4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)

#include

main()

{

int h, f, x,y;

scanf(“%d%d”, &h, &f);

x=2*h-f/2;

y=f/2-h;

printf(“x=%d, y =%d”, x, y);

}

实验三参考答案

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

#include

main()

{

float a,b,c,t;

scanf(“%f,%f,%f”,&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(“%f,%f,%f”,a,b,c);

}

2.编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。

(1)

#include

main()

{

float a,b,c,t;

scanf(“%f,%f,%f”,&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;}

if(a+b>c)

{

if(a==b||b==c)

{

if(a==c) printf(“等边三角型”);

else if(c*c==a*a+b*b) printf(“等腰直角三角形”); else printf(“一般等腰三角形”);

}

else if(c*c==a*a+b*b) printf(“一般直角三角形”);

else printf(“一般三角形”);

}

else printf(“不构成三角形”);

}

(2)

#include

main()

{

float a,b,c,t;

scanf(“%f,%f,%f”,&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;}

if(a+b<=c) printf(“不构成三角形”);

else if(a==b && b==c && a==c) printf(“等边三角型”);

else if(a==b && c*c==a*a+b*b) printf(“等腰直角三角形”); else if (a==b) printf(“一般等腰三角形”);

else if(c*c==a*a+b*b) printf(“一般直角三角形”); else printf(“一般三角形”);

}

3.编程实现下列函数

x (x<1)

y= 2x-1 (10

≤x)

1<

|3x-11| (10

x)

#include

#include

main()

{

int x,y;

printf("input x=:");

scanf("%d",&x);

if(x<1) y=x;

else if(x<10) y=2*x-1;

else y=abs(3*x-11);

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

}

4.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。

方法一:用if语句

#include

main()

{

float score;

char grade;

scanf("%f", &score);

if(score>100||score<0) printf("\ninput error!");

else

{

if(score>=90) grade='A';

else if(score>=80) grade='B';

else if(score>=70) grade='C';

else if(score>=60) grade='D';

else grade='E';

}

printf("the student grade=%c \n", grade);

}

方法二:用switch语句。

注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。#include

main()

{

float score,

int s;

char grade;

scanf("%f", &score);

s=score/10;

if(s<0||s>10) printf("\ninput error!");

else

{

switch (s)

{

case 10:

case 9: grade ='A'; break;

case 8: grade ='B'; break;

case 7: grade ='C'; break;

case 6: grade ='D'; break;

default: grade ='E';

}

printf("the student grade =%c \n ", ch);

}

}

实验四参考答案

1.编写程序,计算以下级数前n 项之和。

!/...!4/!3/!2/1432n x x x x x sum n ++++++=

#include

void main()

{

int i, n;

float s=1.0, sum=1.0, x;

scanf(“%d, %f ”, &n, &x);

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

{

s=s*x/i;

sum=sum+s;

}

printf(“sum=%5.2f ”, sum);

}

2.编程打印如下图案(书后习题第3题):

**

****

******

********

**********

************

**************

#include

main( )

{

int i, j, n;

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

{

for(j=0; j<14-2*i; j++) printf(" ");

for(j=0; j<2*i; j++) printf("*");

printf("\n");

}

}

3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。(图中n=5)

1

1 2 1

1 2 3 2 1

1 2 3 4 3 2 1

1 2 3 4 5 4 3 2 1

1 2 3 4 3 2 1

1 2 3 2 1

1 2 1

1

#include

main( )

{

int i, j,n;

scanf("%d", &n);

for(i=1; i

{

for(j=1; j

for(j=i; j>0; j--) printf(" %d", j);

printf("\n");

}

for(i=n; i>0; i--)

{

for(j=1; j

for(j=i; j>0; j--) printf(" %d", j);

printf("\n");

}

}

4.输出Fibonacci数列第n项。其数列通项公式为F

n =F

n-1

+F

n-2

,F1=1,F2=1。

方法一:

#include

main()

{

float f, f1=1, f2=1;

int i, n;

scanf("%d", &n);

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

{

f=f1+f2;

f1=f2;

f2=f;

}

printf("%10.0f \n", f );

}

方法二:

#include

#define NUM 20

void main()

{

int i;

float f[NUM]={1,1};

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

f[i] = f[i-2]+f[i-1]; for(i = 0; i < NUM; i++)

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

}

实验五参考答案

1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c

#include

void main()

{

int a[3]={1,2,3}, b[3]={4,5,6}, c[3];

int i;

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

{

c[i]=a[i]+b[i];

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

}

}

2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序)

#include

#define NUM 10

void main ()

{

int a[NUM], i, j, temp, flag;

printf ("input %d numbers: \n", NUM);

for (i=0; i

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

for (i=1; i

for (j=0; j

{

flag = 0;

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

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

flag = 1;

}

if (flag == 0) break;

}

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

for (i=0; i

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

}

3.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标

#include

#define NUM 10

void main()

{ int a[NUM];

int i,max, index;

for(i=0; i

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

max=a[0];

for(i=0; i

{

if(max

{

max=a[i];

index=i;

}

}

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

}

4.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。(不得调用任何字符串处理函数包括strlen)

#include

#define NUM 80

void main()

{ char a[NUM], temp;

int i, j, index;

for(i=0; i

{

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

if(a[i]=='\n') break;

}

a[i]='\0';

index=i;

for(i=0, j=index-1; i<=index/2; i++, j--) {

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

for(i=0; i

{

if(a[i]=='\0') break;

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

}

printf("\n");

}

实验五参考答案

1.编写函数,求表达式452+-x x 的值,x 有由主函数输入。(请同学们用有返回值和

无返回值两种方式去做,练习简单的函定义、声明、及调用方法)

有返回值

#include

float fun(float x)

{

float m ;

m=x*x-5*x+4;

return m ;

}

void main()

{

float a, f;

scanf("%f", &a);

f=fun(a);

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

}

无返回值

#include

void fun(float x)

{

float m ;

m=x*x-5*x+4;

printf("%f \n", m);

}

void main()

{

float a;

scanf("%f", &a);

fun(a);

}

2.编写函数,按如下递归公式求函数值。

1 (n=0)

fun(n)=

-

?n

2+

fun (n>0)

(

1

)1

#include

int fun(int n)

{

int m;

if(n==0) m=1;

else

m=2*fun(n-1)+1;

return m;

}

void main()

{

int a, f;

scanf("%d", &a);

f=fun(a);

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

}

3.编写函数求数n所有质因子(所有为素数的因子)并输出,n由主函数输入。#include

#include

int prime(int m)

{

int j;

if (m == 1) return 0;

else if (m == 2) return 1;

else if (m%2==0) return 0;

else

for(j=3; j<=sqrt(m); j+=2)

if(m%j==0) return 0;

return 1;

}

void main()

{

int i,n,flag;

scanf("%d",&n);

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

{

if(n%i==0) flag=prime(i);

else flag=0;

if(flag==1) printf("%d \n",i);

}

}

4.哥德巴赫猜想之一是,任何一个大于5的偶数都可以表示为两个素数之和。编写程序验证这一论断。

#include

int prime(int m)

{

int j;

if (m == 1) return 0;

else if (m == 2) return 1;

else if (m%2==0) return 0;

else

for(j=3; j<=sqrt(m); j+=2)

if(m%j==0) return 0;

return 1;

}

main( )

{

int a,b,c,n;

scanf("%d", &n);

for (a=6; a<=n; a+=2)

for (b=3; b<=a/2; b+=2)

if (prime(b)==1)

{

c=a-b;

if (prime(c)==1)

{

printf("%d=%d+%d\n",a,b,c);

break;

}

}

}

5.二维数组score中存放5个学生的3门课成绩,由主函数输入一个数,将所有总成绩大于该数的学生输出。

#include

void max(float a[5][3], float score)

{

int i,j;

float s;

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

{

s=0;

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

s=s+a[i][j];

if(s>score)

printf("stu%d: %.2f\n", i+1, s);

}

}

void main()

{

int i,j;

float a[5][3];

float score;

printf("please input number:\n");

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

{

printf("stu%d:", i+1);

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

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

printf("\n");

}

printf("please input score:");

scanf("%f", &score);

max(a,score);

}

实验七参考答案

1.用指针变量输出任意4*4矩阵各元素的值

(1)

#include "stdio.h"

void main()

{

int i,a[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}; int *p=a;

for(i=0;i<4*4;i++)

{

printf("%3d",*(p+i));

if((i+1)%4==0)

printf("\n");

}

}

(2)

#include "stdio.h"

void main()

{

int a[4][4]={{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}}; int (*p)[4]=a;

int i,j;

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

{

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

printf("%3d",*(*(p+i)+j));

printf("\n");

}

printf("\n");

}

2.有一个整型二维数组a[m][n],找出最大值所在的行和列,以及该最大值#include "stdio.h"

void main()

{

int a[4][4]={{1,34,35,26},{7,12,92,24},{55,33,53,6},{7,41,34,64}};

int (*p)[4]=a;

int i,j,x,y,max;

max=a[0][0];

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

{

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

{

printf("%3d",*(*(p+i)+j));

if(max<*(*(p+i)+j))

{

max=*(*(p+i)+j);

x=i;

y=j;

}

}

printf("\n");

}

printf("\nmax=%d\nx=%d\ny=%d\n",max,x,y);

}

3.从键盘输入一字符串,求此字符串的长度并输出

#include

int str_len(char *p)

{

int n=0;

while(*p!='\0')

{

n++;

p++;

}

return n;

}

int main()

{

char a[100];

int n;

printf("Input a string:\n");

gets(a);

n=str_len(a);

printf("The lenth:%d\n",n);

}

4.将字符串str中的小写字母全部改为大写字母,并输出该字符串

#include "stdio.h"

void fun(char *p)

{

int i;

for(i=0;*(p+i)!='\0';i++)

if(*(p+i)>='a'&&*(p+i)<='z')

*(p+i)=*(p+i)-32;

}

void main()

{

char str[50];

char *p=NULL;

printf("Please input string:\n");

gets(str);

p=str;

fun(p);

puts(str);

}

实验八参考答案

1. 编写程序:定义一个职工结构体类型,定义职工结构体变量,从键盘输入一名职工信息,然后输出。(假设职工信息包括:姓名、身份证号、工龄、工资)

#include

struct employee

{

char name[20];

char id[20];

int gl;

int salary;

};

int main()

{

struct employee em;

printf("Name:\n");

scanf("%s",https://www.docsj.com/doc/611700549.html,);

printf("HM:\n");

scanf("%s",em.id);

printf("GL:\n");

scanf("%d",&em.gl);

printf("GZ:\n");

scanf("%d",&em.salary);

printf("Name:%s HM:%s GL:%d GZ:%d\n",https://www.docsj.com/doc/611700549.html,,em.id,em.gl,em.salary);

return 0;

}

2. 设计一个保存学生情况的结构体,学生情况包括姓名、学号、年龄。输入5个学生的情况,输出学生的平均年龄和年龄最小的学生的情况

#include

struct Student {

char name[100]; // 姓名

char stdNo[10]; // 学号

int age; // 年龄

};

// 输入学生信息

void input (Student *stu, int n) {

printf("输入%d个学生信息:", n);

for (int i = 0; i < n; i++) {

printf("\n第%d个学生:\n", i + 1);

printf("姓名:");

gets(stu[i].name);

printf("学号:");

gets(stu[i].stdNo);

printf("年龄:");

scanf("%d", &stu[i].age);

fflush(stdin);

}

}

3. 使用结构体数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果

#include

#include

相关文档