当前位置:文档之家› C语言程序与设计 第5章_实验及习题答案

C语言程序与设计 第5章_实验及习题答案

C语言程序与设计 第5章_实验及习题答案
C语言程序与设计 第5章_实验及习题答案

第5章实验及习题答案

5.6 实验

实验任务1 一维数组程序设计

二、实验内容

1.验证性实验

(1)验证【例5-2】程序(输入10个整数,存入数组中,分别按原序、逆序输出),回答题后问题。

①运行程序时如何输入数据?请举例:1 2 3 4 5 6 7 8 9 10↙(也可用回车符间隔数据)。

②输入的10个数据分别存放在a[0]~ a[9] 中。

③若要计算10个整数的和,请写出此程序段并验证。

(2)验证【例5-4】程序(选择法排序),回答题后问题。

①语句“if ( w != i ) { t = a[i] ; a[i] = max ; a[w] = t ; }”

实现的操作是在第i趟排序中,如果找出的最大数a[w]不在最前面,则与a[i]交换,否则不交换。

②请将随机产生的数据改为从键盘输入。

③请修改程序实现从小到大排序。

2.设计性实验

(1)把一组数{ 3,4,6,7,1,8,9,13,2,5,11,14 }中的所有奇数找出,放在另一个数组中并输出,数据由初始化方式提供。

参考程序:

# include

main( )

{ int a[12] = { 3 , 4 , 6 , 7 , 1 , 8 , 9 , 13 , 2 , 5 , 11 , 14 } , b[12] , i , j , m ;

for( i = 0 ; i < 12 ; i++ ) /* 输出原始数据*/

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

printf( " \n " ) ;

m = 0 ;

for( i = 0 ; i < 12 ; i++ ) /* 找奇数*/

if( a[i]%2==1 ) { b[m] = a[i] ; m++ ; }

for( j = 0 ; j < m ; j++ ) /* 输出奇数*/

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

}

(2)利用随机数函数产生20个三位数,将这20个数从小到大排列并输出。

参照【例5-4】P127页选择法排序程序,只需做下列修改:

?将N 的值改为20

?将语句:a[i] = rand ( ) % 100 ; 改为:a[i] = rand ( ) % 900+100 ;

也可参照【例5-4】和【例5-5】写出用冒泡法排序的程序。

(3)已知一个有序数列{ 3,5,6,8,11,14,19,23,25,35,41 },要求从键盘

输入一个任意数,将其插入到合适位置仍使数列有序,输出插入前、后的数列。

参照【例5-7】,参考程序如下:

# include

# define N 11

main( )

{ int i , b[N+1] = { 3 , 5 , 6 , 8 , 11 , 14 , 19 , 23 , 25 , 35 , 41 } , x ;

printf(" the source order is : \n" ) ;

for( i = 0 ; i < N ; i++ ) /* 输出插入前的数列*/

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

printf("\n" ) ;

printf(" Please input insert data : " ) ; /* 提示信息*/

scanf("%d" , &x ) ; /* 输入插入的数据*/

for( i = N-1 ; i >=0 ; i-- ) /* 后移数据*/

if ( x < b[i] ) b[i+1 ]= b[i] ;

else break;

b[i+1] = x ; /* 插入数据*/

printf( " the result is : \n ") ;

for( i = 0 ; i < N+1 ; i++ ) /* 输出插入后的数列*/

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

}

(4)输入一个十进制数,将其转换成八进制数后输出结果。

参照【例5-8】只需将程序中的2 改为8即可,也可用别的方法实现。

实验任务2 二维数组程序设计

二、实验内容

1.验证性实验

(1)验证【例5-10】程序(二维数组求最小值及所在的位置),回答题后问题。

①“printf( "\n" ) ; ”语句的作用是按行输出或输出换行。

②不给min赋初值或给min 赋初值为0,程序的运行结果会是什么?(有时会出现错误结果)

③输出时为什么要用row +1 , col +1?(因为在数组中,行、列是从0数起的)

(2)验证【例5-13】程序(杨辉三角形),回答题后问题。

①语句“y[m][0] = 1 ; y[m][m] = 1 ; ”实现的操作是给第1列和对角线上的元素赋值为1 。

②语句“if ( n == 0 || n == m ) y[m][n] = 1 ; ”实现的操作是作用同①。

③语句“y[m][n] = y[m-1][n-1] + y[m-1][n] ; ”实现的操作是给第1列和对角线上之外的元素赋值。

2.设计性实验

(1)设有二维数组如下:{ { 1 , 11, 19 , 9 , 12 } , { 2 , 5 , 20 , 1 , 18 } , { 3 , 4 , 16 , 6 , 10 } , { 4 , 15 , 2 , 17 , 3 } , { 5 , 14 , 7 , 13 , 8 } ,请按行(第2~5行)、按列(第2~5列)求和及总和,然后以二维表形式输出数据及求和结果,数据由初始化方式提供。

参照【例5-11】,参考程序如下:

# include

main( )

{int a[5+1][5+1] = { { 1 , 11, 19 , 9 , 12 } , { 2 , 5 , 20 , 1 , 18 } , { 3 , 4 , 16 , 6 , 10 } ,

{ 4 , 15 , 2 , 17 , 3 } , { 5 , 14 , 7 , 13 , 8 }} , i , j , sum ;

for( i = 1 ; i <= 4 ; i++ ) /* 按行求和*/

{ sum = 0 ;

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

sum += a[i][j];

a[i][5] = sum;

}

for( j = 1 ; j <= 5 ; j++ ) /* 按列求和及总和*/

{ sum = 0 ;

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

sum += a[i][j];

a[5][j] = sum;

}

/*——————————————输出结果—————————————*/

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

{ printf( " \n " ) ;

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

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

}

}

(2)对一个m×n的矩阵,分别求两个对角线上的所有元素之和,然后输出这个矩阵及计算结果。矩阵的数据由键盘输入。

参考程序:

# include

# define M 5

# define N 5

main( )

{ int a[M][N] , i , j , sum1=0 , sum2=0 ;

printf(" 请输入M行N列的矩阵: \n " ) ;

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

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

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

}

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

{ sum1 += a[i][i] ; sum2 += a[i][M-1-i] ;

}

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

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

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

printf( " \n" ) ;

}

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

}

(3)对一个m×n的矩阵,交换指定的两列元素。交换的两列列号由用户从键盘指定。输出交换前后的矩阵。矩阵的数据由初始化方式提供。

参考程序:

# include

# define M 3

# define N 5

main( )

{ int a[M][N] ={ { 1 , 11, 19 , 15 , 2} , { 2 , 5 , 20 , 14 , 7} , { 3 , 4 , 16, 4 , 5 } },

i , j , m1 , m2 , t ;

printf("输出M行N列的矩阵: \n " ) ;

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

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

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

printf( " \n" ) ;

}

printf("请输入要交换的两列列号: " ) ;

scanf( "%d,%d" , &m1 , &m2 ) ;

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

{ t = a[i][m1-1] ; a[i][m1-1] = a[i][m2-1] ; a[i][m2-1] = t ;

}

printf( " 输出交换列后的矩阵\n" ) ;

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

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

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

printf( " \n" ) ;

}

}

实验任务3 字符串及数组综合程序设计

二、实验内容

1.验证性实验

(1)验证【例5-17】程序(输出一个字符串),回答题后问题。

①输入字符串使用语句:scanf( "%s" , s3 ) ;。

②输出字符串使用语句:printf( " %s " , s3 ) ;。

③数组名s3代表数组s3的首地址。

(2)验证【例5-21】程序(输入/输出多个字符串),回答题后问题。

①输入字符串使用语句:gets( city[i] ) ; 。

②输出字符串使用语句:prints( " %s \t " , city[i] ) ;。

③city[i]代表二维数组city每行的首地址。

2.设计性实验

(1)从键盘输入自己的QQ号和密码,进行保存,并将密码加密(加密规则自定),然后将QQ号和加密后的密码输出。

设加密规则为:按密码字母顺序依次加1,2,3……

参考程序:

# include

# include

# define M 10 /* M代表字符串的最大长度*/

main( )

{ char user[M] , pass1[M] , pass2[M] ;

int i ;

printf( "请输入用户名:" ) ;

gets( user ) ;

printf( "请输入用户名密码:" ) ;

gets( pass1) ;

for( i = 0 ; i

pass2[i] = pass1[i] + i+1 ;

pass2[i]= '\0' ;

puts( user ) ;

puts( pass1 ) ; puts( pass2 ) ;

}

(2)删除一个字符串中的所有空格字符,使非空格字符连续存放。(算法提示1:借

助一个数组存放非空格字符。算法提示2:借助两个变量,在本字符串中进行删除、移动)算法1参考程序:

# include

# include

# define M 40 /* M代表字符串的最大长度*/

main( )

{ char s1[M] , s2[M] ;

int i , n = 0 ;

printf( "请输入带空格的字符串:" ) ;

gets( s1 ) ;

for( i = 0 ; i

if ( s1[i] != ' ' ) { s2[n] = s1[i] ; n++ ; }

s2[n]= '\0' ;

puts( s1 ) ;

puts( s2 ) ;

}

(3)期末班级成绩处理。设有学生5人,每人5科成绩,统计每个学生的总分、不及格课程门数,并按总分排名次,按下面格式输出排名后的成绩单。数据由初始化方式提供。

学号姓名科目1 科目2 科目3 科目4 科目5 总分名次不及格门数实现的程序可参考(P164~165)

习题 5

一、选择题

1.以下关于数组描述正确的是(C)。

A.数组的大小是固定的,但可以有不同类型的数组元素。

B.数组的大小是可变的,但所有数组元素的类型必须相同。

C.数组的大小是固定的,所有数组元素的类型必须相同。

D.数组的大小是可变的,可以有不同类型的数组元素。

2.以下不能正确定义一维数组的选项是(D)。

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

C.int a[5] ; D.int n = 5 , a[n ] ;

3.设有“int i , a[10] ; 且0< i < 10”,不能正确引用a数组元素的是(A)。

A.a[10] B.a[i] C.a[2] D.a[10-i]

4.设有语句“int a[10] = { 1 , 2 , 3 , 4 } , i = 0 ; ”,则a[i + 1]的值为(B)。

A.1 B.2 C.3 D.4 5.若有“int a[ 8 ] = { 1 , 3 , 5 , 7 , 9 , 11 } ; ”,则a数组中的元素个数是(D)。

A.不确定B.6 C.7 D.8 6.若有“int a[10] = { 0 , 1 , 2 , 3 , 4 , 5 } ; ”,则对a数组元素的引用范围是(D)。

A.a[10] B.a[1] ~ a[10] C.0 ~ 5 D.a[0] ~ a[9] 7.设有语句“int a[10] = { 1 , 3 , 5 , 7 , 9 , 11 } ; ”,则a[1]的值为(C)。

A.1 B.2 C.3 D.4 8.设有“int a[6] = { 1 , 2 , 3 , 4 } , i ; ”,不能正确输出a中所有元素值的语句是(A)。

A.B.

C .

D .

9.设有“int a[ ][2] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } ; ”,则值为3的数组元素是( C )。 A .a[1][3] B .a[2][1] C .a[1][0] D .a[3][1] 10.以下数组定义有错误的语句是( B )。

A .int x[ ][3] = { 0 } ;

B .int x[2][3] = { { l , 2 } , { 3 , 4 } , { 5 , 6 } } ;

C .int x[ ][3] = { { l , 2 , 3 } , { 4 , 5 , 6 } } ;

D .int x[2][3] = { l , 2 , 3 , 4 , 5 , 6 } ;

11.若有“int x[ ][2] = { 1 , 3 , 5 , 7 , 9 , 11 , 13 } ; ”,则x 数组的行数为( C )。

A .2

B .3

C .4

D .无确定值 12.设有“int x[3][4] = { { 1 } , { 2 } , { 3 } } ; ”,那么元素x[1][1]的取值是( A )。

A .0

B .1

C .2

D .不确定 13.执行下面程序后的输出结果是( D )。

main( )

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

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

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

}

A .9 8 7

B .3 5 7

C .9 6 3

D .9 5 1 14.以下不能正确初始化字符数组的选项是( D )。

A .char str[10] = "abcdef" ;

B .char str[ ] = {" abcdef " } ;

C .char str[10] = "abc\0def " ;

D .char str[ ] = { abcdef } ; 15.设有“char str[ ] = "ABCDE" ; ”,则能够正确输出str 中字符串的语句是( C )。

A .printf( " %c " , str[0] ) ;

B .printf( " %s " , str[0] ) ;

C .printf( " %s " , str ) ;

D .printf( " %s " , &str ) ; 16.有两个字符数组x 、y ,则能够正确对x 、y 进行输入的语句是( B )。

A .gets( x , y )

B .scanf( " %s %s " , x , y ) ;

C .scanf( " %s %s " , &x , &y ) ;

D .gets( " x " ) ; gets( " y " ) ; 17.下面程序运行后的输出结果是( C )。(注:请此题中p 、q 改为s1、s2)

main( )

{ char s1[ ] = { 'a' , 'b' , 'c' } , s2[ ] = "abc" ;

printf( " %d %d \n " , sizeof ( s 1 ) , sizeof ( s2 ) ) ; }

A .4 4

B .3 3

C .3 4

D .4 3 18.判断字符串a 和b 是否相等,应当使用( D )。 A .if ( a == b ) B .if ( a = b ) C .if ( strcpy ( a , b ) ) D .if ( strcmp ( a , b ) ) 19.以下程序的输出结果是( A )。

main( ) for ( i = 1; i < 6 ; i++)

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

for ( i = 0 ; i < 6 ; i++) printf(" %3d " , a[i] ) ;

for ( i = 1; i < 6 ; i++) printf(" %d " , a[i-1] ) ; for ( i = 0 ; i <= 5 ; ) printf(" %3d " , a[i++] ) ;

{ char str[20] = "hello\0OK" ;

printf( " %d , %s " , strlen ( str ) , str ) ;

}

A.5 , hello B.9 , hello C.5 , helloOK D.7 , helloOK 10 20.设有“char s1[20]= "abc", s2[20] = "123" ; ”,能将s2连接到s1后面的语句是(D)。

A.strcmp ( s1 , s2 ) ; B.strcpy ( s1 , s2 ) ;

C.s1 = s1 + s2 ; D.strcat ( s1 , s2 ) ;

二、阅读下面程序,写出运行结果,并回答题后问题

1.下面程序的输出结果为s = 25 。程序实现的功能是:求x数组中第1,3,5,7,9个整数的和。

main( )

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

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

s += x[i] ;

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

}

2.下面程序的输出结果为4 , 3 , 2 , 1 ,。程序实现的功能是:逆序输出x数组中的内容

main( )

{ int x[4] = { 1 , 2 , 3 , 4 } , i ;

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

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

}

3.下面程序的输出结果为 4 2 4 。程序实现的功能是:统计a数组中各种元素值的个数,即统计1的个数,2的个数,3的个数.

main( )

{ int a[10] = { 1 , 2 , 3 , 2 , 3 , 1 , 3 , 1 , 3 , 1 } ,n[4] = { 0 } , i ;

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

n[a[i]]++;

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

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

}

4.下面程序的输出结果为 4 8 2 。程序实现的功能是:输出二维数组中每行第4列的元素。(注:此题初始化时多了数字,请去掉最后的3,4)

main( )

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

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

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

}

5.下面程序的输出结果为21 。程序实现的功能是:求a数组第1列和第1行的累加和。

main( )

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

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

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

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

}

①输出整个字符串使用语句printf( " %s " , str ) ; 。

②输出字符串中的一个字符,使用语句:printf( "%c" , str[2] ) ; 。

7.下面程序的输出结果为12+34 , abcdef

abcdef , 12+34。

main( )

{ char sa[ ] = "12+34" , sb[ ] = "abcdef " , sc[10];

printf(" %s , %s \n" , sa , sb ) ;

strcpy( sc , sa ) ; strcpy( sa , sb ) ; strcpy( sb , sc ) ;

printf(" %s , %s \n" , sa , sb ) ;

}

①初始化时数组sa中存放的是字符串12+34\0 ,sb中存放的是字符串abcdef\0 。

②程序实现的功能是交换两个字符串,即 sa 和sb 中的内容。

三、程序设计题

1.随机产生并输出20个100以内不重复的整数。

参考程序:

# include "stdio.h"

# include"stdlib.h" /* 函数rand( )的头文件*/

# include"time.h" /* 函数time( )的头文件*/

# define N 20

main( )

{ int a[N] , i , j , x ;

srand( ( unsigned )time ( NULL ) ) ; /* 随机数种子数*/

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

{ do

{ x = rand ( ) % 100 ;

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

if ( x == a[j] ) break ;

if ( j>=i ) { a[i] = x ; break ; }

} while(1) ;

}

for( i = 0 ; i <= N-1 ; i++ ) /* 输出*/

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

printf( " \n" ) ;

}

2.把一个一维组数中{ 3 ,4 , 6 , 7 , 1 , 8 , 9 , 13 , 2 , 5 , 11 , 14 }的所有偶数剔除,保留奇数并连续存放在本数组中,输出剔除前、后组数内容,数据由初始化方式提供。

参考程序:

# include "stdio.h"

main( )

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

for( i = 0 ; i < 12 ; i++ ) /* 输出剔除前的数组*/

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

printf( " \n" ) ;

k =0 ;

for( i = 0 ; i < 12 ; i++ ) /* 剔除偶数*/

if ( a[i]%2==1 ) { a[k]=a[i] ; k++ ; }

for( i = 0 ; i < k ; i++ ) /* 输出剔除后的数组*/

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

}

3.随机产生20个100以内的整数,从键盘输入一个要查找的数据,若找到,输出整个数列,并输出查找到的位置(可能有多个);若没有找到,也输出整个数列,并给出一个未找到的信息。

参考程序:

# include "stdio.h"

# include"stdlib.h" /* 函数rand( )的头文件*/

# include"time.h" /* 函数time( )的头文件*/

main( )

{ int a[20] , i , x , F = 0 ;

srand( ( unsigned )time ( NULL ) ) ;

for( i = 0 ; i <20 ; i ++ ) /*产生20个数*/

a[i] = rand ( ) % 100 ;

printf( "请输入一个要找的数:" ) ;

scanf("%d" , &x ) ;

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

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

printf( " \n找到的位置是:" ) ;

for( i = 0 ; i <20 ; i ++ ) /*找数据*/

if ( a[i] ==x ) { printf("%d , " , i+1 ) ; F = 1 ; }

if ( F == 0 ) printf(" \n查无此数!\n") ;

}

4.随机产生100个整数,找出其中的素数,统计出素数的个数,每行输出10个素数。

参考程序:

# include "stdio.h"

# include"stdlib.h" /* 函数rand( )的头文件*/

# include"time.h" /* 函数time( )的头文件*/

# include"math.h" /* 函数time( )的头文件*/

# define N 100

main( )

{ int a[N] ,b[N]= { 0 } , i , j , m= 0 , F ;

srand( ( unsigned )time ( NULL ) ) ;

for( i = 0 ; i

a[i] = rand ( ) % 200 ;

for( i = 0 ; i

{ if ( ( i )%20==0 ) printf( " \n" ) ;

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

}

printf( " \n" ) ;

for( i = 0 ; i

{ F = 1 ;

for( j = 2 ; j <= sqrt(a[i] ) ; j ++ )

if ( a[i]%j==0 ) { F = 0 ; break ; }

if ( F == 1 ) { b[m] = a[i] ; m++ ; }

}

printf( "素数的个数是:%d , 素数是:\n" , m ) ;

for( i = 0 ; i

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

if ( (i+1)%10 == 0 ) printf( " \n" ) ;

}

}

5.在一个4×5的方阵中,找出每列中的最小元素及其所在位置。

参考程序:

# include

main( )

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

int i , j , row , col , min ;

for( i = 0 ; i < 4 ; i++ ) /* 输出数组*/

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

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

printf( "\n" ) ;

}

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

{ min = a[0][j] ; row = 0 ; col = j ;

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

if ( min > a[i][j] ) { min = a[i][j] ; row = i ; col =j ; }

printf( "第%d列的最小数是:%d , 位于第%d行\n" , col +1 , min , row +1 ) ;

}

}

6.通过随机函数生成一个n×n矩阵,每个元素均为10~30之间的整数,求其每行元素的平均值,然后按行、列方式输出这个矩阵及每行的平均值。

参考程序:

# include "stdio.h"

# include"stdlib.h" /* 函数rand( )的头文件*/

# include"time.h" /* 函数time( )的头文件*/

# define N 4

main( )

{int a[N][N] , i , j , sum ;

float ave[N] ;

srand( ( unsigned )time ( NULL ) ) ;

for( i = 0 ; i

for( j = 0 ; j

a[i] [j] = rand ( ) % 20 + 10 ;

for( i = 0 ; i

{ sum = 0 ;

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

sum += a[i][j];

ave[i] = (float )sum/N ;

}

/*——————————————输出结果—————————————*/

for( i = 0 ; i

{ printf( " \n " ) ;

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

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

printf( "\t %.2f " , ave[i] ) ;

}

}

7.从键盘输入一个字符串,求其长度和其中包含的数字字符的个数。

参考程序:

#define N 50

main( )

{ char str[N] ;

int n1 = 0 , n2 = 0 , i ;

printf("请输入一个字符串:") ;

gets( str ) ;

n1 = strlen( str ) ;

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

if ( str[ i] >=’0’ && str[ i] <=’9’) n2++ ;

printf("字符串的长度是%d , 数字字符的个数是%d \n" , n1 , n2 ) ;

}

8.从键盘输入一串数字字符,统计每种数字字符的个数,统计结果用数组存放。即用下标为0的元素统计并存放字符'0'的个数,用下标为1的元素统计并存放字符'1'的个数……

参考程序:

#define N 20

main( )

{ char str[N] ;

int n[10] = { 0 } , i ;

printf("请输入一个数字字符串:") ;

gets( str ) ;

for ( i = 0 ; i < strlen( str ) ; i++ )

n[str[ i] -48]++ ;

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

printf("字符%c的个数是%d\n" , i + 48 , n[i] ) ;

}

9.验证设定的用户名和密码(均不超过10个字符)。允许验证3次,若输入的用户名和密码正确,显示“登录成功”,3次都不正确,显示“登录失败”。

实现的程序可参考P161的程序(三、任务的实现)

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

C语言程序设计实验-答案

-前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include main() { int r,s; scanf("%d",&r); s=r*r; printf("s=%d\n",s); } 3.-------------------------------- (1) #include main() { printf(" *\n"); printf("***\n"); printf(" *\n"); } (2) #include

{ int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); }

(完整版)C语言程序设计选择题库及答案

单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题, 应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodb start$it line# pow ??? aBc 3pai His.age while

【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

C语言程序设计习题大全(附答案)

C语言基础一: 1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x <<02>>B>>2 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case ).Default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值D) T 9若有以下定义 char s='\092'; 则该语句( B ) A)使s的值包含一个字符B)定义不合法,s的值不确定 C)使s的值包含4个字符D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值D)C 12逻辑运算符两侧运算对象的数据类型是( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。

C语言程序设计实验报告.doc

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch 语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图

Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数 */ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算 */ { n=sushu(i); /* 做判断素数的函数调用 */ ( 励志天下 ) if(n!=0)/* 对素数的处理 */ { a[j]=n;/* 把素数由大至小存入数组a[ ]中 */ j++; if(j<11) m+=n; /* 统计前10个素数之和 */ } } if(j<10)/* 当素数个数小于10个时,结果输出 */

C语言程序设计题库及答案

第1次客观题作业 一、单选题(共30题,每题3分) 1 .下面表示正确的是__A___。 A.C语言中的逗号是一种运算符 B.在C语言中,一行只能有一个语句 C.C中的变量不区分大小写 D.c中的关键字可以做为变量名 2 .字符型常量在内存中存放的是__A____代码值。 A.ASCII B.二进制 C.十进制D.八进制 3 .以下不正确的C语言标识符是(C )。 A.AB1 B._ab3 C.4ab D.a2_b 4 .以下运算符中优先级最低的运算符是_D____。 A.&& B.& C.|| D.= 5 .在C语言中,要求运算数必须是整型的运算符是___A___。A.% B./ C.< D.! 6 . C语言程序的基本单位是__C_____。 A.程序行B.语句C.函数D.字符 7 .将高级语言编写的程序翻译成目标程序的是___B____程序。A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。 A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1 9 .下列(A )不属于结构化程序设计的循环结构。 A.For B.While C.if-else D.do-while

10 .以下叙述中错误的是__A___。 A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意 C.用户所定义的标识符必须以字母或下划线开头 D.用户定义的标识符中,大、小写字母代表不同标识 11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。 A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,7 12 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。 for (i=3;i>0;i--) for (j=0;j<=4;j++){...} A.12 B.15 C.16 D.20 13 .下列选项中,合法的C语言关键字是_D___。 A.VAR B.Cher C.Integer D.default 14 .C语言中___A____。 A.能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值小于零时结束循环15 .以下__D_____不是高级语言。 A.Basic语言 B.C语言 C.JAVA语言 D.汇编语言 16 .已知int x=2,y=3;则计算表达式y+=x-=x*=y后,x和y分别为(B )。 A.6,5 B.0,3 C.0,5 D.-4,2

C语言程序设计题库

一、选择题(每题1分,共20分) 1.C语言程序从main()函数开始执行,所以这个函数要写在(D )。 A.程序文件的开始B.程序文件的最后 C.它所调用的函数的前面D.程序文件的任何位置 2.下列方法中错误的是(D )。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 3.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 4.C语言中的简单数据类型包括(D )。 A.整型、实型、逻辑型B.整型、实型、逻辑型、字符型 C.整型、字符型、逻辑型D.整型、实型、字符型 5.下列可以正确表示字符型常量的是(A )。 A.’\t’B.”a”C.”\n”D.297 6.在C语言中,字符型数据所占的内存空间是(C )。 A.2个字节B.4字节C.1字节D.由用户自定义 7.若int类型数据占2个字节,则unsigned int类型数据的取值范围是(B )。 A.0~255 B.0~65535 C.-32768~32767 D.-256~255 8.若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为(D )。 A.float B.char C.int D.double 9.下列正确的预编译命令是(D )。 A.define PI 3.14159 B.#define P(a,b)=strcpy(a,b) C.#define stdio.h D.#define PI 3.14159 10.为表示逻辑表达式7979 )&&( X<90 ) B.( X>79 )!=( X<90 ) C.7979 )||( X<90 )

C语言程序设计实验报告——实验2 数据类型、运算符和表达式

凯里学院 C 语言程序设计 实验报告 ××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日 实验二 数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用step by step 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } (2)按习题3. 7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre" 。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } 装订线 装订线

相关主题
文本预览
相关文档 最新文档