文档库 最新最全的文档下载
当前位置:文档库 › C语言练习试题[带详解答案解析]

C语言练习试题[带详解答案解析]

一单项选择题

1.(A)是构成C语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

2.C语言程序从 C开始执行。

A) 程序中第一条可执行语句 B) 程序中第一个函数

C) 程序中的main函数 D) 包含文件中的第一个函数

3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义

C、C语言程序总是从main( )函数开始执行

D、C语言程序中的main( )函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是(B)。

A) C程序的工作过程是编辑、编译、连接、运行

B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环

D) C程序从main函数开始执行

5.下列正确的标识符是(C)。

A.-a1

B.a[i]

C.a2_i

D.int t

5~8题为相同类型题

考点:标识符的命名规则

(1)只能由字母、数字、下划线构成

(2)数字不能作为标识符的开头

(3)关键字不能作为标识符

选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是( B)。

A)3ax B)x C)case D)-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是(C)。

A) %x B) a+b C) a123 D) 123

选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBc

B、I\am one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while 为关键字,不满足(3)

9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型

B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型

D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是C。

A)2.5 B)2 C)1 D)3

详见教材P52~53.

%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2

11.如果int a=3,b=4;则条件表达式"a

A) 3 B) 4 C) 0 D) 1

详见教材P97.

表达式1?表达式2:表达式3

先计算表达式1,

若表达式1成立,则选择计算表达式2,并表达式2的值作为整个大表达式的值;

若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值

此题中的a

a为3,b为4。a

12.若int x=2,y=3,z=4 则表达式x

A)4 B)3 C)2 D)0 E)1

13.C语言中,关系表达式和逻辑表达式的值是(B)。

A) 0 B) 0或1 C) 1 D) ‘T’或’F’

14. 下面( D )表达式的值为4.

A) 11/3 B) 11.0/3

C) (float)11/3 D) (int)(11.0/3+0.5)

14~16题为同一类型

详见教材P54~56.

(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.

选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0 /3=3.666666

选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到 3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为4

15.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A.b=1.0/a

B.b=(float)(1/a)

C.b=1/(float)a

D.b=1/(a*1.0)

16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

A.1

B.4

C.4.333333

D.4.6

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1

17. 以下对一维数组a的正确说明是:D

A)char a(10);B) int a[];

C)int k=5,a[k];D)char a[3]={‘a’,’b’,’c’};

详见教材P143~144,一维数组的定义、初始化

类型符数组名 [常量表达式]

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

选项A,常量表达式只能放在中括号 [ ]中

选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是: ( C )

A. int a[5]=(0,1,2,3,4,)

B. int a(5)={}

C. int a[3]={0,1,2}

D. int a{5}={10*1}

详见教材P145,一维数组的定义、初始化

选项B,D,常量表达式只能放在中括号 [ ]中

选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().

19.在C语言中对一维整型数组的正确定义为D。

A)int a(10); B)int n=10,a[n];

C)int n;a[n]; D)#define N 10

int a[N];

20、已知:int a[10]; 则对a数组元素的正确引用是( D )。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

详见教材P144,数组元素的引用

数组名[下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元素; ......;a[9] 表示组中第10个元素.

选项A,超过了数组a的逻辑地址下标范围;

选项B,逻辑地址下标只能为整数

选项C,逻辑地址下标只能放在[ ]中

21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。

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

A.10

B.9

C.6

D.5

先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].

a[10]对应下面数组中的元素为9. 因此a[a[i]]即为a[9]

a[9]对应下面数组中的元素为6. 因此a[9]即为6

22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B )

A. 2

B. 3

C. 4

D.无确定值

5 7 D) 3

6 9

二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

23.对二维数组的正确定义是(C)

详见教材P149~152,二维数组的定义、初始化

类型符数组名 [常量表达式][常量表达式]

二维数组可以看做是矩阵

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度

二维数组初始化时可以省略行数,但不能省略列数

选项A,B,都省略了列数

选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

A.int a[ ] [ ]={1,2,3,4,5,6};

B.int a[2] [ ]={1,2,3,4,5,6};

C.int a[ ] [3]={1,2,3,4,5,6};

D.int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];则对数组元素引用正确的是__C___

A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)

详见教材P150,数组元素的引用

数组名[下标] [下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7

因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

选项A,列逻辑地址下标超过范围

选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由A决定的.

A)函数定义时指定的类型 B) return语句中的表达式类型

C) 调用该函数时的实参的数据类型 D) 形参的数据类型

26. 在C语言中,函数的数据类型是指( A )

A 函数返回值的数据类型 B. 函数形参的数据类型

C 调用该函数时的实参的数据类型 D.任意指定的数据类型

27. 在函数调用时,以下说法正确的是(B)

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里

28. 在C语言中,表示静态存储类别的关键字是: ( C)

A) auto B) register C) static D) extern

29.未指定存储类别的变量,其隐含的存储类别为(A)。

A)auto B)static C)extern D)register

30. 若有以下说明语句:

struct student

{ int num;

char name[ ];

float score;

}stu;

则下面的叙述不正确的是: ( D )

A. struct是结构体类型的关键字

B. struct student 是用户定义的结构体类型

C. num, score都是结构体成员名

D. stu是用户定义的结构体类型名

31.若有以下说明语句:

struct date

{ int year;

int month;

int day;

}brithday;

则下面的叙述不正确的是__C___.

A) struct是声明结构体类型时用的关键字

B) struct date 是用户定义的结构体类型名

C) brithday是用户定义的结构体类型名

D) year,day 都是结构体成员名

32. 以下对结构变量stul中成员age的非法引用是B

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A) stu1.age B) student.age C) p->age D) (*p).age

33.设有如下定义:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是C

A) p=&a; B) p=data.a;C) p=&data.a; D)*p=data.a;

34.设有以下说明语句:

typedef struct stu

{ int a;

float b;

} stutype;

则下面叙述中错误的是(D)。

A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

41. 在C语言中,以D作为字符串结束标志

A)’\n’ B)’ ’ C) ’0’ D)’\0’

42.下列数据中属于“字符串常量”的是(A)。

A.“a”

B.{A BC}

C.‘abc\0’

D.‘a’

若干个字符构成字符串

在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’’标识字符串

选项D,标识字符。

43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是

B .

A)相同B)x大于y C)x小于y D)以上答案都不对

C语言中,字符串后面需要一个结束标志位'\0',通常系统会自动添加。

对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集合的形式(例如本题数组y)。在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5

4.编程计算1+3+5…+99的值

main()

{ int i, sum = 0;

i=1;

while ( i<100 )

{ sum = sum + i;

I=i+2 ; }

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

}

5.从键盘输入一个字符,判断它是否是英文字母。

#include

void main()

{char c;

printf("input a character:");

c=getchar();

if(c>=‘A’ &&c<=‘Z’ || c>=‘a’ &&c<= ‘z’) printf("Yes\n"); else printf("No");

}

6. 下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。

#include

void main()

{ int a[10],i,x;

printf(“input 10 integers:”);

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

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

printf(“input the number you want to find x:”);

scanf(“%d”, &x );

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

if( x==a[i] )

break;

if( i<10 )

printf(“the pos of x is:%d\n”,i);

else printf(“can not find x!\n”);

}

7.程序读入20个整数,统计非负数个数,并计算非负数之和。

#include

main( )

{ int i, a[20], s, count;

s=count=0;

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

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

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

{ if( a[i]<0 ) continue ;

s+=a[i] ;

count++;

}

printf(“s=%d\t count=%d\n”, s, count”);

}

8. 输入一个正整数n (1

#include

int main(void){

int i, index, k, n, temp;

/* 定义1个数组a,它有10个整型元素*/ printf(“Enter n: ");

printf(“Enter %d integers: ", n);

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

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

for(k = 0; k < n-1; k++){ /* 对n个数排序 */

index = k;

for( )

if( ) index = i;

}

printf("After sorted: ");

for(i = 0; i < n; i++) /* 输出n个数组元素的值 */

return 0;}

一、程序改错

一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。1.求1?2?3?4? ?n

main()

{ long int sum; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值。一般赋值0或者循环初值。

int n,i=1;

scanf("%d",n); //若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面

欲赋值的变量的类型一致,此题%d与n的类型int一致(详见p69-78);(2)变量的前面要有地

址符号&

printf(“\n”);

while(i

终值为n-1, 由于且i初值为1,因此一共能够循环n-1次。比要求少了1次,因此应改为i<=n 或

者i

{ sum=sum*i; // 若不为sum赋初值,则此处无法计算sum*i。

i++;

}

printf("sum=%d",sum); //若printf语句有错误,常见考点有1个:格式声明符号要与

后面欲输出的变量的类型一致,此题%d与sum的类型long int不一致,应改为%ld(详见p69-78);

}

sum应初始化即加入sum=1

第四行改为:scanf(“%d”,&n);

第六行改为:while(i<=n)或者 while(i

第十行改为:printf("sum=%ld",sum);

2.求一个数组中最大值及其下标。

main( )

{ int max,j,m;

int a[5];

for(j=1;j<=5;j++) // j=1为循环变量j赋初值为1,同时用j作为数字元素的逻辑

地址下标。因此输出的时候只能从a[1]开始输出,无法输出a[0].因此应将j赋初值0,相应的

循环条件改为j<5或者j<=4用于控制循环执行5次

scanf(“%d”,a);//若scanf语句有错误,常见考点有两个:(1)格式声明符号要与

后面欲赋值的变量的类型一致,此题%d与a的类型int一致(详见p69-78);(2)变量的前面要

有地址符号&

max=a[0];

for(j=1;j<=5;j++) //修改思路与上一个for语句同

if(ma 下标存

m

里 }

第四行改为:for(j=0;j<5;j++)

第五行改为:scanf(“%d”,&a[j]);

第七行改为:for(j=1;j<5;j++)

第八行改为:if(max

第十三行改为:printf(“下标:%d\n最大值:%d”, m,max)

3.用一个函数求两个数之和。

sum(x,y) //函数定义的一般形式p173-174

{ float z;

z=x+y;

return; //return语句后面可以返回0、常量、变量和表达式的值。

}

main()

{ float a,b;

int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值。一般赋值0或者循环初值。

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

c=sum(a,b);

printf("\nSum is %f",sum);

}

第一行改为:float sum(float x, float y );

第四行改为:return(z);或者return z;

第八行:float c;

第十一行:printf("\nSum is %f",c);

4.程序读入20个整数,统计非负数个数,并计算非负数之和.

#include “stdio.h”

main()

{

int i, s , count ,n=20;

int a[n]; //数组定义的一般形式,详见p143, 其中的常量表达式不能为变量

s=count=1;

for( i=1, i<20, i- -) // for语句的格式,三个表达式之间用分号,且分号不可省略scanf(“%d”, a[i] );//若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面欲赋值的变量的类型一致,此题%d与n的类型int一致(详见p69-78);(2)变量的前面要有地址符号&

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

{

if(a[i]<0) break; // break 与continue 的区别 p128. 在改错题中若错误出现在break 语句,则

通常是将break 换为continue ;反之,若错误出现在continue ,通常是将其换为break

s +=a[i];

count++;

}

printf(“s=%f count=%f \n”, s, count); //若printf 语句有错误,常见考点有1个:格式

声明符号要与后面欲输出的变量的类型一致

}

答案:int a[20]

s=count=0;

for(i=0;i<20;i--)

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

continue;

printf(“s=%d count=%d \n”,s,count);

5. 从键盘输入整数x 的值,并输出y 的值.

main() { float x,y;

scanf(“%d”,&x);

y=3.5+x;

printf(“y=%d”);

}

正确的: int x; float y;

printf(“y=%f”,y);

6 编程计算下面分段函数, 输入x, 输出y

??

???>-≤≤-<-=101131001201x x x x x x y

main()

{ int x,y;

printf(“\n Input x:\n”);

scanf(“%d”, x); // 错误同上题scanf

if(x<0)

y=x-1;

else if(x>=0||x<=10) // ||表示逻辑或,当左边表达式成立或者右边表达式成立时,

整个表达式成立。 &&表示逻辑与,当左边表达式和右边表达式同时成立时,整个表达式成立。

此处用逻辑表达式来表示x 的区间[0,10], 因此应改用逻辑与符号 y=2x-1; // C 语言中乘号不能省略,且用*表示乘法运算

else

y=3x-1; // C语言中乘号不能省略,且用*表示乘法运算

printf(“y=%d”,&y); //printf与scanf不用,printf后面给出的是变量名列表或表达式列表,无需地址符号

}

第一处改为:scanf(“%d”,& x);

第二处改为:x>=0&&x<=10

第三处改为:y=2*x-1;

第四处改为:y=3*x-1;

第五处改为:printf(“y=%d”,y);

7. 求100~300间能被3整除的数的和。

main()

{ int n;

long sum; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值, 一般赋值0或者循环初值。

for(n=100,n<=300,n++) // for语句的格式,三个表达式之间用分号,且分号不可省略 {

if(n%3=0) // = 是赋值符号,用于将右边的值赋给左边的变量;== 是关系符号,用来判断两个值是否相等。改错中if后面表达式中的赋值符号是常见的考点。

sum=sum*n;

}

printf(“%ld ”,sum);

}

第一处改为:long sum=0;

第二处改为:for(n=100;n<=300;n++)

第三处改为:if(n%3==0)

第四处改为:sum=sum+n;

c 的值

8. 求表达式ab

#include

#include

int fun(int x, int y);

main()

{ int a,b; float f;

scanf(“%d,%d”,a,b);//与改错第1题中的scanf错误相同

if(ab>0){ // C语言中乘号不能省略,且用*表示乘法运算

fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里

printf("The result is:%d\n", &f) //与第6题中printf错误相同}

else printf(“error!”);}

fun(x, y) // 定义函数的一般形式p173-174

{ float result;

result = sqrt(a+b);

return; //return语句后面可以返回0、常量、变量和表达式的值。

}

第一处改为:if(a*b>0)

第二处改为:f= fun(a,b);

第三处改为:printf("The result is:%d\n",f);

第四处改为:float fun(int x, int y)

第五处改为:f= fun(a,b);

第六处改为:result = sqrt(a*b);

第七处改为:return result;

二、编程题

1.输入2个整数,求两数的平方和并输出。

#include

int main(void)

{ intt a ,b,s;

printf("please input a,b:\n");

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

s=a*a+b*b;

printf("the result is %d\n",s);

return 0;

}

2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。

#include

#define PI 3.14

int main(void)

{ double r ,area , girth;

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

scanf("%lf",&r);

if (r>=0)

{ area =PI*r*r;

girth =2*PI*r ;

printf("the area is %.2f\n", area);

printf("the girth is %.2f\n", girth);}

else

printf("Input error!\n");

return 0;

}

3、已知函数y=f(x),编程实现输入一个x 值,输出y 值。 2x+1 (x<0)

y= 0 (x=0)

2x-1 (x>0)

#include

void main()

{ int x,y;

scanf(“%d”,&x);

if(x<0) y=2*x+1;

else if(x>0) y=2*x-1;

else y=0;

printf(“%d”,y);

}

4.从键盘上输入一个百分制成绩score ,按下列原则输出其等级:score≥90,等级为A ;80≤score<90,等级为B ;70≤score<80,等级为C ;60≤score<70,等级为D ;score<60,等

级为E 。

#include

void main(){

int data;

char grade;

printf("Please enter the score:");

scanf("%d”, &da ta);

switch(data/10)

{ 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 grade is %c”,grade);

}

5. 编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:

?????≥-≤=小时

小时小时元每小时元

每小时元费用505010105.2330

要求当输入每月上网小时数,显示该月总的上网费用(6分)

#include

void main()

{ int hour;

float fee;

printf(“please input hour:\n”);

scanf(“%d”,&hour);

if(hour<=10)

fee=30;

else if(hour>=10&&hour<=50)

fee=3*hour;

else fee=hour*2.5;

printf(“The total fee is %f”,fee);

}

6. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。

#include

void main( ) {

int a, i,p=0,n=0,z=0;

printf("please input number");

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

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

if (a>0) p++;

else if (a<0) n++;

else z++;

}

printf("正数:%5d, 负数:%5d,零:%5d\n",p,n,z);

}

7、编程序实现求1-10之间的所有数的乘积并输出。

#include

void main( )

{ int i;

long sum=1;

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

sum=sum*i;

printf(“the sum of odd is :%ld”,sum);

}

8. 从键盘上输入10个数,求其平均值。

#include

void main(){

int a,i,sum=0;

float ave;;

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

scanf("%d",&a);

sum+=a;

}

ave=(float)sum/10;

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

}

9、编程序实现求1-1000之间的所有奇数的和并输出。

#include

void main( )

{ int i, sum=0;

for(i=1; i<1000; i=i+2)

sum=sum+i;

printf(“the sum of odd is :%d”,sum);

}

10.有一个分数序列:2/1,3/2,5/3,8/5,13/8,……编程求这个序列的前20项之和。

#include

void main(){

int i,t,n=20;

float a=2,b=1,s=0;

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

{s=s+a/b;

t=a;

a=a+b;

b=t;

}

printf("sum=%6.2f",s);

}

11.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)#include

float max(float x,float y);

void main()

{ float a,b,m;

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

m=max(a,b);

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

}

float max(float x,float y)

{

if (x>=y)

return x;

else

return y;

}

12. 编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。

#include

#include

int IsPrimeNumber(int number)

{ int i;

if (number <= 1)

return 0;

for (i=2; i

{ if ((number % i) == 0)

return 0; }

return 1;}

void main()

{ int n;

printf(“Please input n:”);

scanf(“%d”,&n);

if(IsPrimeNumber(n))

printf(“\n%d is a Prime Number”,n);

else printf(“\n%d is not a Prime Number”,n);}

14. 用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。

#include

void main()

{ int a[5], s=0;

int i;

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

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

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

s=s+a[i];

printf(“result=%f”,s/5.0);

}

15、输入一个正整数n(n<=6),再输入n×n的矩阵,求其主对角线元素之和及副对角线元素之和

并输出。

#include

int main(void) {

int i,j,n,sum1=0,sum2=0;

int a[6][6];

printf("Enter n(n<=6):");

scanf("%d",&n);

printf("Enter data:\n");

for(i=0;i

for(j=0;j

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

if(i==j)

sum1+=a[i][j];

if(i+j==n-1)

sum2+=a[i][j];

}

printf("sum1=%d,sum2=%d",sum1,sum2);

return 0;

}

16、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。

(提示:用数组存放成绩数据)

#include

#define M 30

void main ( )

{ float score[M], max , min, aver;

int i ;

printf(“please input score: \n”);

for(i=0; i

scanf(“%f”, &score[i]);

max=score[0];

min=score[0];

aver=score[0];

for(i=1; i

{ if (max < score[i]) max= score[i];

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

aver+=score[i];

}

printf(“max=%f, min=%f,aver=%f”, max, min, aver/M);

}

17.将一个有5个元素的数组中的值(整数)按逆序重新存放。

例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8

#define N 5

#include

void main()

{int a[N],i,temp;

printf(“enter array a:\n”);

for(i=0;i

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

for(i=0;i

{ temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(“\n Now, array a:\n”);

for(i=0;i

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

printf(“\n”);

}

18.从键盘上输入一个2*3的矩阵,将其转秩后形成3*2的矩阵输出。

#include

void main()

{int a[2][3], b[3][2],i,j;

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

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

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

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

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

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

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

{for(j=0;j<2;j++)

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

printf("\n”);

}

}

19、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存放成绩数据)

#include

void main()

{ int a[10];

int i,j,temp;

printf("input score:\n");

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

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

printf("\n");

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

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

if(a[j]

{temp=a[j];

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

a[j+1]=temp;

相关文档
相关文档 最新文档