当前位置:首页 > 2012、2011、2010、2009年耀华杯历年竞赛 - C语言全卷(非专业带答案 - 褚氏点评版)
天津工业大学2012年耀华杯程序设计竞赛(非专业组C语言)
char str[6]; 则下列程序段中,不能正确地为str数组赋值的是 【39】 。 A) gets(str); C) scanf(\
B) strcpy(str,\
D) for(i=0;i<6;i++) scanf(\str[i]);
注意点:库函数scanf函数的使用方法,特别是实参“输入地址表列” 10.下列程序段的输出结果是 【40】 。
static int a[5][5],s=0,i,j; for(i=0;i<=4;i++) for(j=0;j<=2;j++) a[i][j]=i+j;
for(i=0;i<5;i++) s+=a[i][j]; printf(\A) 0
B) 7
C) 20
D) 不确定
注意点:static定义时自动赋初值
11.若定义 char *sp=\ 则printf(\的输出结果是 【41】 。 A) 7
知识点:转义字符
12.若有定义语句int x; 则下面关于指针变量pb的定义语句中正确的是 【42】 。 A) int pb=&x;
B) int *pb=&x;
C) int *pb=x;
D) int *pb=*x;
B) 8
C) 10
D) 11
知识点:指针变量的定义与赋初值的方法 13. 有以下程序,输出结果是 【43】 。 void fun (int a,int b,int c) { a=456; b=567; c=678; } void main()
{ int x=10, y=20,z=30; fun (x,y,z);
printf(\
} A) 30,20,10 C) 10,20,30
注意点:实参给形参的单向值传递 14.下列函数的功能是 【44】 。
fun (char *s, char *t)
第 5 页 共 47 页
B) 456,567,678 D) 678,567,456
天津工业大学2012年耀华杯程序设计竞赛(非专业组C语言)
{ }
while (*t++); t--;
while (*t++=*s++);
B) 将串s复制到串t中 D) 将串s 连接到串t之后
A) 求串的长度 C) 比较两个串的大小 注意点:空语句循环体
15.下面程序的输出是 【45】 。 void prtv(int *x) {
printf(\} void main()
{ int a=25; prtv(&a); } A) 23
B) 24
C) 25 D) 26
知识点:单目运算符的结合性
16.以下程序的输出结果是 【46】 。 #define M(x,y,z) x*y+z void main()
{ int a=1,b=2, c=3;
printf(\ } A) 12
B) 15
C) 17
D) 19
注意点:宏定义的“替换”本质,而非“计算”本质,宏定义==宏替换 17.设int型变量在内存中占2字节。下列程序段的执行结果是 【47】 。 typedef union
{ long i;int k[5];char c;} DATE; struct date
{ int x; DATE y; double z;}v;
DATE max;
printf(\A) 8
B) 18
C) 25
D) 30
知识点:union的定义与引用 知识点:结构体、共用体的嵌套定义
18.以下scanf函数调用语句中错误的是 【48】 。
struct pupil { char name[20]; int age, sex;
第 6 页 共 47 页
天津工业大学2012年耀华杯程序设计竞赛(非专业组C语言)
}pup[5], *p; p=pup;
A) scanf(\ p->age); C) scanf(\
B) scanf(\D) scanf(\
注意点:库函数scanf函数的使用方法,特别是实参“输入地址表列” 19.设整型变量x=2,则表达式x<<2的结果是 【49】 。 A) 0
知识点:左移运算符 引申知识点:位运算运算符
20.下列函数中,可以把浮点数保留两位小数写入到文件的是 【50】 。 A) fputc()
B) fputs()
C) fprintf()
D) fwrite()
B) 4
C) 8
D) 16
注意点:printf、fprintf的四舍五入功能 三、阅读程序题(每空3分,共18 分)
1.下列程序的运行结果是 【1】 。答案:x=2
main()
{ int a=2,b=3,c=4,d=5,x=0; if(a
if (!c) x=1; else x=2; else
if (d) x=3; else x=4;
printf(\}
知识点:else与if的配对规则
2.下列程序的运行结果是 【2】 。答案:m=8 n=22 #include
int m,n;
for(m=1,n=1;m<=100;m++) {
if(n>=20) break;
第 7 页 共 47 页
天津工业大学2012年耀华杯程序设计竞赛(非专业组C语言)
}
}
if(n%3) {
n+=3; continue;} n-=5;
printf(\
知识点:break与continue的语句功能
3.下面程序的输出是 【3】 。 答案:8 4 3 #include
知识点:熟悉常见排序程序(冒泡法、选择法) 4.下面程序的输出是 【4】 。 答案:2 int m=3;
int fun2(int x,int y) {
int m=27; return(x*y-m); }
void main() {
int a=7,b=5;
printf(\ }
知识点:内部变量、外部变量的定义方法、作用域 5.下面程序段的输出结果是 【5】 。答案:14 long fun(int n) { long s; if(n==1||n==2)
第 8 页 共 47 页
int i,j,t,a[10]={2,5,7,1,8,9,13,4,6,3}; for(i=0;i<8;i++)
for(j=0;j<9-i;j++)
if(a[i] { t=a[i];a[i]=a[i+1];a[i+1]=t;} printf(\
共分享92篇相关文档