高升专课程复习资料-计算机应用技术-程序设计基础-C语言习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章概述
作业:
练习:教材P5:题、题〔2〕、〔3〕
第二章基本的程序语句
作业:
一、填空题至
二、选择题2.23
三、编程题
要求:所有编程题须上机调试通过,源程序及运行结果用作业本上交。

源程序要求按缩格形式书写,文字端正整齐。

不合格者退回重做。

编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字〔每个数字之间用三个空格分开〕。

例如用户输入了42339,屏幕输出结果为:
4 2 3 3 9
【提示】巧妙使用/ 和% 两种运算符。

第一部分大作业:
〔一〕填空
1. C程序都是从函数开始执行。

2. C程序的语句都是用结束。

3. 用来在屏幕上显示信息的库函数是。

4. 用来从键盘读取数据的库函数是。

5. C程序中用来提高程序的可读性。

6. 假设x和n均是int型变量,且x和n的初值均为5,则计算表达式:
x+=n++后,x的值为,n的值为。

7. 假设有定义:int b=7; float a=2.5,c=4.7;则以下表达式的值为。

a+(int)(b/3*(int)(a+c)/2)%4
8. 假设a是int型变量,且a=6,则计算表达式a+=a-=a*a后,a的值为。

9. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值
为。

10. 判断char型变量c1是否为小写字母的正确表达式是。

A) 'a'<=c1<='z' B) (c1>=a)&&(c1<=z)
C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')
11.以下程序的运行结果是。

main()
{ int a=3, b=2, c=1, k=4;
printf("%d\n", k<a? k:c<b?c:a); }
A) 4 B) 3 C) 2 D) 1
12.已知字符'A'的ASCII码值是65,且char c1='A', c2='D'; 则执行语句
printf("%d,%d\n", c1, c2-2); 后的输出结果是。

A) A,D B) A,B C) 65,68 D) 65,66
语言程序是由组成的。

A) 子程序B) 过程C) 函数D) 主程序和子程序
14.不正确的字符串常量是。

A) 'abc' B) "12'12" C) "0" D) " "
15.以下不正确的语句为。

A) if((a=b;)>0) t=a; B) if((a=b)>0) t=a;
C) if(a>b); D) if(a<b) {a++; b++}
16.在C语言中,不同类型数据混合运算,要先转换成同一类型后再进行运算。

设一表达式中包含int、long、insigned、char类型的变量和数据,则表达式最后的运算结果是( 〕类型数据。

A〕int B〕long C〕insigned D〕char 17.以下选项中非法的表达式是( )
A〕0<=x&&x<100 B〕i=j = =0 C〕(char)(65+3) D〕x+1=x+1 18.执行语句x=〔a=3, b=a--〕;之后,a,b,x的值依次为〔〕
A〕3,2,3 B〕2,2,3 C〕2,3,3 D〕3,2,2
19.以下程序运行后的输出结果是〔〕。

main〔〕
{char m;
m=′B′+32; printf〔″%c\n″,m〕;}
A〕B〕C〕 b D〕
20.能正确表示a和b同时为正或同时为负的逻辑表达式是( )
A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)
C) (a+b>0)&&(a+b<=0) D) a*b>0
〔二〕、计算题
1、设整型变量x为5,y为2。

以下表达式的值各为多少?
1〕!〔y = = x / 2 〕 2 ) y ! = x % 3
3 ) x > 0 && y < 0
4 ) x ! = y | | x > = y
2、设单精度型变量f、g均为5.0 , 执行以下表达式后,f的值为多少?
1〕f + = g 2 ) f - = g + 5
3) f* = g – 15 4 ) f / = g * 10
3、执行表达式x = ( a = 3 , b = a - - ) 后,x , a , b 的值各为多少?
4、设实型变量f1、f2、f3、f4的值均为2.0,整型变量m1、m2的值均为
表达式〔m1 = = f1 > = f2 〕&& ( m2 = = f3 < f4 ) 的值是多少?
5、设单精度型变量f的值为,执行表达式“n = ( ( int ) f ) % 3 ”后,n的值是多少?
6、设i、j初值分别为3和4,则执行 j+=i-=1;后i,j的值为多少?
7、请给出以下程序的输出结果。

main()
{
int a=-1, b=4, k;
k=!((++a<0)&&!(b--<=0));
printf("%d%d%d\n", k, a, b);
}
8、请给出下面程序的输出结果。

# include “stdio.h”
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
9、请给出下面程序的输出结果。

#include <stdio.h>
main()
{int m,n,x,y,z;

n=(int)a+(int)b;
m=(x=a+b,n+10);
y=x*=2+3;
z=y--;
printf("%d %d %d %d %d\n",m,n,x,y,z);
}
10、有程序
int b=6,d=5;
(++d==b-- )?d++ :b - -
执行后b,d的值是多少?
第三章程序的简单算法制定
作业(教材p34):
一、填空题
二、选择题
三、编程题:
1 输入三角形三边, 求三角形面积。

2 输入一个大写字母,要求变成小写字母输出。

写出算法,画出相应的流程图、N-S图
第四章分支结构
作业:
一、填空题4.1~题
二、选择题4.12~题
三、编程题、、
补充编程题〔用支结构语句编程〕
1、从键盘输入三角形的三边长,判断出这三边能否构成三角形
2、从键盘上输入数字星期,在屏幕上显示英文星期。

第五章循环结构
作业:
一、填空题、、、、、
二、选择题、、、
三、编程题、
补充1、分别统计输入的字符串中字母、数字和其它字符的个数。

第六章函数
作业:
一、选择题、、、、、
二、判断题-
三、填空题-
四、阅读程序、写出程序运行结果
五、程序填空
六、编程题、题、题
补充编程题:
1、写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。

2、函数,由实参传来一个字符串,统计该字符串中的字母、数字、空格和其它字符的
个数,在主函数中输入字符串以及输出上述结果。

第二部分大作业:
一、单项选择题
1、在C语言中,不正确的实型常量是。

A〕B〕-.123 C〕-1.23e-1 D〕-0.123
2、在C语言中,正确的字符常量是。

A〕’字’ B〕’\x41’C〕”A” D〕”ABC”
3、假设变量已正确定义并赋值,下面符合C语言语法的表达式是
A) a:=b+1 B) a=b=c+2
C) int 18.5%3 D) a=a+7=c+b
4、结构化程序设计所规定的三种基本控制结构是_____________.
A) 输入、处理、输出B) 树形、网形、环形
C) 顺序、选择、循环D) 主程序、子程序、函数
5、循环语句的循环体中执行continue语句,其作用是。

A〕立即终止程序执行B) 继续执行continue语句之后的循环体各语句
C) 结束本次循环D) 跳出循环
6、假设定义int i; 则以下循环语句的循环执行次数是。

for(i=2; i==0;) printf("%d", i--);
A) 无限次B) 0次C) 1次D) 2次
7、假设有定义int t=0; 则语句while (1) if (t++==100) break; 的循环次数是__ _。

A〕0 B〕1 C〕100D〕无限次
8、以下程序的运行结果是。

#include <stdio.h>
main()
{ double t;
printf("%3.1lf\n",(t=1,t+5,++t));
}
A〕7.0 B〕6.0 C〕D〕
9、假设有以下程序段,
I nt c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是___________。

A) 0 B) 0.5 C) 1 D) 2
10、以下程序的运行结果是。

main()
{ int num=13579,c;
do { printf(“%d”, num%10);
} while((num/=10)>0);
printf(“\n”);
}
A〕13579 B〕7531 C〕3579 D) 97531
11、以下程序运行结果是。

main()
{ int x=1,y=2,z;
z=x>y?++x:++y;
printf("%d,%d,%d\n",x,y,z);
}_
A) 1,2,3 B) 1,3,3 C) 2,3,3 D) 2,2,3
12、假设定义float a;现要从键盘输入a的数据,其整数位为3位,
小数位为2位,则选用。

A〕scanf(“%f”,&a); B) scanf(“%”,a);
C) scanf(“%”,&a); D) scanf(“%f”,a);
13、设有説明语句:inta=2,b=7,c=5;则执行以下语句后,输出为____________。

switch (a>0)
{ case 1: switch (b<0)
{ case 0: printf ("@"); break;
case 1: printf ("!"); break; }
Case 0: switch (c==5)
{ case 0: printf ("*"); break;
case 1: printf ("#"); break;
default: printf ("$"); break; }
default: printf ("&");
}
A) @#& B) #& C) *& D) $&
14、下用户自定义函数中,存在的语法错误是。

sign(int)
{
if(a==0) return 0;
else if 〔a>0) return 1;
else return –1;
}
A〕没有指出返回值类型B〕函数名是C语言的关键字
C〕形参变量没有定义D〕函数体中多次出现了return语句15、以下程序运行结果是。

#define N 3
#define M N+1
#define NUM (M+1)*M/3
main( )
{ int i,n=0;
for(i=0;i<NUM;i++) n++;
printf("%d\n",n);
}
A〕7 B〕8 C〕15D) 6
二、改错题
1、老师要求学生编写一个程序,功能是:当x等于2且-10≤y≤10时,输出”z=1”,暂停后,结
束程序运行,否则输出”z=0”。

x和y值由键盘输入。

现有某学生编写程序如下,有诸多错误和不当之处,请你代替老师为他修改程序。

void main()
{ int x,y,z;
scanf("x=%d,%3.2d",x,y);
printf("请输入x,y值:");
if (x=2&&-10≤y≤10)
printf(“z=1”);
getche();
else printf(“z=0”);
return;
}
2、以下程序用于计算n=50时sum=1+1/2+1/4+...+1/n的值,并显示出来。

要求n从键盘输入。

请找出程序中的各处错误,并改正之。

#include <stdio.h>
main()
{ int i,sum,n;
n=50;
while(1)
{ if (n%2) ; break; }
For (i=1;i<=n; i+=2) sum+=1/n;
}
三、程序分析题
1、设以程序段中的变量都是int类型,则输出的结果是。

sum=pad=5; pAd=sum++,pAd++,++pAd;
printf(“%d\n”,pad);
2、以下程序的运行结果是。

main()
{ int a,b,c;
a=b=c=1;
if (a++||++b) c++;
printf("%d,%d,%d\n",a,b,c);
}
3、以下程序的运行结果是。

main()
{ int c;
while ((c=getchar())!='\n')
{ switch (c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default:putchar(c+2);break;
}
}
printf("\n");
}
输入:742<回车>,程序的输出结果是。

4、以下程序的输出结果是。

#include "stdio.h"
#define SUM(y) 2+y
main()
{ int x=5;
printf("%d\n",SUM(3)*x%5);
}
5、以下程序的输出结果是。

func(int a)
{ static int m=0;
m+=a*2;
return m;
}
main()
{ int k=6,p;
p=func(k); printf("%d,",p);
p=func(k); printf("%d\n",p);
}
四、请编程序求解问题:
有假设干只鸡和兔在同一个笼子里,从上面数,有三十五个头;从下面数,有九十四只脚。

求笼中各有几只鸡和兔?〔20分〕
第七章多维数组
书面作业〔教材p161〕
一、选择题-
二、判断题-
三、填空题-
四、阅读程序、
五、程序填空题
六、编程题、、
提交作业:编程
1.已有一个已按从小到大排好序的整型数组,今输入一个整数,要求按原来排序的规律将
它插入数组中。

2.将一个数组中的值按逆序重新存放。

例如,原来顺序为8,6,5,4,1;要求改为1,4,
5,6,8 。

3.求以下两个矩阵之和〔即对应元素之和〕。

1 2 3 4 1 3 5 7
5 6 7 8 9 11 13 15
9 10 11 12 17 19 21 23
4.打印出以下的杨辉三角形〔要求打印10行〕。

1
1 1
1 2 1
1 3 3 1
1 4 6 3 1
1 5 10 10 5 1
… … … … … … …
第八章指针
书面作业:
一、选择题题
二、判断题题
三、填空题、题、题、题、题
四、阅读程序题、题
五、程序填空题、题
六、编程题、题
补充编程题:
1. 编一个程序,输入15个整数存入一维数组,再按逆序重新存放后再输出。

2. 输入一个一维实型数组,输出其中的最大值、最小值和平均值。

3. 输入一个3×6的二维整型数组,输出其中最大值、最小值及其所在的行列下标。

九章构造数据类型
作业:
一、选择题-题
二、判断题-题
三、填空题-题
四、阅读程序题、题
五、程序填空题
六、编程题
补充编程题:
3. 用结构体存放下表中的数据,然后输出每人的和实发数〔基本工资+ 浮开工资–支出〕。

基本工资浮开工资支出
Zhao
qian
sun
9. 编一个程序,输入10个职工的标号、、基本工资、职务工资,求出其中“基本工资+职务
工资”最少的职工并输出。

10. 编一个程序,输出10个学生的学号、、3门课程的成绩,求出总分最高的学生并输出。

第十章文件
作业:
一、选择题-
二、判断题-
三、填空题-30
四、程序填空题、
五、编程题
补充作业:
1.编一个程序,从键盘输入200个字符,存入名为“ f1.t”的磁盘文件中。

2.从上一题中建立的名为的磁盘文件中读取120个字符,并显示在屏幕上。

3.输入100个学生的信息〔含学号、、年龄、7科成绩、总分〕,统计所有学生的总分,然后存入磁盘二进制数据文件中。

然后再读取该文件,寻找总分最高的学生并输出该生的所有信息。

第三部分大作业:
1 单项选择题
1、在C语言程序设计中引用数据元素时,其数组下标的数据类型允许是_______。

A) 字符常量B) 浮点型常量
C) 整型常量或整型表达式D) 任何类型的表达式
2、当调用函数时,实参是一个数组名,则向函数传送的是_________。

A) 数组的长度B) 数组的首地址
C) 数组每一个元素的地址D) 数组每个元素中的值
3、设有以下说明语句
struct ex
{ int x ; float y; char z ;} example;
则下面的表达中不正确的选项是__________-。

A) struct结构体类型的关键字B) example是结构体类型名
C) x,y,z都是结构体成员名D) struct ex是结构体类型
4、以下表达中错误的选项是______。

A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 利用fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针
5、以下各语句中,字符串“abcde”能正确赋值的操作是。

A) char s[5]={‘a’,’b’,’c’,’d’,’e’}; B) char *s;s=”abcde”;
C) char *s;gets(s); D) char s[6];scanf(“%s”,&s);
6、已知:char s[20]="language", *ps=s; 则不能引用字母n的表达式是_________。

A〕ps+2 B〕s[2] C〕ps[2] D〕ps+=2, *ps
7、下面程序的输出结果是__________。

main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf(“%d\n”,*p+9); }
A) 0 B) 1 C) 10 D)9
8、已知:int a, x; 则正确的赋值语句是____________。

A〕a=(a[1]+a{2})/2 B〕
a*=*a+1;
C〕a=(x=1, x++, x+2); D〕a="good";
9、对于下述定义,不正确的表达是___________。

union data
{ int i; char c; float f;} a, b;
A〕变量a所占内存的长度等于成员f的长度
B〕变量a的地址和它的各成员地址都是相同的
C〕可以在定义时对a初始化
D〕不能对变量a赋值,故a=b非法
10、假设有以下定义和语句
int a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下语句中错误的选项是_____。

A) *q=0; B) w=p; C) *p=a; D) *p=*w;
11、假设有以下定义:
int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int (*p)[3]=x;
则能够正确表示数组元素a[1][2]的表达式为。

A) *(*(p+1)+2) B) *((*p+1)[2]) C) *(*(p+5)) D) *((*p+1)+2)
12、假设有语句
char s1[]="string1", s2[8], *s3, *s4="string2";
则是对库函数strcpy的错误调用。

A) strcpy(s1, "string1"); B) strcpy(s4, "string2");
C) strcpy("string2", s2); D) strcpy(s3, "string1");
13、以下程序的输出结果是________.,
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
14、有以下程序
#include <string.h>
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;i<argc;i++) len+=strlen(argv);
printf("%d\n",len);
}
程序编译连接后生成的可执行文件是,
假设运行时输入带参数的命令行是:ex1 abcd efg 10<回车>
则运行的结果是__________。

A) 22 B) 17 C) 12 D) 9
15、执行下面的语句后,输出结果为________________。

enum week(sun,mon=3,tue,wed,thu) ;
enum weekday wday ;
wday=wed ;
printf(“%d\n”,wday) ;
A) 5 B) 3 C) 4 D) 编译是出错
2判断题
3有说明:static int a[3][4];,则数组a中各数组元素可在程序的编译阶段得到初值0〔〕。

4假设用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值〔〕。

3、结构体的成员可以作为变量使用〔〕。

4、共用体变量的地址和它的各成员的地址都是同一地址〔〕。

5、C语言规定只能逐个引用数值数组的元素而不能一次引用整个数组〔〕。

6、使用结构体struct的目的是将一组数据作为一个整体,以便于其中的成员共享同一空间〔〕
7、C语言中,枚元素表中的元素又先后次序,可以进行比较。

〔〕
8、语句y=*p++;和〔*p〕++;是等价〔〕。

9、如果一个字符数组中包含多个结束符‘\0’,输出时遇到第一个’\0’字符串输出就结束
〔〕。

10、假设有说明:int a[3][4]={0};,则数组a中每个元素均可得到初值0。

〔〕
三、填空题
1、有如下程序
main()
{ char ch[2][5]={“6937”,”8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;j+=2) s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
}
该程序的输出结果是【】。

2、以下程序的输出结果是【】
union myun
{ struct
{ int x, y, z; } u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
9下程序功能是当输入学生序号〔以数组一维下标加1作为学生序号〕后,能输出该学生的全部成绩〔共有三位学生,每位学生有4门成绩〕。

#include <stdio.h>
main()
{ float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float (*p)[4];
int n,i;
p= 【】;
printf("\n请输入学生的序号:");
scanf("%d",&n);
printf("序号为%d的学生成绩是:",n);
for (i=0;i<4;i++)
printf("%",【】; /*用p引用score的元素值*/
}
}
4、面程序的功能是从键盘输入10个整数,去掉一个最大数和一个最小数,然后求
剩下的8个数的平均值,请填空。

#include “stdio.h”
void main( )
{ int t,a[10],max,min;
float aver;
for(t=0;t<10;t++) scanf(“%d”,&a[t]);
aver=min=max=a[0];
for(t=1;t<10;t++)
{ if(【】)
max=a[t];
if(min>a[t])
【】;
aver=aver+a[t]; }
aver=aver-max-min;
aver=aver/8.0;
printf(“Aver=%\n”,aver);}
5、从键盘输入:100 回车,以下程序运行结果是【】。

main()
{
int a[]={45,23,54,87,51,89};
int k,m;
scanf("%d",&m);
for(k=5;k>=0&&a[k]!=m;k--)
printf("%d\n",k);
}
6、以下程序是用来输出如以下图形:
请写出三个下线划处应填上的有关内容,使本程序得以完整。

#include <stdio.h>
main()
{
int i, j;
for(i=1; i<=5; i++)
{ for(j=1; j<=【】; j++) printf("");
for(j=1; j<=2*i-1; j++)
if 〔【】〕printf("*");
else printf("#");
【】;
}
}
四、编程题
1.求以下算式中,庆、祝、六、一各代表什么数字?
其中用变量q,z,l,y分别代表庆,祝,六,一。

相关文档
最新文档