南京晓庄学院—C语言期末考试复习提纲_南京晓庄学院期末考试
南京晓庄学院—C语言期末考试复习提纲由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“南京晓庄学院期末考试”。
习题一
1.以下常量中正确的是。
A.’abc’ B.’x123’ C.3.145E-1.2 D.”a”
2.设有“int a;”,以下不能正确表达数学关系10
。A.1010&&a=15)3.以下程序段的输出结果是
。int a=0,b=4,k=2;k=a+1>0||(++a
。
5.以下所列语句中,合法的语句是。
A.a=1,b=2 B.++a;C.a=a+1=5;D.y=int(a);6.以下所列字符常量中,不合法的是。
A.’ xff’ B.’65’ C.’$’ D.’x1a’
7.设有定义“float y=3.45678;int x;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是
。A.y=(y*100+0.5)/100.0 B.x=y*100+0.5,y=x/100.0 C.y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0 8.以下程序段输出结果是
。int a=10,b=11,c=12,s;s=a++
。
习题二
1.以下关于if语句的错误描述是
。A.条件表达式可以是任意的表达式
B.条件表达式只能是关系表达式或逻辑表达式 C.条件表达式的括号不可以省略
D.与else配对的if语句是其之前最近的未配对的if语句 2.以下叙述中不正确的是。
A.一个变量的作用域完全取决于变量说明语句的位置 B.外部变量可以在函数以外的任何位置定义
C.内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用 D.用static说明一个外部变量是为了限制其他编译单位的引用 3.以下程序的输出结果是。
main(){ extern int x;printf(”%d”,x+=2);fun1(2);} int x=1;
{int x,*y;y=fun(&x);„} int *fun(int *a){int *t;*a=99;t=a;return t;} A.无确切的值 B.形参a的地址
C.主函数中变量x的地址 D.fun函数中变量t的地址 3.[程序] main(){ int s,p[9]={1,2,3,4,5,6,7,8,9};printf(”n%d”,add(p,5));} add(int *p,int n){ if(n==1)return *p;else return *p+add(p+1,n-1);} 程序输出结果是
。4.[程序] int *swap(int *a, int *b){ int *p;p=a;a=b;b=p;return a;} main(){ int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(”%d,%d,%d”,x,y,z);} 程序输出结果是
。5.[程序] fun(int n,int *s){ int f1,f2;if(n==1||n==2)*s=1;else { fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(”n%d,%d”,f1,f2);} } main(){ int x;fun(4,&x);printf(”nx=%d”,x);} 程序运行时输出的第一行是
,第二行是
,最后一行是
。6.如有以下定义
int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;则不能正确引用值为7的数组元素的表达式是。
fun(p,0,3);fun(p+3,1,6);for(i=0;i
,第二行是。
习题四
1.设有基类型相同的两个指针变量,则不能对它们进行
运算。
A.+ B.struct s { int a;int *b;};int x0[]={110,120},x1[]={210,220};struct s x[]={{100},{200}},*p=x;x[0].b=x0;x[1].b=x1;A.*p->b B.(++p)->a C.*(p++)->b D.*(++p)->b 8.设有“char s[]=”Program”,*p=s;”,则以下叙述中正确的是
。A.数组s的内容与指针变量p中的内容相同 B.数组s的长度与strlen(p)的值相等 C.p[5]的值等于s[5]的值 D.sizeof(s)等于sizeof(*p)9.若有定义语句“static char str[4][20]={”thank”, ”you”, ”very”, ”much!”};”, 则str数组中存储’ ’的数组元素有
个。10.以下程序输出结果是。
main(){ enum color{RED=5,BLUE,WHITE=0,BLACK};char *colorname[]={”red”,”blue”,”white”,”black”};printf(”%s”,colorname[BLACK]);}
习题五
1.函数delstr功能是:在字符串str中删除所有出现的子串str1。[程序] char *delstr(char *str,char *str1){ char *p,*p1,*q1;int i;if(*str==’ ’||*str1==’ ’)return str;p=str;while(*p!=’ ’){ p1=p,q1=str1;while(*p1==*q1 && *q1!=’ ’)
;if(p!=p1 && *q1==’ ’){ for(i=0;*p1!=’ ’;i++,p1++)
=*p1;
=’ ’;} p++;}
;} 2.设结点的数据结构定义如下:
typedef struct p{ int x,y;struct p *next;}PNODE;
{ int j,t;if(n==1)return;for(j=1;j
){ t=x[0];x[0]=x[j];x[j]=t;} sort(x+1,);} 5.已知某链表中结点的数据结构定义如下:
struct node { int x;struct node *next;};函数find_del功能是:在参数head指向的链表中查找并删除x值最大的结点,如有多个相同的x值最大的结点,删除第一个结点,保存该结点的地址到pm指向的指针变量中,函数返回链表首结点的指针。
struct node *find_del(struct node *head,struct node **pm){ struct node *p1,*p2,*pmax,*pre;if(head==NULL)return NULL;pmax=
;p2=p1=pmax;while(p1){ if(p1->x>){ pre=p2;pmax=p1;} p2=p1;p1=p1->next;} if(pmax==head)head=pmax->next;else
=pmax->next;
=pmax;return head;}
编程题
1.熟悉Visual C++编程环境,编写第一个C语言程序,输出以下信息: * * * * * * * * * * * * * * * Very good!* * * * * * * * * * * * * * *27 36
5.验证素数。
6.打印Fibonacci数列。(1 1 2 3 5 8 13 „)
1.有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,„,求出这个数列的前20项之和。
0
5.已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
6.输出以下的杨辉三角形(要求输出10行)。1 1 1 1 2 1 1 1 1.2
5.写一函数建立一个有3名学生数据的单向动态链表。
6.写一函数以删除动态链表中指定的结点。
1、输入两个正整数m和n,求其最大公约数和最小公倍数
#include int main(){
int p,r,n,m,temp;
printf(“请输入两个正整数n,m:”);scanf(“%d,%d,”,&n,&m);
if(n {
temp=n;n=m;
43、求100~200之间的全部素数
#include #include
int main(){ int n,k,I,m=0;for(n=101;n=k+1){ Printf(“%d”,n);m=m+1;} If(m%10==0)printf(“n”);} printf(“n”);return 0;}
4、10个整数用冒泡法由小到大排序 #include int main(){ int a[10];int i,j,t;printf(“输入10个数字:n”);for(i=0;ia[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;} printf(“排序后的数是:n”);for(i=0;i
66、用打擂台法,有一个3*4的矩阵,求出其中最大的那个元素的值和它所在的行号和列号 #include int main(){ int i,j,row=0,colum=0,max;int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;imax){ max=a[i][j];row=i;colum=j;} printf(“max=%dn row=%dn colum=%dn”,max,row,colum);return 0;}
7、求一个3*3的整型矩阵对角线元素之和
#include
int main(){
int a[3][3],sum=0;
int i,j;
printf(“enter data:n”);
for(i=0;i
for(j=0;j
for(i=0;i
printf(“sum=%6dn”,sum);
return 0;}
int a[N]={100,98,95,93,87,85,77,75,67,65,57,55,47,45,37};printf(“input number to look for:”);scanf(“%d”,&x);
left=0;right=N-1;
while(left
else if(x
right=mid-1;}
if(left
printf(“%d在数组中的第%d个数.n”,x,mid+1);else
printf(“数组中没找到%d.n”,x);
return 0;}
10、编一程序,将两个字符串连接起来,不要用strcat函数
#include int main()
{ char s1[80],s2[40];
int i=0,j=0;
printf(“input string1:”);scanf(“%s”,s1);
printf(“input string2:”);scanf(“%s”,s2);
while(s1[i]!=' ')i++;
while(s2[j]!=' ')s1[i++]=s2[j++];
0
{void inverse(char str[]);char str[100];
printf(“input string:”);
gets(str);inverse(str);
printf(“inverse string:%sn”,str);return 0;}
void inverse(char str[]){char t;int i,n;
n=strlen(str);
for(i=0;i
str[i]=str[n-1-i];str[n-1-i]=t;}
}
14、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格、和其他字符的个数,在主函数中输入字符串以及输出上述的结果
#include
int letter,digit,space,others;int main()
{void count(char []);
char text[80];
printf(“input string:n”);gets(text);printf(“string:”);puts(text);letter=0;digit=0;space=0;others=0;count(text);
printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);
return 0;}
void count(char str[]){int i;
for(i=0;str[i]!=' ';i++)
if((str[i]>='a'&& str[i]='A' && str[i]
p2++;} *p2=' ';}
16、有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。#include struct Student { int num;char name[20];float score;} int main(){ struct 5},{10110,”sun”,100}};struct Student temp;const int n=5;int i,j,k;printf(“The order is:n”);for(i=0;istu[k].score)k=j;temp=stu[k];stu[k]=stu[i];stu[i]=temp;} for(i=0;i
for(i=0;i
stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);return 0;}