admin 管理员组文章数量: 1184232
2025年1月2日发(作者:js浏览器对象)
“程序设计基础--C”试卷
试题一、单项选择题(每小题 2 分,共 20 分)
1.C 语言程序的三种基本结构是顺序结构、选择结构和______结构。
A、循环 B、递归 C、转移 D、嵌套
2.若x是单精度实型变量,表达式 (x = 10/4) 的值是_____ 。
A、2.5 B、 2.0 C、 3 D、 2
3. 表达式 !x 等价于_____。
A、x==0 B、x==1 C、x != 0 D、x != 1
4.若变量已正确定义且 k 的值是 4,计算表达式 ( j = k--) 后,_____。
A、j=3, k=3 B、j=3, k=4 C、j=4, k=4 D、j=4, k=3
5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。
A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算
6.C语言中,形参的缺省的存储类说明是______。
A、 auto B、static C、 register D、extern
7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。
A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f;
8.表达式 sizeof(“key”) 的值是______。
A、1 B、2 C、3 D、4
9.将程序prog.c编译后运行:prog –nla hello world 则 *(*(argv+2)) 是______。
A、’p’ B、‘-‘ C、‘h’ D、‘w’
10.若a是整型变量,表达式 ~(a ^ ~a ) 等价于______。
A、~a B、1 C、0 D、2
试题二、填空题(每小题 3 分,共 24 分)
1.写出语句 printf ("%d, %o, %x", 0x12, 12, 012); 的输出结果。
2.写出下列程序段的输出结果。
#define F(x) x - 2
#define D(x) x*F(x)
printf("%d,%d", D(3), D(D(3))) ;
3.写出下列程序段的输出结果。
int k ; char *s = “ABC”;
for( k=10; k != 0; k-- ) ;
printf ( "%d", k );
while( *s++ ) putchar( *s );
4.写出下列程序的输出结果。
void fun(int k)
{ static int a;
printf(”%d,”, a);
第 1 页
a += k;
}
main()
{ int k;
for (k=1; k<=3; k++)
fun(k);
}
5.写出下列程序的输出结果。
main( )
{ struct st {
int x, y;
} a[4]={{10,20},{30,40},{50,60},{70,80}};
struct st *p=a;
printf("%d,", p++->x);
printf("%d,", ++p->y);
printf("%dn", (a+3)->x);
}
6.写出下列程序的输出结果。
#include "stdio.h"
void main()
{ int k, j, m, n, a[6][6], b[6];
m=3, n=2;
for(k=0; k for(j=0; j a[k][j] = k*n+j+1; for(k=0; k b[k] = 0; for(j=0; j b[k] += a[k][j]; } for(k=0; k printf("%d, ", b[k]); } 第 2 页 7.写出下列程序的输出结果。 # include long fib(int g) { switch(g){ case 0: return(0); case 1: case 2: return(2); } printf("g=%d,", g); return ( fib(g-1) + fib(g-2) ); } main() { long k; k = fib(4); printf("k=%ldn", k); } 8.用typedef定义一个长度为10的整型数组NUM。 试题三、程序阅读题(每题 5 分,共 20 分) 1.写出下列程序的输出结果。 #include int x, y, z; void p(int *x, int y) { --*x; y++; z = *x+y; printf("%d,%d,", *x,y); } void main() { x=5; y=2; z=0; p(&x, y); printf("%d,%d,%d--", x, y, z); p(&y, x); printf("%d,%d,%dn", x, y, z); } 2.写出下列程序的输出结果,并指出该程序的功能。 #include void main() { int x, k; x =14; for ( k = 0; x!=0; x &= x-1 ) ++k; printf("%dn", k); } 3.写出下列程序的输出结果。 第 3 页 #include void main() { int v[]={6,3,4,1,2}; int n=5; int gap, j, k, temp; for( gap = n/2; gap > 1; gap /= 2 ) for( j = gap; j < n; j++ ) for( k = j-gap; k >= 0 && v[k] > v[k+gap]; k -= gap ){ temp = v[k]; v[k] = v[k+gap]; v[k+gap] = temp; } for(k=0; k<5; k++) printf("%d, ", v[k]); } 4.输入1 2 3 4 5 0后,写出下列程序的输出结果。 #define LEN sizeof(struct line) #define NULL 0 struct line{ int num ; struct line *next ; } main() { struct line *p1 , *p2 , *head ; int j, k = 0; p1 = p2 = head = (struct line *) malloc (LEN) ; scanf("%d", &p1->num) ; while (p1->num != 0){ p1 = (struct line *) malloc (LEN) ; scanf("%d", &p1->num) ; if ( p1->num == 0 ) p2->next = NULL ; else{ p2->next = p1 ; p2 = p1 ; } k++; } p2->next = head ; p1 = head->next ; p1 = p1->next ; for ( j=1 ; j <= k ; j++){ printf("--> %d ", p1->num) ; p1 = p1->next ; } } 第 4 页 试题四、程序填空题(每空 2 分,共 20 分) 1.输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的 距离. #include void main() { struct{ int x, y; float length; } point[10]; int k, sub=0; for(k = 0; k <10; k++){ scanf("%d%d", &point[k].x, &point[k].y); point[k].length = (1) } for(k=1; k<10; k++) if( (2) ) (3) printf("(%d,%d) %fn", point[sub].x, point[sub].y, point[sub].length); } 2.将输入的 n 个字符串连接成1个字符串 , 然后输出该字符串. #include #include void main() { char str[10][20], string[200]; int k, n; scanf("%d", &n); for (k=0; k gets(str[k]); (4) for (k=1; k (5) puts(string); } 第 5 页 3.函数 xtoi 的功能是将放在字符串中的十六进制数(可以出现’0’~’9’、’a’~’f)转换成十进制整 数。例如:调用 xtoi("1f") 将返回31。 xtoi( (6) ) { int k, d=0; for(k=0; s[k] == ’ ’ || s[k] == ’t’; k++); while(s[k] >= ’0’ && s[k] <= ’9’ || s[k] >= ’a’ && s[k] <= ’f’ ){ if (s[k] >= '0' && s[k] <= '9') (7) if (s[k] >= 'a' && s[k] <= 'f') (8) k++; } return d; } 4.函数month_day(year, yearday, &month, &day) 的功能是将给定的某年第几天转换为相应的 月和日。例如:调用month_day(1988, 60, &m, &d) 后,m 的值是2, d 的值是29(即1988年的 第60天是1988年2月29日)。判别闰年的条件:能被4整除但不能被100整除或能被400整除。 void month_day(int year, int yearday, int *pmonth, int *pday) { static int day_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int k, leap; leap = year % 4==0 && year % 100 != 0 || year % 400 == 0; for(k=1; yearday > day_tab[leap][k]; k++) (9) *pmonth = (10) *pday = yearday; } 试题五、编程题 ( 共 16 分) 1.[程序说明] (5分) 请编写函数 sum_fact(number),返回number 的因子之和。(能整除number的数就是它 的因子,number定义为int) 例如sum_fact(6) = 12 (因为1, 2, 3, 6是6的因子) 2.[程序说明] (11分) 文本文件 中存放了一批整数,将其中每个数的因子之和顺序写入文件 。 ( 必须调用第1小题中定义的函数 sum_fact(number) 计算 number 的因子之和 ) 例:若文件 中存放了1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入 文件。 第 6 页
版权声明:本文标题:C语言程序设计试题第十套-试卷 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735840797a1694778.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论