c语言程序设计期末试题A
时间:2025-03-15
时间:2025-03-15
C语言程序设计 期末试题A
一.单选题(每题2分,共20分)
2.下列选项中,不能用作标识符的是( D )。
A._1234_ B._1_2 C.int_2_ D.2_int_
3.以下定义语句中正确的是( C )
A.char a='A, 'b='B'; B.float a=b=10.0;
C.int a=10, *b=&a; D.float *a, b=&a;
4.#define d 2
int a=0; double b=1.25; char c='A';
则下面语句中错误的是( D )
A.a++; B.b++; C.c++; D.d++;
6.double a, b; int w; long c;
各变量已正确赋值,则下列选项中错误的表达式是( A )
A.a=a+b=b++ B.w%(int)a+b C.(c+w)%(int)a D.w=a==b;
8.int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A )
A.scanf("%d", pa); B.scanf("%d", a);
C.scanf("%d", &pa); D.scanf("%d", *pa);
9.char *c[]={ "www", "fuwod", "com", "wbs", "C" };则表达式*c[1]>*c[2]比较的是( A )
A.字符f和字符c B.字符串fuwod和字符串com
C.字符w和字符f D.字符串ww和字符串com
10.执行语句for(i=1; i++<4; );后变量i的值是( C )
A.3 B.4 C.5 D.不定
二.填空题(每空2分,共18分)
1.int a=7; float x=2.5, y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为
2.int a[10]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, *p=&a[3], b=p[5]; 则b的值是
3.函数swap(int x, int y)实现对x和y值的交换。则执行语句
int a[2]={ 1, 2 }; swap(a[0], a[1]);后,
4.#define f(z) z*z
int k=f(4+4)/f(2+2);
k的值是。
5.书写语句求a、b两个数的最大值max。 ;
6.执行int x=7; x+=x-=x+x;后,x的值是。
三.读程序,写结果(每题6分,共24分)
1.有以下程序
int f(int a){ int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); }
main(){ int a=2, i; for(i=0; i<3; i++) printf("%2d", f(a)); }
结果是 7 8 9 。
2.有以下程序
void f(int y, int *x){ y=y+*x; *x=*x+y; }
main(){ int x=2, y=4; f(y, &x); printf("x=%d,y=%d\n", x,y); }
结果是 x=8,y=4 。
3.#define LETTER 1
#include <stdio.h>
void main()
{ char str[20]="C Language", c; int i=0;
while((c=str[i])!='\0')
{ i++;
#ifdef LETTER
if(c>='a' && c<'z') c=c+1;
else if(c=='z') c=c-25;
#else
if(c>='B' && c<='Z') c=c-1;
else if(c=='A') c=c+25;
#endif
printf("%c", c);
}
}
结果是 C Lbohvbhf 。
4.void fun(int *a, int i, int j)
{ int t;
if(i<j)
{ t=a[i]; a[i]=a[j]; a[j]=t;
i++; j--;
for(i=0; i<4; i++) printf("%2d", a[i]);
fun(a, i, j);
}
}
main()
{ int x[]={ 2, 6, 1, 8}, i; fun(x, 0, 3);
for(i=0; i<4; i++) printf("%2d", x[i]);
}
结果是 8 6 1 2 8 6 1 2 。
四.程序填空(每空1分,共8分)
下面程序的功能是:计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。(顺读和倒读都一样的字符串称为“回文”,如level就是回文)请填空。
#include <stdio.h>
int sumhw( char **p, int n); char jughw(char *str);
main(int argc, char *argv[])
{ int s;
if (argc<2) puts("请输入有效参数");
else
{ printf("共有%d个回文串\n", s);
}
}
int sumhw(char **p,int n)
{ char flag; int i, sum=0;
for(i=0; i<n; i++)
{ }
return sum;
}
char jughw(char *str)
{ char *p1, *p2; int n;
n=strlen(str); p1=str; p2= ;
while( )
{ if(*p1!=*p2) break; else {p1++; ; } }
return 'N';
else return 'Y';
}
五.编程题(30分)
1.用指针和数组两种方法实现如下功能:将一个字符串按逆序存放。(18分)
要求
(1)主函数中完成输入和输出字符串。
(2)逆序存放功能用子函数完成。
(1)数组法
#include <string.h>
#include <stdio.h>
#define N 20
void inv(char str[], int n)
{ int i, j, t;
for(i=0, j=n-1; i<=j; i++, j--) { t=str[i]; str[i]=str[j]; str[j]=t; }
}
void main(){ char str[N]; gets(str); inv(str, strlen(str)); puts(str); }
(2)指针法
#include <string.h>
#include <stdio.h>
#define N 20
void inv(char *str, int n)
{ char *i, *j, t;
for(i=str, j=str+n-1; i<=j; i++, j--) { t=*i; *i=*j; *j=t; }
}
void main(){ char str[N]; gets(str); inv(str, strlen(str)); puts(str); }
2.一个整型数组有10个元素,编程删除所有值为n的元素。(12分)
要求
(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。
(2)删除功能用子函数完成。
int m;
void del_element(int num[], int n)
{ int i, j;
for(i=0; i<m; i++)
if(num[i]==n)
{
for(j=i+1; j<m; j++) num[j-1]=num[j];
m--; i--;
}
}
void main()
{ int num[10], i, n; m=10;
for(i=0; i<10; i++) scanf("%d", &num[i]);
scanf("%d", &n); del_element(num, n);
for(i=0; i<m; i++) printf("%d ", num[i]);
}
…… 此处隐藏:1259字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:2018年结核病防治工作年终总结
下一篇:c语言程序设计期末试题B