C语言各章习题集(3)

2025-08-15

main ( ) { int i,k;

for (k=0,i=5; i<=1000; i+=5)

{ m = i ; while ( ) { k++; m=m/5 ; } } }

k?15. 下面程序按公式k?1main ( ) {

; int k ;

for (k=1 ; k<=100 ; k++) s+=k ; for (k=1 ; k<=50 ; k++) s+=k*k ;

for (k=1 ; k<=10 ; k++) s+= ; printf(“sum= ”,s); }

?k??k??2100501k?1k求和并输出结果。

10六. 编程题

1. 输出100~2000间的全部素数。

2. 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。

3. 求n?1(即求1!+2!+3!+?+19!+20!)。 4. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。 5. 在屏幕上打印SIN函数曲线。

?n!20第 7 章

一. 选择题

数组

1. 以下对一维整型数组a的正确说明是( )。

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

C. int n; D. #define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n];

2. 若有定义:int a[10],则对数组a元素的正确引用是( )。

A. a[10] B.a[3.5] C.a(5) D.a[10-10] 3. 以下能对一维数组a进行正确初始化的语句是( )。

A.int a[10]={0,0,0,0,0}; B.int a[10]={} ;

C.int a[2 ] = {0,1,2} ; D.int a[10]={10*1} ;

4. 若有定义:int a[3][4],则对数组a元素的正确引用是( )。

A. a[2][4] B.a[1,3] C.a(5) D.a[10-10] 5. 以下能对二维数组a进行正确初始化的语句是( )。

A.int a[2][]={{1,0,1},{5,2,3}} ; B.int a[][3]={{1,2,3},{4,5,6}} ; C.int a[2][4]={{1,2,3},{4,5},{6}} ; D.int a[][3]={{1,0,1},{},{1,1}} ; 6. 以下不能对二维数组a进行正确初始化的语句是( )。

A.int a[2][3]={0} ; B.int a[][3]={{1,2},{0}} ; C.int a[2][3]={{1,2},{3,4},{5,6}} ; D.int a[][3]={1,2,3,4,5,6} ; 7. 下面程序段的输出结果是( )。

char c[ ]=”\\t\\v\\\\\\0will\\n”; printf(“%d”,strlen(c));

A.14 B.3 C.9 D.6 8. 判断字符串a和b是否相等,应当使用( )。

A.if (a==b) B.if (a=b)

C.if (strcpy(a,b)) D) if (strcmp(a,b)) 9. 下面有关字符数组的描述中错误的是( )。

A.字符数组可以存放字符串 B.字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 10. 下面程序的输出结果是( )。

main ( )

{ char ch[7]=”12ab56”; int i,s=0;

for (i=0; ch[i]>?0?&&ch[i]<=?9?; i+=2) s=10*s+ch[i]-?0?; printf(“%d\\n”,s); }

A.1 B.1256 C.12ab56

D.ab

二. 填空题

1. 2. 3. 4. 5. 6. 7.

设int a[3][4] = {{2},{3}}; 若数组a的起始地址为2000,则a+1的地址值是__________。 设int i = 5; 则循环语句while (i > = 1) i - -; 执行后,i的值为___________。 设int a[2][3] = {{2},{3}}; 则数组元素_______________的值为3。 在C语言中,二维数组的元素在内存中的存放顺序是 。 字符串”ab\\n\\\\012\\\\”的长度是 。

C语言数组的下标总是从 开始,不可以为负数;构成数组各个元素具有相同的 。 字符串是以 为结束标志的一维字符数组。有定义:char a[]=\则a数组的长度是 。

8. 如果在程序中调用了strcat函数,则需要预处理命令 。如果调用了gets函数,则需

要预处理命令 。

三. 程序阅读题

1.

main ( )

{ int a[6][6],i,j ; for (i=1; i<6 ; i++)

for (j=1 ; j<6 ; j++) a[i][j]=(i/j)*(j/i) ; for (i=1;i<6 ; i++) {

for (j=1 ; j<6 ; j++) printf(“-”,a[i][j]) ; printf(“\\n”); } } 2.

# define N 7 main()

{ int i,j,temp,a[N]={1,2,3,4,5,6,7}; for ( i = 0; i

j = N - 1 – i; temp = a[i]; a[i]=a[j]; a[j]=temp; }

for(i = 0; i

main ( ) { int i,c;

char s[2][5]={“8980”,”9198”}; for (i=3; i>=0 ; i--) {

c=s[0][i]+s[1][i]-2*?0?; s[0][j] = c % 10 + ?\\0? ; }

for (i=0; i<=1; i++) puts(s[i]); }

四. 程序判断题

1. 下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 main ( )

{ int a[3]={1,2,3} , i; scanf(“%d%d%d”,&a);

for (i=0; i<3; i++) printf(“%d”,a[i]); }

2. 下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。 main ( )

{ int a[100], i, j, p, t, n=20 ;

for (j = 0; j

for ( i=j+1; ia[i]) t=i; if (p!=j)

{ t = a[j]; a[j] = a[p]; a[p]=t; } }

for ( j = 0; j

3. 下面程序的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaas

lkaaas,子字符串为as,则应输出2;判断下面程序的正误,如果错误请改正过来。 main ( )

{ char substr[80],str[80]; int i,j,k,num=0;

gets(substr); gets(str); for (i = 0, str[i], i++)

for (j=i,k=0;substr[k]==str[j];k++,j++) if (substr[k+1]!=?\\0?) { num++; break; }

printf(“num=%d”, num); }

五. 程序填空题

1. 下面程序将十进制整数base转换成n进制,请填空使程序完整。

main ( )

{ int i,base,n,j,num[20] ;

scanf(“%d”,&n); scanf(“%d”,base) ; do {

i++; num[i]= ; n= ; } while (n!=0);

for ( ) printf(“%d”,num[j]) ; }

2. 下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后

的10个数,请填空使程序完整。 main ( )

{ int a[10],max,min,i,j,k ;

for (i=0; i<10; i++) scanf(“%d”,&a[i]); max=min=a[0];

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

if (a[i]max) {max=a[i]; ; } }

;

for (i=0; i<10; i++) printf(“%d”,a[i]); }

3. 下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字

符串中第一次出现的位置(下标值),否则输出-1。 # include main ( )

{ char c=?a? ; /* 需要查找的字符*/ char t[50] ; int i,j,k;

gets(t) ; i = ; for (k=0; k

if ( ) { j = k ; break ;} else j=-1; printf(“%d”,j); }

4. 以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填空使程序完整。

main ( )

{ int a[2][3]={2,10,9,4,5,119}, b[2][2]={-1,-2,-3,-4}; int i,j,k,s,c[3][2]; for (i=0; i<3; i++)

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

for (k=0; k<2; k++) s+= ; c[i][j]=s; }

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

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

printf(“m”,c[i][j]); ; } }

5. 以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填空使程序完整。

main ( )

{ char a[40]=”Great ”, b[ ]=”Wall”; int i=0,j=0 ;

while (a[i]!=?\\0?) i++ ;

while ( ) { a[i]=b[j] ; i++ ; j++ ; } ; printf(“%s\\n”,a); }

六. 编程题

1. 2. 3. 4.

用选择法对10个整数排序。

对三人的四门课程分别按人和科目求平均成绩,并输出包括平均成绩的二维成绩表。

将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。 5. 打印出杨辉三角形(要求打印出10行)。

6. 对三人的四门课程分别按人和科目求平均成绩,并输出包括平均成绩的二维成绩表。 7. 编写程序(不能使用string.h中的系统函数) (1) 求一个字符串S1的长度;

(2) 比较两个字符串S1和S2,如果S1>S2,输出一个正数;如果S1=S2,输出0;如果S1

出一个负数;输出的正,负数值为两个字符串相应位置字符ASCII码值的差值,当两个字符串完全一样时,则认为S1=S2。

第 8 章

一. 选择题

函数

1. 在函数内,定义变量时存储类型可省略的是( )。

A. auto B. static C. extern D. register 2. 以下正确的函数定义是( )。

A.double fun(int x , int y) B.double fun(int x ; int y) C.double fun(int x , int y) ; B.double fun(int x,y)

3. C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是( )。

A.地址传递 B.值传递 C.有实参传给形参,再由形参传给实参 D.由用户指定传递方式 4. C语言规定,函数返回值的类型是由( )决定的。

A.return语句中的表达式类型 B.调用该函数时的主调函数类型 C.调用该函数时由系统临时 D.在定义函数时所指定的函数类型 5. 若用数组名作为函数调用的实参,传递给形参的是( )。

A.数组的首地址 B.数组中第一个元素的值 C.数组中的全部元素的值 D.数组元素的个数 6. 以下不正确的说法是( )。

A. 在不同函数中可以使用相同名字的变量 B. 形式参数是局部变量

C. 在函数内定义的变量只在本函数范围内有定义

D. 在函数内的复合语句中定义的变量在本函数范围内有定义 7. 以下不正确的说法是( )。

A. 形参的存储单元是动态分配的 B. 函数中的局部变量都是动态存储 C. 全局变量都是静态存储

D. 动态分配的变量的存储空间在函数结束调用后就被释放了 8. 下面程序的输出是( )。 int i=2 ;

printf(“%d %d %d”,i*=2,++i,i++) ;

A. 8 4 2 B.8 4 3 C.4 4 5 D.4 5 6 9. 以下不正确的说法是( )。

A. 全局变量,静态变量的初值是在编译时指定的 B. 静态变量如果没有指定初值,则其初值为0 C. 局部变量如果没有指定初值,则其初值不确定

D. 函数中的静态变量在函数每次调用时,都会重新设置初值

10. 某文件中定义的静态全局变量(或称静态外部变量)其作用域是( )。

A.只限某个函数 B.本文件 C.跨文件 D.不限制作用域

二. 填空题

1. 在一个函数内部调用另一个函数的调用方式称为 。在一个函数内部直接或间接调用该函数成为函数 的调用方式。

2. C语言变量按其作用域分为 和 。按其生存期分为

和 。

3. C语言中有四种存储类别分别是:____________________________。

4. 如果在定义局部变量时省略了存储类别符,则默认的类型是________________。

5. 在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定

义的存储类别为 。

三. 判断题

1. 在函数中,只能有一条return语句。


C语言各章习题集(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第十章 地基岩体稳定性分析

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219