第一篇:c语言期末复习
谁能出线
电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。
1.#include
求出 2 到 m 之间(含 m,m<=1000)所有素数并放在数组 a 中。输入:正整数m 输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)
1.#include
9.i=i+1;10.}
11.cnt=0;
12.for(i=0;i 14.j=2; 15.while(a[i]%j!=0)16.{ 17.j++;18.} 19.if(j==a[i])20.{ 21.printf(“%4d”,j);22.cnt=cnt+1;23.} 24.25.}printf(“n”);26.printf(“%d”,cnt);27.printf(“n”);28.return 0;29.} 1.#include 4.int a[10],i,j,n;5.for(i=0;i<10;i++)6.{ 7.scanf(“%d”,&a[i]);8.} 9.for(j=0;j<10;j++)10.{ 11.12.for(i=0;i<9;i++)13.{ 14.if(a[i+1] 16.n=a[i+1];17.a[i+1]=a[i];18.a[i]=n;19.} 20.} 21.} 22.23.for(i=0;i<10;i++)24.{ 25.printf(“ %d”,a[i]); 冒泡法排序26.} 27.printf(“n”);28.return 0;29.} 插入法排序 1.#include 1.#include 7.do 8.{ 9.a[i]=n%10;10.n=n/10;11.i++;12.k++; 13.}while(n!=0); 14.for(j=0;j 16.for(i=0;i 18.if(a[i+1]>a[i])19.{ 20.m=a[i+1];21.a[i+1]=a[i];22.a[i]=m;23.} 24.} 25.} 26.for(i=0;i 28.printf(“%d”,a[i]);29.} 30.printf(“n”);31.return 0;32.} 数组逆序输出 1.#include 4.int a[10],i,j,t;5.for(i=0;i<10;i++)6.{ 7.scanf(“%d”,&a[i]);8.} 9.i=0;10.j=9; 11.while(i 13.t=a[i];14.a[i]=a[j];15.a[j]=t;16.i++;17.j--;18.} 19.for(i=0;i<10;i++)20.{ 21.printf(“%d ”,a[i]);22.} 23.printf(“n”);24.return 0;25.} 求最大值 1.#include 程序定义了 4× 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n。例如: 数组中的值为 假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即%4d) 1.#include 4.int a[4][4],i,j,n;5.for(i=0;i<4;i++)6.{ 7.for(j=0;j<4;j++)8.{ 9.scanf(“%d”,&a[i][j]);10.} 11.} 12.scanf(“%d”,&n);13.for(i=0;i<4;i++)14.{ 15.for(j=0;j<=i;j++)16.{ 17.a[i][j]=n*(a[i][j]);18.} 19.} 20.for(i=0;i<4;i++)21.{ 22.for(j=0;j<4;j++)23.{ 24.printf(“%4d”,a[i][j]);25.} 26.printf(“n”);27.} 28.return 0;29.} 在屏幕上显示杨辉三角形 1.#include 6.int a[N][M],i,j,n;7.scanf(“%d”,&n);8.for(i=0;i 10.j=i; 11.a[i][0]=1;12.a[i][j]=1;13.} 14.for(i=2;i 1.#include 28.printf(“ %d”,a[i][j]); 29.} printf(“n”);30.} 31.return 0;32.} 给数组中的元素按顺序编号 对数组 a[10] 中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数要具有相同的编号。例如数组是: A=(5,3,4,7,3,5,6,8,9,10)则输出为:(4,1,3,7,1,4,6,8,9,10) 1.#include 4.int a[10],b[10],i,j,t;5.for(i=0;i<10;i++)6.{ 7.scanf(“%d”,&a[i]);8.} 9.for(i=0;i<10;i++)10.{ 11.b[i]=a[i];12.} 13.for(i=0;i<9;i++)14.{ 15.for(j=i+1;j<10;j++)16.{ 17.if(a[i]>a[j])18.{ 19.t=a[i];20.a[i]=a[j];21.a[j]=t;22.} 23.} 24.} 25.for(j=0;j<10;j++)26.{ 27.for(i=0;i<10;i++)28.{ 29.if(b[j]==a[i])30.{ 31.printf(“%3d”,i+1);brea k; 32.} 33.} 34.}printf(“n”);35.return 0;36.} 字符转换 描述 提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。输入 一个以回车符为结束标志的字符串(少于80个字符)。输出 把字符串中的所有数字字符(‘0’...‘9’)转换为一个整数并输出。 1.#include 11.{ 12.printf(“%c”,a[j]);13.} 14.} 15.printf(“n”);16.return 0;17.} 合并字符串 输入: 两个已经排好顺序(升序)的字符串 输出: 一个合并在一起的有序(升序)的字符串 要求: 设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。 如果采用先进行串连接,然后再进行排序的算法,则效率太低了。 1.#include 7.char a[N],b[M];8.int i,j,t,n;9.gets(a);10.gets(b);11.strcat(a,b);12.n=strlen(a); 13.for(i=0;i 15.for(j=i+1;j 17.if(a[i]>=a[j])18.{ 19.t=a[i];20.a[i]=a[j];21.a[j]=t;22.} 23.} 24.} 25.puts(a);26.return 0;27.} 删除重复字符 1.#include 4.char a[100],b[100];5.int i,j,n=0;6.gets(a);7.b[0]=a[0]; 8.for(i=0;a[i]!=' ';i++)9.{ 10.j=0;11.for(j=0;j<=n;j++)12.{ 13.if(a[i]==b[j])14.{ 15.break;16.} 17.} 18.if(a[i]!=b[j])19.{ 20.n++;21.b[n]=a[i];22.} 23.} 24.b[n+1]=' ';25.puts(b);26.return 0;27.} 删除字符串中指定字符 1.#include 在指定位置插入字符串 1.#include 5.char a[20],b[5],ch,c[10];6.int i,j,k,n; 7.gets(a);gets(b);8.scanf(“%c”,&ch);9.n=strlen(b); 10.for(i=0;a[i]!=' ';i++)11.{ 12.if(ch==a[i])break;13.} 14.k=0; 15.for(j=i;a[j]!=' ';j++)16.{ 17.c[k]=a[j];18.k++;19.} 20.c[k]=' '; 21.for(j=0;j 23.printf(“%c”,a[j]);24.} 25.printf(“%s”,b);26.printf(“%sn”,c);27.return 0;28.} 数的合并 1.int fun(int a,int b)2.{ 3.int c; 4.c=a/10*10+a%10*1000+b/10+b%10*100 ; 5.return c;6.} 7.int main()8.{ 9.int a,b,c; 10.scanf(“%d%d”,&a,&b);11.c=fun(a,b); 12.printf(“c=%dn”,c);13.return 0;14.} 素数的判断 1.int fun(int a)2.{ 3.int i;4.for(i=2;i 请编写函数fun,它的功能是计算下列级数和,值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859。请勿改动主函数main,仅在函数fun的花括号中填入所编写的若干语句。 1.#include 10.S=S+z/m;11.} 12.return S;13.} 14.int main()15.{ 16.double x;17.int n; 18.scanf(“%lf%d”,&x,&n);19.printf(“%lfn”,fun(x,n));20.return 0;21.} 求大于m且紧靠m的k个素数 1.int fun(int m,int n,int zz[1000])2.{ 3.int i,j,cnt=0,k=0;4.for(i=m+1;i<1000;i++)5.{ 6.for(j=2;j 8.if(i%j==0)9.break;10.} 11.if(j==m+1)12.{ 13.cnt++;14.zz[k]=i;15.k++; 16.if(cnt==n)17.{ 18.return zz[m];19.} 20.} 21.} 22.} 23.int main()24.{ 25.int m,n,zz[1000];26.scanf(“%d%d”,&m,&n);27.fun(m,n,zz); 28.for(m=0;m 29.printf(“%6d”,zz[m]);30.printf(“n”);31.return 0;32.} 删除指定字符 请编写函数fun,其功能是:从字符串中删除指定的字符。同一字母的大、小写按照不同的字符处理。1.#include 求整数 n 到 m 区间的累加和,其中n<=m。输入: 区间的起始点n 区间的终止点m 输出: 累加和 1.int fun(int a,int b)2.{ 3.int h;4.h=a;5.if(a==b)6.{ 7.h=a;8.} 9.else if(a 11.h=b+fun(a,b-1);12.} 13.14.return h;15.} 16.int main()17.{ 18.int m,n,s; 19.scanf(“%d%d”,&n,&m);20.s=fun(n,m); 21.printf(“%dn”,s);22.return 0;23.} 求最大公约数——递归 请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。 1.#include 4.if((m<=n)&&(n%m==0))5.{ 6.return m;7.} 8.else if(n 10.return GCD(m,n);11.} 12.else 13.{ 14.return GCD(m,n%m);15.} 16.} 17.int main()18.{ 19.int a,b; 20.scanf(“%d%d”,&a,&b);21.printf(“%dn”,GCD(a,b));22.return 0;23.} 求数列的第N项 已知整数数列第一项和第二项是1,该数列从第三项开始,如果该项是奇数项,则它是前两项之和,如果该项是偶数项,则它是前两项之差,即: f(n)= 1 当 n = 1 或 2 时, f(n)= f(n-1)-f(n-2)当n是偶数时, f(n)= f(n-1)+ f(n-2)当n是奇数时,编写一个递归函数,求数列的第N项。 1.#include 14.} 15.else 16.{ 17.return m=f(n-1)+f(n-2); 18.} 19.} 20.} 21.int main()22.{ 23.int n;24.scanf(“%d”,&n);25.printf(“%dn”,f(n));26.return 0;27.} 偶数分解 编写程序,输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数并输出;如果输入的奇 数,则输出“××× is odd number!” ;输入为0时程序结束。只有1和它本身这两个因数的自然数叫做素数,0和1既不是素数也不是和数。实现分解的过程用函数实现。输入:整数序列,0 输出:偶数1 = 素数A + 素数B(当输入是偶数时)奇数1 is odd number!(当输入是奇数时)1.#include 4.int i; 5.for(i=2;i 7.if(n%i==0)8.return 0;9.} 10.if(i==n)11.{ 12.return 1;13.} 14.} 15.void fun(int n)16.{ 17.int i; 18.for(i=2;i 20.if(s(n)==1)21.{ 22.printf(“%d is odd number! n”,n);23.} 24.else if((s(i)==1)&&(s(n-i)= =1)) 25.{ 26.printf(“%d=%d+%dn”,n,i,n -i);break;27.} 28.} 29.} 30.int main()31.{ 32.int n;33.do 34.{ 35.scanf(“%d”,&n);36.fun(n);37.}while(n!=0);38.return 0;39.} 浮点数四舍五入 1.#include 6.} int main()7.{ double a;8.scanf(“%lf”, &a);9.printf(“%lfn”, fun(a));10.return 0;11.} 长整型截短 1.#include 21.return 0;22.} 长整型截短 编写一个函数fun,其功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。 1.#include 2.int fun(int n) 3.{ 4.int a,i=0,b=0;5.do 6.{ 7.a=n%10;8.n=n/10;9.if(a%2==0)10.{ 11.b=b+a*pow(10,i);12.i++;13.} 14.}while(n!=0);15.return b;16.} 17.int main()18.{ int n; 19.scanf(“%ld”,&n); 20.printf(“The result is: %ldn”,fun(n)); 21.return 0;22.} 公式求解 1.double fun(int n)2.{ 3.int i; 4.double a=1,s=1;5.for(i=1;i<=n;i++)6.{ 7.a=a/i;8.s=s+a;9.} 10.return s;11.} 12.int main()13.{ int n;14.double s;15.16.scanf(“%d”,&n);17.s=fun(n);18.printf(“s=%fn”,s);19.return 0;20.} 数的合并 请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位依次存放在c数的十位和千位上,b的十位和个位依次存放在c数的个位和百位上。 1.int fun(int a,int b,int *p)2.{ 3.*p=a/10*10+a%10*1000+b%10*100+b/10;4.return p;5.} 6.int main()7.{ 8.int a,b,c;9.scanf(“%d%d”,&a,&b);10.fun(a,b,&c);11.printf(“%dn”,c);12.return 0;13} 数组中奇偶数 请编一个函数 fun,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数:利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和。 例如:数组中的值依次为: 1,8,2,3,11,6 ;则利用指针 odd 返回奇数之和 15 ;利用指针 even 返回偶数之和 16。 void fun(int x[],int y,int *odd,int *even) { int i; *odd=0; *even=0; for(i=0;i if(x[i]%2!=0) { *odd=*odd+x[i]; } else { *even=*even+x[i]; } } } int main() { int a[N],i,n,odd,even; scanf(“%d”,&n); for(i=0;i printf(“The sum of even numbers:%dn”,even); return 0; } #include #define N 20 浮点数四舍五入 请编一个函数 void fun(double a,double *h),函数的功能是对变量 h 中的值保留 2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。 例如: h 值为 8.32433,则函数返回 8.32 ; h 值为 8.32533,则函数返回 8.33。 #include void fun(double a,double *h) { *h=(floor)(a*100+0.5)/100; } int main() { double a,h; scanf(“%lf”,&a); fun(a,&h); printf(“The result:%lfn”,h); return 0; } 字符移动 请编一个函数void fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。 例如:原有的字符串为: Mn.123xyZ,则调用该函数后,串中的内容为: n.123xyZM。 void fun(char *s) { int i=0,j,k; char ch,a[N]; do { a[i++]=*(s++); }while(*s!=' '); ch=a[0]; for(j=0;j a[j]=a[j+1]; } a[i-1]=ch; a[i]=' '; for(k=i-1;k>=0;k--) { *(--s)=a[k]; } } int main() { char a[N]; gets(a); fun(a); printf(“%sn”,a); return 0; } 生成新数 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 例如,输入一个数:27638496,新的数:为739。 #include int a[10],b[10]; int i=0,j=0,k; do { a[i++]=*p%10; *p=*p/10; }while(*p!=0); for(k=0;k if(a[k]%2!=0) { b[j++]=a[k]; } } for(k=0;k *p=*p+b[k]*pow(10,k); } } int main() { int n=-1; while(n>99999999||n<0) { scanf(“%d”,&n);} fun(&n); printf(“%dn”,n); return 0; } 字符串转换成整数 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数。例如,若输入字符串“-1234”,则函数把它转换为整数值-123 4 #include int fun(char *p) { char a[10]; int q=0,i=0,j=0; do { a[j++]=*(p++); }while(*p!=' '); if(a[0]=='-') { for(i=1;i q=q+(a[i]-'0')*pow(10,j-1-i); } q=-1*q; } else { for(i=0;i q=q+(a[i]-'0')*pow(10,j-1-i); } } return q; } int main()/* 主函数 */ { char s[10]; int n; gets(s); n = fun(s); printf(“%dn”,n); return 0; } 二维数组按列优先存放 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W W W W S S S S H HHH 则字符串中的内容应是: WSHWSHWSHWSH。 void fun(char w[M][N],char *q) { int j,i; for(j=0;j for(i=0;i *(q++)=w[i][j]; } } *q=' '; } int main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; fun(w,a); puts(a); return 0; } #include #define M 3 #define N 4 删除字符串中指定的星号 假定输入的字符串中只包含字母和 * 号。请编写函数 fun,它的功能是:除了尾部的 * 号之外 , 将字符串中其它 * 号全部删除。在编写函数时,不得使用 C 语言提供的字符串函数 void fun(char *p,char *t) { char a[30],b[30],ch; int i=0,j,k=0; do { a[i++]=*(p++); }while(*p!=' '); a[i]=' '; for(j=0;;j++) { if(a[j]!='*') { b[k++]=a[j]; if(a[j]==*t)break; } } for(j=k;j b[j]=*(++t); } for(k=j;k>=0;k--) { *(p--)=b[k]; } } int main() { char s[81],*t; gets(s); t=s; while(*t)t++; t--; while(*t=='*')t--; fun(s , t); puts(s); return 0; } 统计数字字符 请编写函数 fun,它的功能是: 统计形参 s 所指字符串中数字字符出现的次数,并存放在形参 t void fun(char *p,int *q) { int i=0; for(;*p!=' ';p++) { if((*p>='0')&&(*p<='9')) { i++; } } *q=i; } int main() { char s[80]; int t; gets(s); fun(s,&t); printf(“%dn”,t); return 0; } 将两个串按要求形成一个新串 给定程序的函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 所指数组中,形成一个新的字符串。 void fun(char *p,char *q,char *c) { int i,j; for(i=0;*(p+i)!=' '&&*(q+i)!=' ';i++) { if(*(p+i)>=*(q+i)) { *(c+i)=*(p+i); } else { *(c+i)=*(q+i); } } j=i; if(*(p+j)!=' ') { for(j=i;*(p+j)!=' ';j++) { *(c+j)=*(p+j); } } else { for(j=i;*(q+j)!=' ';j++) { *(c+j)=*(q+j); } } *(c+j)=' '; } int main() { char a[10], b[10], c[80]; gets(a);gets(b); fun(a,b,c); puts(c); return 0; } #include #include 统计子串的个数 请编写函数 fun,它的功能是: 统计 substr 所指子字符串在 str 所指字符串中出现的次数。 void fun(char *p,char *q,int *c) { int i,j,cnt; *c=0; for(;*p!=' ';p++) { cnt=1; if(*p==*q) { for(j=0;*(q+j)!=' ';j++) { if(*(p+j)!=*(q+j)) { cnt=0; break; } } } else cnt=0; if(cnt) { (*c)++; } } } int main() { char str[80],substr[80]; int count; gets(str); gets(substr); fun(str,substr,&count); printf(“%dn”,count); return 0; } 函数 fun 的功能是: 将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除 , 串中剩余字符所形成的一个新串放在 t 所指的数组中。 void fun(char *p,char *q) { int i; for(i=0;*(p+i)!=' ';i++) { if(i%2==1&&*(p+i)%2==1) { *(q++)=*(p+i); } } *(q++)=' '; } int main() { char s[100], t[100]; scanf(“%s”, s); fun(s, t); printf(“%sn”, t); return 0; } 求非偶数的除数 请编写函数 fun,它的功能是:求出能整除形参 x 且不是偶数的各整数 , 并按从小到大的顺序放在 pp 所指的数组中 , 这些除数的个数通过形参 n 返回。 void fun(int x,int *p,int *q) { int i; *q=0; for(i=1;i<=x;i=i+2) { if(x%i==0) { *(p++)=i;(*q)++; } } } int main() { int x, aa[1000], n, i; scanf(“%d”, &x); fun(x, aa, &n); for(i = 0;i < n;i++) printf(“ %d”, aa[i]); printf(“n”); return 0; } 求最大值及其下标 请编写函数 fun,其功能是求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中 void fun(int *p,int n,int *q) { int i,max; max=0; for(i=0;i if(*(p+i)>max) { max=*(p+i); *q=i; } } } void main() { int a[10], k ,i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); fun(a, 10, &k); printf(“%d,%dn”, k, a[k]); } 结构体填空 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数modify的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 #include typedef struct { int num; char name[9]; float score[3]; } STU; void show(STU tt) { int i; printf(“%d %s : ”,tt.num,tt.name); for(i=0;i<3;i++) printf(“%5.1f”,tt.score[i]); printf(“n”); } void modify(STU *ss,float a) { int i; for(i=0;i<3;i++) ss->score[i]*=a; } int main() { STU std= { 1,“Zhanghua”,76.5,78.0,82.0 }; float a; scanf(“%f”,&a); modify(&std,a); show(std); return 0; } 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是对形参 b 所指结构体变量中的数据进行修改 , 最后在主函数中输出修改后的数据。 #include #include struct student { long sno; char name[10]; float score[3]; }; void fun(struct student *b) { b->sno= 10004; strcpy(b->name, “LiJie”); } int main() { struct student t={10002,“ZhangQi”, {93, 85, 87}}; int i; fun(&t); printf(“No: %ld Name: %snScores:”,t.sno, t.name); for(i=0;i<3;i++)printf(“%6.2f”, t.score[i]); printf(“n”); return 0; } 程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。 #include #include struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a[], int n) { struct student t; int i, j; for(i=0;i for(j=i+1;j if(strcmp(a[i].name,a[j].name)> 0) { t = a[i];a[i] = a[j];a[j] = t;} } int main() { struct student s[4]={{10001,“ZhangSan”, {95, 80, 88}},{10002,“LiSi”, {85, 70, 78}}, {10003,“CaoKai”, {75, 60, 88}},{10004,“FangFang”, {90, 82, 87}}}; int i, j; fun(s, 4); printf(“The data after sorting :n”); for(j=0;j<4;j++) { printf(“nNo: %ld Name: %-8s Scores:”,s[j].sno, s[j].name); for(i=0;i<3;i++) printf(“%6.2f”, s[j].score[i]); } printf(“n”); return 0; } 名词解释 补码: 计算机处理带符号数的编码,正数的补码就是其本身,负数的补码是原二进制码取反后加一。 BCD码: 用4位二进制表示1位十进制数的编码;分组合BCD码和非组合BCD码两种形式。 物理地址和逻辑地址: 逻辑地址由两个16位的地址分量构成,其中一个为段基址的高16位,另一个为偏移量。 段寄存器: 用于保存代码段、数据段、堆栈段和附加段的段基值(即段基址的高16位)的专用寄存器,分别是CS、DS、SS和ES。 IP寄存器: 即指令指针寄存器,用于保存下一条指令在代码段中的偏移量。 偏移量: 逻辑地址的一部分,又称为有效地址,为某存储单元距离段基址的字节数。 寻址方式: 指令获取操作数或操作数地址的方式;寻址方式包括“寄存器寻址”、“立即数寻址”、“存储器寻址”、“I/O接口寻址”等。 基址寻址和变址寻址: 立即数:以数值形式直接给出的操作数称为立即数,立即数不能作为目的操作数。 位移量:直接以数字形式出现的偏移量的分量之一。 伪指令:用于指示编译(汇编)程序如何进行编译的指令。 位操作指令: 能精准到位对其进行读写的计算机指令,包括逻辑运算和移位及循环移位指令。 PF标志位: 用于标志执行算术或逻辑运算后,运算结果的低8位中包含“1”数据位的奇偶结果。如果运算结果包含偶数个“1”,PF置1,否则被清0。 中断过程:中断请求、中断响应、中断处理、中断返回 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是(C)。void main(void){ int a,b,*pa,*pb;pa=&a;pb=&b;scanf(“%d,%d”,pa,pb);*pa=a+b;*pb=a+b;printf(“a=%d,b=%dn”,a,b);} A.a=13,b=13 B.a=8,b=8 C.a=8,b=13 D.出错 ?设有定义:int n1=0, n2, p=&n2, q=&n1;,以下赋值语句中与n2=n1;语句等价的是(A)。A.*p=*q;//将指针q指向的地址里的值(即n1的值),赋给指针p指向的地址里(n2)B.&q=&p;//p 和 q 分别存放n1、n2变量地址的,该地址是由系统分配的,不能赋值 C.p=&n1;D.p=q; 以下程序的运行结果是:(A)。 void main(void){ struct num { int x;int y;}cnum[2]={1,3,2,6};printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].y);} A.18 B.12 C.6 D.1 若定义了 struct num { int a;int b;}d[3] ={{1,4},{2,5},{6,7}};则执行printf(“%dn”,d[2].a* d[2].b/d[1].b);语句的输出结果是:(C)。A.2 B.2.5 C.8 D.8.4 有如下定义: struct date { int year,month,day;};struct person { char name[20];char sex;struct date birthday;} a;对结构体变量a的出生年份赋值时,下面正确的赋值语句是:(C)。 A.a.year=2010;B.birthday.year=2010;C.a.birthday.year=2010;D.year=2010; 若变量x和y均为整型,且x=y=1,则表达式y+=x+1的值为(A)。A.3 B.2 C.1 D.无正确结果 表示关系x<=y<=z的c语言表达式为(C)。A.(X<=Y<=Z)B.(X<=Y)AND(Y<=Z)C.(X<=Y)&&(Y<=Z)D.(X<=Y)&(Y<=Z) 若有输入语句“scanf(”%d,%d,%d“ ,&x,&y,&z);”,欲使x的值为10,y的值为20,z的值为30,则正确的输入应为(C): A.10 , 20 ,30〈回车〉 B.10 20 30〈回车〉 C.10,20,30〈回车〉 D.10〈回车〉20〈回车〉30〈回车〉 x为int型变量,执行以下语句后,x的值为(B)。x=10;x+=x-=x-x;A.10 B.20 C.30 D.40 有以下程序: void main(){ ; ; ; } 程序运行后的结果是(D): A.编译时有警告错误 B.编译时有语法错误 C.编译没有错误,但是运行时出错 D.程序正常运行,但是无任何输出 关于if后面一对圆括号中的表达式,叙述正确的是(D)。A.只能用关系表达式 B.只能用逻辑表达式 C.只能用关系表达式或逻辑表达式 D.可以使用任意合法的表达式 以下不正确的if语句是(D)。A.if(ab)&&(b>c)printf(“max=%d”,a); feof(fp)函数是用来测试fp所指的文件是否结束,如果文件结束,则feof(fp)返回的值是(B): A.0 B.1 C.NULL D.以上答案都不对 调用fopen函数打开一个文件失败时,函数返回的值是(C): A.-1 B.EOF C.NULL D.1 在对文件进行操作时,读文件的含义是(B): A.将内存中的信息存入磁盘 B.将磁盘中的信息输入到内存 C.将CPU中的信息存入磁盘 D.将磁盘中的信息输入到CPU 以下运算符中,优先级最高的是(B)。A.!B.[ ] C.++ D.% 假设有两个字符数组a[80],b[80],则正确的输出语句是(D)。A.puts(a,b);B.printf(“%s %s”,a[],b[]);C.putchar(a,b);D.puts(a);puts(b); 对定义“int a[2];”的正确描述是(B)。A.定义一维数组a,包含a[1]和a[2]两个元素 B.定义一维数组a,包含a[0]和a[1]两个元素 C.定义一维数组a,包含a[0]、a[1]和a[2]三个元素 D.定义一维数组a,包含a(0)、a(1)和a(2)三个元素 在引用数组元素时,其下标表达式的类型必须是(D)。A.字符型 B.整型 C.整型或字符型 D.整型常量或整型表达式 在C程序中,不合法的浮点型常量是(A): A.3.4E2.5 B..456 C.0.820000 D.100.3e5 C程序中,合法的关键字是(A): A.int B.integer C.Int D.Integer 执行循环语句“for(i=1;i<10;i++)a++;”后,变量i的值是(B)。A.9 B.10 C.11 D.不确定 有以下程序段: int t=0;while(t=1)t--;while循环执行的次数是(C)。A.一次也不执行 B.只执行一次 C.无限次 D.执行2次 C语言中while和do-while循环的主要区别为(A)。A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 While 语句中循环结束的条件是while后面表达式的值是(A)。A.0 B.1 C.-1 D.非0 已经有以下函数定义: fun(char a){ printf((“a=%cn”, a);} 该函数的返回值类型是(C)。A.void B.char C.int D.不确定 以下关于函数调用的描述中错误的是(B)。A.实参可以是常量、表达式或有确定值的变量 B.实参和形参共用同一内存单元 C.实参和形参的类型、个数必须一致 D.只有发生函数调用时,系统才为形参分别存储空间 以下叙述中正确的是(A)。 A.在C语言中静态变量在未赋值时,其值为0 B.在C语言中任何变量在未赋值时,其值为0 C.外部变量在程序的任何函数中均有效 D.函数中任何一个局部变量均无法保留上一次调用时的运行结果 以下正确的描述是(B)。 A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 下面的程序将浮点数写到文件test中,然后读出并显示。 #include 下面的函数sum 完成计算1~n的累加和。 sum(int n) { if(n<=0) printf(“data errorn”); if(n==1)return 1; else _return(sum(n-1)+n);__________ } 统计学生成绩中不及格的学生名单。#include main(){ int i=2;float sum=1;while(i<=50){ sum=sum+1/(float)i;i++;i++_;} printf(“sum=%fn”,sum)} 下面程序输入一个字符串,输出其中所出现过的大写英文字母.如输入字符串 “UKSDYckjsjsjJSJJD”;应输出“UKSDYJ”。按程序功能填空。#include 第二篇:语言期末复习名词解释
第三篇:c语言期末复习试题