最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C语言实验内容

IT圈 admin 35浏览 0评论

2024年2月18日发(作者:梁丘飞)

C语言上机实验

2.1 熟悉C语言程序开发环境

2.1.3 实验内容

1. 编程题1

编写程序实现在屏幕上显示以下文字。

思考:如何在屏幕显示数字、汉字等信息?

2. 编程题2

编程打印如下图案。

a

aa

aaa

aaaa

3.改错题

改正下列程序中的错误,在屏幕上显示商品价格表(源程序error1_2.c)。输入输出示例

商品名称 价格

TCL电视机 ¥7600

美的空调 ¥2000

SunRose键盘 ¥50.5

源程序(有错误的程序)

#include

mian()

{

printf("商品名称 价格n);

printf("TCL电视机 ¥7600")

printf("美的空调 ¥2000)

printf("SunRose键盘 ¥50.5)

}

4.编程题3

编程将下面的内容显示在屏幕的中间位置。

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

tell me why? tell me why?

tell me why? tell me why?

1

The dress is long.

The shoes are big.

The trousers are black.

C语言程序设计

just tell me why, why, why?

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

思考:最少可用几条printf()语句完成?

2

2.2 数据描述

2.2.3 实验内容

1.编程题1

已知a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。

输入输出示例

a/b的商=7

a/c的商=3

a%b的余数=10

a%c的余数=15

2.编程题2

已知a=160,b=46,c=18,d=170, 编写求输入输出示例

(a+b)/(b-c)*(c-d)=-1064.000000

3.编程题3

设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符)

输入输出示例

c=-10

4.编程题4

当n为24时,求出n的个位数字、十位数字的值。

输入输出示例

24的个位数字是4,十位数字是2

思考:如果n是三位数或四位数时,怎样求它的各位数字?

5.改错题

改正下列程序中的错误。假设i的初始值为1,j的初始值为2,求下列表达式的值(k)。

(1)i +=j

(2)i ――

(3)i * j / i

(4)i % ++j

输入输出示例

(1)i=3,j=2,k=3

(2)i=0,j=2,k=1

(3)i=1,j=2,k=2

(4)i=1,j=3,k=1

源程序(有错误的程序error2_2.c)

#include

3

(ab)(cd)的程序。

bc

C语言程序设计

main()

{

i=1; j=2;

k=(i+=j)

printf("(1) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i--;

printf("(2) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i*j/i;

printf("(3) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i% ++j;

printf("(4) i=%d,j=%d,k=%dn",i,j,k);

}

4

2.3 顺序结构程序设计

2.3.3 实验内容

1.键盘输入与屏幕输出练习

源程序:

#include

main()

{

char a,b;

int c;

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

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

}

问题1 要使上面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。

A)1 2 34 B)1, 2, 34

C)’1’,’2’,34 D)12 34

问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?

问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?

问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?

[提示:利用转义字符输出字符单引号字符。]

问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为'1', '2',34,则程序应修改程序中的哪条语句?怎样修改?

第1种输入方式:1,2,34↙(以逗号作为分隔符)

第2种输入方式:1 2 34↙(以空格作为分隔符)

第3种输入方式:1 2 34↙(以Tab键作为分隔符)

第4种输入方式:1↙

2↙

34↙(以回车符作为分隔符)

2. 编程题1

从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。

输入输出示例

Enter a and b: 20 30

d:40

x:28

5

C语言程序设计

3.编程题2

从键盘输入两个实数a和x,按公式计算并输出y的值:

yasin(ax)ln(ax)e

输入输出示例

Enter a , x : 1.0,0.0

y=2.000000

4.改错题

改正下列程序中的错误。从键盘输入3个整数a、b、c,计算这3个整数的和s,并以“s=a+b+c”和“a+b+c=s”的形式输出a、b、c和s的值。请不要删除源程序中的注释。(源程序error3_2.c)

输入输出示例

3 4 5

12=3+4+5

3+4+5=12

源程序(有错误的程序)

#include

main()

{

int a,b,c,s;

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

s=a+b+c;

printf("%d=%d+%d+%dn",a,b,c); /*输出s=a+b+c*/

printf("%d+%d+%d=%dn",s); /*输出a+b+c=s*/

}

5.编程题3(选做)

已知a=2.5,b=9.4,c=4.3,编程求axbxc0的解x1和x2。

提示:可用求根公式x1 ,225axbb24ac

2a输入输出示例

x-1=-0.533003,x2=-3.226996

6.编程题4(选做)

从键盘输入3个变量的值,其中a=10,b=20,c=30,然后将3个变量交换,使得a=20,b=30,c=10。

输入输出示例

10 20 30

a=20 b=30 c=10

6

2.4.3 实验内容

2.4 选择结构程序设计

1.编程题1

输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。

1axlnf(x)2aax0输入输出示例

第一次运行

Enter a and x:5 6

a=5,f(6)=0.24

第二次运行

Enter a and x:5 5

a=5,f(5)=0.00

xaxa

2.编程题2

从键盘输入一个整数,若大于等于0,输出提示信息“is positive”,否则输出“is

negative”。

输入输出示例

第一次运行

Input a :5

5 is positive

第二次运行

Input a :0

0 is positive

第三次运行

Input a :-3

-3 is negative

3.编程题3

输入a、b、c三个整数,输出最大数。

输入输出示例

第一次运行

Enter a,b,c:1,5,9

the max number is:9

第二次运行

Enter a,b,c:9,5,1

the max number is:9

第三次运行

Enter a,b,c:1,9, 5

7

C语言程序设计

the max number is:9

4.改错题

改正下列程序中的错误,输入一个数n(不一定是整数),判定n是小于0,等于0,还是大于0。(源程序error4_2.c)

输入输出示例

第一次运行

Enter n:10

10 is greater than 0

第二次运行

Enter n:-5

-5 is less than 0

第三次运行

Enter n:0

0 is equal to 0

源程序(有错误的程序)

#include

main()

{

double n;

printf("Enter n:");

scanf("%f",&n);

if(n<0)

printf("n is less than 0n");

else if(n=0)

printf("n is equal to 0n");

else

printf("n is greater 0n");

}

模仿调试案例,单步调试程序,观察变量值的变化。

5.编程题4(选做)

一个工人的月工资按如下方法计算:在正常工作时间内每小时为5元,如果超出正常工作时间,则在超过的时间内每小时4元。其中,每月正常工作时间为160小时。编制一个程序,计算并输出一个工人的工资。其中月工作时间从键盘输入。

输入输出示例

第一次运行

input t:150

p=750

第二次运行

input t:200

p=960

第三次运行

input t:160

p=800

8

6.编程题5(选做)

编写一个程序,要求用户输入一个两位的整数,然后显示这个数的英文单词。

输入输出示例

第一次运行

Enter a two-digit number:35

You entered the number thirty-five

第二次运行

Enter a two-digit number:12

You entered the number twelve

提示:把数分解为两个数字。用一个switch语句显示第一位数字对应的单词(“twenty”、“thirty”等),用第二个switch语句显示第二位数字对应的单词。不要忘记11~19的数有特殊处理要求。

2.5 循环结构程序设计

2.5.3 实验内容

1.编程题1

编写程序:求1+2+3+…+100和12+22+33+…+1002。

输入输出示例

sum1=5050 sum2=338350

2.编程题2

一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2~5000中的所有完数。

输入输出示例

6 28 496

3.编程题3

编写程序:计算sinx的近似值,精确到10-6。其中x为弧度,由用户从键盘输入。

x3x5x7

sinxx3!5!7!输入输出示例

第一次运行:

请输入一个x值(弧度值):0

sin(0.00)=0.000000

第二次运行:

请输入一个x值(弧度值):1.57

sin(1.57)=1.000000

4.改错题

改正下列程序中的错误。(源程序error4_2.c)

韩信点兵。韩信有一队兵,他想知道有多少人,便让土兵排队报数。按从1至5报数,最末一个土兵报的数为1;按从1至6报数,最末一个土兵报的数为5;按从1至7报数,

9

C语言程序设计

最末一个土兵报的数为4;最后按从1至11报数,最末一个土兵报的数为10;你知道韩信有多少土兵吗?

输入输出示例

n=2111

源程序(有错误的程序)

#include

main()

{

int find=0;

while(!find)

{

if(n%5==1 && n%6==5 && n%7==4 && n%11==10)

{

printf("n=%dn", n);

find =1;

}

}

}

5.编程题4(选做)

编写一个程序,计算并输出能写成两个数平方之和的所有三位数的个数。

输入输出示例

num=274

6.编程题5(选做)

编写程序,用户从键盘输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。注意:n不得大于10。

输入输出示例

Enter n::5

A B C D E

F G H I

J K L

M N

O

10

2.6 函数和编译预处理

2.6.3 实验内容

1.编程题1

写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。

输入输出示例

输入:n1=24 n2=16

输出:zdgys=8 zxgbs=48

2.编程题2

一个素数,依次从低位去掉一位,二位,……,若所得的各数仍都是素数,则称超级素数。试求[100,9999]之内:(1)超级素数的个数 (2)所有超级素数之和(3)最大的超级素数。

输入输出示例

num=30, sum=75548, max=7393

3.编程题3

用递归方法求n阶勒让德多项式的值,递归公式为

1 (n=0)

Pn(x)= x (n=1)

((2n-1)x Pn-1(x)-(n-1) Pn-2(x))/n (n>1)

输入输出示例

第一次运行:

请输入n和x的值:0,7

P0(7)=1.00

第二次运行:

请输入n和x的值:1,2

P1(2)=2.00

第三次运行:

请输入n和x的值:3,4

P3(4)=154.00

4.改错题

改正下列程序中的错误。根据下式求π的值,直到某一项小于10-6(源程序error6_2.c)

输入输出示例

PI=3.14159 (改正后程序运行结果)

源程序(有错误的程序)

#include

int fact(int n);

int multi(int n);

main()

11

C语言程序设计

{int i;

double sum,item,eps;

eps=1E-6;

sum=1;

item=1;

for(i=1;item>=eps;i++)

{item=fact(i)/multi(2*i+1);

sum=sum+item;

}

printf(“PI=%0.5lfn”,sum*2);

return 0;

}

int fact(int n)

{int i;

int res=1;

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

res=res*i;

return res;

}

int multi(int n)

{int i;

int res=1;

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

res=res*i;

return res;

}

5.编程题4(选做)

满足下列条件的自然数称为超级素数:该数本身、所有数字之和、所有数字之积以及所有数字 的平方和都是素数。例如113就是一个超级素数。求[100,999]之内:(1)超级素数的个数。(2)所有超级素数之和(3)最大的超级素数。

输入输出示例

num=3 sum=555 max=311

6.编程题5(选做)

求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0,等于0和小于0时的根,并输出结果。从主函数输入a,b,c的值。

输入输出示例

Input a,b,c: 1,2,1

equation:1.00*x*x+2.00*x+1.00=0

root:x1=-1.00 x2=-1.00

12

2.7 数组

2.7.3 实验内容

1、已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

2、设计一个程序,从键盘输入指定个数的数据,按选择排序方法,将其按从小到大的顺序排列。(选择排序,首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。)

输入/输出实例:

输入:32 45 7 21 12

输出:7 12 21 32 45

3、青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

输入/输出实例:

输入:8.5 9 9.8 6.5 8.7 8.5 9.3 9.6 8.9 8.2

输出:8.8

4、有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

输入/输出实例:

输入:123,94,-10,218,3,9,10,-83,45,16,44,-99

输出:218 0 3

5、输入一串字符,计算其中字符、数字和空格的个数。

输入:sd234kj64jk mjk

输出:字符:9 数字:5 空格:1

6、有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。

输入:-12 -8 12 24 45 46 56 58 68 78

输入要查找的数据:58

输出:58的下标为7

输入要查找的数据:21

输出:”无此数”

13

C语言程序设计

2.8 数组和函数综合程序设计

2.8.3 实验内容

1、编一程序计算出两个矩阵A、B的和、差(设计一个函数同时计算两个矩阵的和与差)。

输入/输出实例

矩阵A:{{7,-5,3,3},{2,8,-6,4},{1,-4,-2,5}}

矩阵B:{{3,6,9,4},{2,-8,3,6},{5,-2,-7,9}}

输出实例:

A+B:{{10,1,12,7},{4,0,-3,10},{6,-6,-9,14}}

A- B:{{4,-11,-6,-1},{0,16,-9,-2},{-4,-2,5,-4}}

2、设计一个函数在若干个数据中查找指定数据。

输入/输出实例

(1)输入若干个数据:12 54 32 65 76 23 43

输入要查找的数据:56

输出实例:数据56 没有找到

(2)输入要查找的数据 65

输出实例:数据65 已找到。

3、设计一个选择排序函数,实现对数据的排序,然后设计一个函数实现对顺序数据的快速查找。

输入/输出实例

输入数据:23 54 65 12 87 43 25 21

输出排序后的数据:12 21 23 25 43 54 65 87

数据要查找的数据:43

输出:数据43已找到

输入要查找的数据:98

输出:数据98没有找到

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

5、打印以下图案:

*

* *

* * *

* * * *

* * * * *

main()

{

char a[5]={'*' , '*' , '*' , '*' , '*'};

int i,j,k;

char space=' ';

for(i=0;i<5;i++) /*输出5行*/

{

printf("n"); /* 输出每行前先换行*/

14

printf(" "); /* 每行前面留5个空格 */

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

printf("%c",space); /* 每行再留1个空格*/

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

printf("%c",a[k]); /*每行输入5个'*'号*/

}

}

、求矩阵上三角形元素之和。调试下列程序,并修改。

#define N 6

main()

{

int i,j,sum=0;

int a[N][N]={0};

printf("input 5×5 data:n");

for(i=1;i

{

printf("Input the %d line data:n",i);

for(j=1;j

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

}

for(i=1;i

{

for(j=1;j

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

printf("n");

}

for(i=1;i

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

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

printf("sum=%dn",sum);

}

6

15

C语言程序设计

2.9 指针

2.9.3 实验内容

1、编写一函数 int lenstr( char *str),测量从主函数中输入的字符串的长度。

2、编写一函数void verstring(char *str)将从键盘上输入的任意字符串逆序输出。

3、阅读程序并运行,每次输入8个数,观察运行结果,写出程序的功能。

#include

void main()

{

int a[100],t1,t2,max,min,*p,*q,i,n;

printf("nPlease input n ge shu: ");

scanf("%d",&n);

for(i=0;i

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

printf("n");

max=min=a[0];

for(i=0;i

{

if(a[i]>max)

{

max=a[i];p=&a[i];

} /*用指针标记最大值的下标*/

if(a[i]

{

min=a[i];q=&a[i];

} /*用指针标记最小值的下标*/

}

if( min==a[0]&& max==a[n-1])

{

t1=a[0]; a[0]=a[n-1]; a[n-1]=t1;

}

else if( max==a[0] && (min!=a[n-1]))

{

t2=a[n-1]; a[n-1]=min; *q=t2;

}

else if( min==a[n-1] && max!=a[0])

{

t1=a[0];a[0]=max;*p=t1;

}

else if( max!=a[0] && min!=a[n-1])

{

t1=a[0]; a[0]=max; *p=t1;

16

t2=a[n-1]; a[n-1]=min; *q=t2;

}

printf("n");

for(i=0;i

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

printf("n");

}

4、调试下列程序,并说明程序的功能

#include

int lenstr(char *str)

{ char *p=str;

while(*str!=‘0’)

str++;

return(str-p);

}

void main( )

{

char ss[80];

int len;

gets(ss);

len=lenstr(ss);

printf(“len=%dn”, len);

}

5、写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。

6、定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?

17

2024年2月18日发(作者:梁丘飞)

C语言上机实验

2.1 熟悉C语言程序开发环境

2.1.3 实验内容

1. 编程题1

编写程序实现在屏幕上显示以下文字。

思考:如何在屏幕显示数字、汉字等信息?

2. 编程题2

编程打印如下图案。

a

aa

aaa

aaaa

3.改错题

改正下列程序中的错误,在屏幕上显示商品价格表(源程序error1_2.c)。输入输出示例

商品名称 价格

TCL电视机 ¥7600

美的空调 ¥2000

SunRose键盘 ¥50.5

源程序(有错误的程序)

#include

mian()

{

printf("商品名称 价格n);

printf("TCL电视机 ¥7600")

printf("美的空调 ¥2000)

printf("SunRose键盘 ¥50.5)

}

4.编程题3

编程将下面的内容显示在屏幕的中间位置。

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

tell me why? tell me why?

tell me why? tell me why?

1

The dress is long.

The shoes are big.

The trousers are black.

C语言程序设计

just tell me why, why, why?

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

思考:最少可用几条printf()语句完成?

2

2.2 数据描述

2.2.3 实验内容

1.编程题1

已知a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。

输入输出示例

a/b的商=7

a/c的商=3

a%b的余数=10

a%c的余数=15

2.编程题2

已知a=160,b=46,c=18,d=170, 编写求输入输出示例

(a+b)/(b-c)*(c-d)=-1064.000000

3.编程题3

设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符)

输入输出示例

c=-10

4.编程题4

当n为24时,求出n的个位数字、十位数字的值。

输入输出示例

24的个位数字是4,十位数字是2

思考:如果n是三位数或四位数时,怎样求它的各位数字?

5.改错题

改正下列程序中的错误。假设i的初始值为1,j的初始值为2,求下列表达式的值(k)。

(1)i +=j

(2)i ――

(3)i * j / i

(4)i % ++j

输入输出示例

(1)i=3,j=2,k=3

(2)i=0,j=2,k=1

(3)i=1,j=2,k=2

(4)i=1,j=3,k=1

源程序(有错误的程序error2_2.c)

#include

3

(ab)(cd)的程序。

bc

C语言程序设计

main()

{

i=1; j=2;

k=(i+=j)

printf("(1) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i--;

printf("(2) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i*j/i;

printf("(3) i=%d,j=%d,k=%dn",i,j,k);

i=1; j=2;

k=i% ++j;

printf("(4) i=%d,j=%d,k=%dn",i,j,k);

}

4

2.3 顺序结构程序设计

2.3.3 实验内容

1.键盘输入与屏幕输出练习

源程序:

#include

main()

{

char a,b;

int c;

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

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

}

问题1 要使上面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。

A)1 2 34 B)1, 2, 34

C)’1’,’2’,34 D)12 34

问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?

问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?

问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?

[提示:利用转义字符输出字符单引号字符。]

问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为'1', '2',34,则程序应修改程序中的哪条语句?怎样修改?

第1种输入方式:1,2,34↙(以逗号作为分隔符)

第2种输入方式:1 2 34↙(以空格作为分隔符)

第3种输入方式:1 2 34↙(以Tab键作为分隔符)

第4种输入方式:1↙

2↙

34↙(以回车符作为分隔符)

2. 编程题1

从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。

输入输出示例

Enter a and b: 20 30

d:40

x:28

5

C语言程序设计

3.编程题2

从键盘输入两个实数a和x,按公式计算并输出y的值:

yasin(ax)ln(ax)e

输入输出示例

Enter a , x : 1.0,0.0

y=2.000000

4.改错题

改正下列程序中的错误。从键盘输入3个整数a、b、c,计算这3个整数的和s,并以“s=a+b+c”和“a+b+c=s”的形式输出a、b、c和s的值。请不要删除源程序中的注释。(源程序error3_2.c)

输入输出示例

3 4 5

12=3+4+5

3+4+5=12

源程序(有错误的程序)

#include

main()

{

int a,b,c,s;

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

s=a+b+c;

printf("%d=%d+%d+%dn",a,b,c); /*输出s=a+b+c*/

printf("%d+%d+%d=%dn",s); /*输出a+b+c=s*/

}

5.编程题3(选做)

已知a=2.5,b=9.4,c=4.3,编程求axbxc0的解x1和x2。

提示:可用求根公式x1 ,225axbb24ac

2a输入输出示例

x-1=-0.533003,x2=-3.226996

6.编程题4(选做)

从键盘输入3个变量的值,其中a=10,b=20,c=30,然后将3个变量交换,使得a=20,b=30,c=10。

输入输出示例

10 20 30

a=20 b=30 c=10

6

2.4.3 实验内容

2.4 选择结构程序设计

1.编程题1

输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。

1axlnf(x)2aax0输入输出示例

第一次运行

Enter a and x:5 6

a=5,f(6)=0.24

第二次运行

Enter a and x:5 5

a=5,f(5)=0.00

xaxa

2.编程题2

从键盘输入一个整数,若大于等于0,输出提示信息“is positive”,否则输出“is

negative”。

输入输出示例

第一次运行

Input a :5

5 is positive

第二次运行

Input a :0

0 is positive

第三次运行

Input a :-3

-3 is negative

3.编程题3

输入a、b、c三个整数,输出最大数。

输入输出示例

第一次运行

Enter a,b,c:1,5,9

the max number is:9

第二次运行

Enter a,b,c:9,5,1

the max number is:9

第三次运行

Enter a,b,c:1,9, 5

7

C语言程序设计

the max number is:9

4.改错题

改正下列程序中的错误,输入一个数n(不一定是整数),判定n是小于0,等于0,还是大于0。(源程序error4_2.c)

输入输出示例

第一次运行

Enter n:10

10 is greater than 0

第二次运行

Enter n:-5

-5 is less than 0

第三次运行

Enter n:0

0 is equal to 0

源程序(有错误的程序)

#include

main()

{

double n;

printf("Enter n:");

scanf("%f",&n);

if(n<0)

printf("n is less than 0n");

else if(n=0)

printf("n is equal to 0n");

else

printf("n is greater 0n");

}

模仿调试案例,单步调试程序,观察变量值的变化。

5.编程题4(选做)

一个工人的月工资按如下方法计算:在正常工作时间内每小时为5元,如果超出正常工作时间,则在超过的时间内每小时4元。其中,每月正常工作时间为160小时。编制一个程序,计算并输出一个工人的工资。其中月工作时间从键盘输入。

输入输出示例

第一次运行

input t:150

p=750

第二次运行

input t:200

p=960

第三次运行

input t:160

p=800

8

6.编程题5(选做)

编写一个程序,要求用户输入一个两位的整数,然后显示这个数的英文单词。

输入输出示例

第一次运行

Enter a two-digit number:35

You entered the number thirty-five

第二次运行

Enter a two-digit number:12

You entered the number twelve

提示:把数分解为两个数字。用一个switch语句显示第一位数字对应的单词(“twenty”、“thirty”等),用第二个switch语句显示第二位数字对应的单词。不要忘记11~19的数有特殊处理要求。

2.5 循环结构程序设计

2.5.3 实验内容

1.编程题1

编写程序:求1+2+3+…+100和12+22+33+…+1002。

输入输出示例

sum1=5050 sum2=338350

2.编程题2

一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2~5000中的所有完数。

输入输出示例

6 28 496

3.编程题3

编写程序:计算sinx的近似值,精确到10-6。其中x为弧度,由用户从键盘输入。

x3x5x7

sinxx3!5!7!输入输出示例

第一次运行:

请输入一个x值(弧度值):0

sin(0.00)=0.000000

第二次运行:

请输入一个x值(弧度值):1.57

sin(1.57)=1.000000

4.改错题

改正下列程序中的错误。(源程序error4_2.c)

韩信点兵。韩信有一队兵,他想知道有多少人,便让土兵排队报数。按从1至5报数,最末一个土兵报的数为1;按从1至6报数,最末一个土兵报的数为5;按从1至7报数,

9

C语言程序设计

最末一个土兵报的数为4;最后按从1至11报数,最末一个土兵报的数为10;你知道韩信有多少土兵吗?

输入输出示例

n=2111

源程序(有错误的程序)

#include

main()

{

int find=0;

while(!find)

{

if(n%5==1 && n%6==5 && n%7==4 && n%11==10)

{

printf("n=%dn", n);

find =1;

}

}

}

5.编程题4(选做)

编写一个程序,计算并输出能写成两个数平方之和的所有三位数的个数。

输入输出示例

num=274

6.编程题5(选做)

编写程序,用户从键盘输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。注意:n不得大于10。

输入输出示例

Enter n::5

A B C D E

F G H I

J K L

M N

O

10

2.6 函数和编译预处理

2.6.3 实验内容

1.编程题1

写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。

输入输出示例

输入:n1=24 n2=16

输出:zdgys=8 zxgbs=48

2.编程题2

一个素数,依次从低位去掉一位,二位,……,若所得的各数仍都是素数,则称超级素数。试求[100,9999]之内:(1)超级素数的个数 (2)所有超级素数之和(3)最大的超级素数。

输入输出示例

num=30, sum=75548, max=7393

3.编程题3

用递归方法求n阶勒让德多项式的值,递归公式为

1 (n=0)

Pn(x)= x (n=1)

((2n-1)x Pn-1(x)-(n-1) Pn-2(x))/n (n>1)

输入输出示例

第一次运行:

请输入n和x的值:0,7

P0(7)=1.00

第二次运行:

请输入n和x的值:1,2

P1(2)=2.00

第三次运行:

请输入n和x的值:3,4

P3(4)=154.00

4.改错题

改正下列程序中的错误。根据下式求π的值,直到某一项小于10-6(源程序error6_2.c)

输入输出示例

PI=3.14159 (改正后程序运行结果)

源程序(有错误的程序)

#include

int fact(int n);

int multi(int n);

main()

11

C语言程序设计

{int i;

double sum,item,eps;

eps=1E-6;

sum=1;

item=1;

for(i=1;item>=eps;i++)

{item=fact(i)/multi(2*i+1);

sum=sum+item;

}

printf(“PI=%0.5lfn”,sum*2);

return 0;

}

int fact(int n)

{int i;

int res=1;

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

res=res*i;

return res;

}

int multi(int n)

{int i;

int res=1;

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

res=res*i;

return res;

}

5.编程题4(选做)

满足下列条件的自然数称为超级素数:该数本身、所有数字之和、所有数字之积以及所有数字 的平方和都是素数。例如113就是一个超级素数。求[100,999]之内:(1)超级素数的个数。(2)所有超级素数之和(3)最大的超级素数。

输入输出示例

num=3 sum=555 max=311

6.编程题5(选做)

求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0,等于0和小于0时的根,并输出结果。从主函数输入a,b,c的值。

输入输出示例

Input a,b,c: 1,2,1

equation:1.00*x*x+2.00*x+1.00=0

root:x1=-1.00 x2=-1.00

12

2.7 数组

2.7.3 实验内容

1、已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

2、设计一个程序,从键盘输入指定个数的数据,按选择排序方法,将其按从小到大的顺序排列。(选择排序,首先找出值最小的数,然后把这个数与第一个数交换,这样值最小的数就放到了第一个位置;然后,在从剩下的数中找值最小的,把它和第二个数互换,使得第二小的数放在第二个位置上。以此类推,直到所有的值从小到大的顺序排列为止。)

输入/输出实例:

输入:32 45 7 21 12

输出:7 12 21 32 45

3、青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

输入/输出实例:

输入:8.5 9 9.8 6.5 8.7 8.5 9.3 9.6 8.9 8.2

输出:8.8

4、有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

输入/输出实例:

输入:123,94,-10,218,3,9,10,-83,45,16,44,-99

输出:218 0 3

5、输入一串字符,计算其中字符、数字和空格的个数。

输入:sd234kj64jk mjk

输出:字符:9 数字:5 空格:1

6、有15个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。

输入:-12 -8 12 24 45 46 56 58 68 78

输入要查找的数据:58

输出:58的下标为7

输入要查找的数据:21

输出:”无此数”

13

C语言程序设计

2.8 数组和函数综合程序设计

2.8.3 实验内容

1、编一程序计算出两个矩阵A、B的和、差(设计一个函数同时计算两个矩阵的和与差)。

输入/输出实例

矩阵A:{{7,-5,3,3},{2,8,-6,4},{1,-4,-2,5}}

矩阵B:{{3,6,9,4},{2,-8,3,6},{5,-2,-7,9}}

输出实例:

A+B:{{10,1,12,7},{4,0,-3,10},{6,-6,-9,14}}

A- B:{{4,-11,-6,-1},{0,16,-9,-2},{-4,-2,5,-4}}

2、设计一个函数在若干个数据中查找指定数据。

输入/输出实例

(1)输入若干个数据:12 54 32 65 76 23 43

输入要查找的数据:56

输出实例:数据56 没有找到

(2)输入要查找的数据 65

输出实例:数据65 已找到。

3、设计一个选择排序函数,实现对数据的排序,然后设计一个函数实现对顺序数据的快速查找。

输入/输出实例

输入数据:23 54 65 12 87 43 25 21

输出排序后的数据:12 21 23 25 43 54 65 87

数据要查找的数据:43

输出:数据43已找到

输入要查找的数据:98

输出:数据98没有找到

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

5、打印以下图案:

*

* *

* * *

* * * *

* * * * *

main()

{

char a[5]={'*' , '*' , '*' , '*' , '*'};

int i,j,k;

char space=' ';

for(i=0;i<5;i++) /*输出5行*/

{

printf("n"); /* 输出每行前先换行*/

14

printf(" "); /* 每行前面留5个空格 */

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

printf("%c",space); /* 每行再留1个空格*/

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

printf("%c",a[k]); /*每行输入5个'*'号*/

}

}

、求矩阵上三角形元素之和。调试下列程序,并修改。

#define N 6

main()

{

int i,j,sum=0;

int a[N][N]={0};

printf("input 5×5 data:n");

for(i=1;i

{

printf("Input the %d line data:n",i);

for(j=1;j

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

}

for(i=1;i

{

for(j=1;j

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

printf("n");

}

for(i=1;i

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

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

printf("sum=%dn",sum);

}

6

15

C语言程序设计

2.9 指针

2.9.3 实验内容

1、编写一函数 int lenstr( char *str),测量从主函数中输入的字符串的长度。

2、编写一函数void verstring(char *str)将从键盘上输入的任意字符串逆序输出。

3、阅读程序并运行,每次输入8个数,观察运行结果,写出程序的功能。

#include

void main()

{

int a[100],t1,t2,max,min,*p,*q,i,n;

printf("nPlease input n ge shu: ");

scanf("%d",&n);

for(i=0;i

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

printf("n");

max=min=a[0];

for(i=0;i

{

if(a[i]>max)

{

max=a[i];p=&a[i];

} /*用指针标记最大值的下标*/

if(a[i]

{

min=a[i];q=&a[i];

} /*用指针标记最小值的下标*/

}

if( min==a[0]&& max==a[n-1])

{

t1=a[0]; a[0]=a[n-1]; a[n-1]=t1;

}

else if( max==a[0] && (min!=a[n-1]))

{

t2=a[n-1]; a[n-1]=min; *q=t2;

}

else if( min==a[n-1] && max!=a[0])

{

t1=a[0];a[0]=max;*p=t1;

}

else if( max!=a[0] && min!=a[n-1])

{

t1=a[0]; a[0]=max; *p=t1;

16

t2=a[n-1]; a[n-1]=min; *q=t2;

}

printf("n");

for(i=0;i

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

printf("n");

}

4、调试下列程序,并说明程序的功能

#include

int lenstr(char *str)

{ char *p=str;

while(*str!=‘0’)

str++;

return(str-p);

}

void main( )

{

char ss[80];

int len;

gets(ss);

len=lenstr(ss);

printf(“len=%dn”, len);

}

5、写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。

6、定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?

17

发布评论

评论列表 (0)

  1. 暂无评论