长安大学网络教育《C语言程序设计》及其参考答案.docx
- 文档编号:24347234
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:17
- 大小:30.12KB
长安大学网络教育《C语言程序设计》及其参考答案.docx
《长安大学网络教育《C语言程序设计》及其参考答案.docx》由会员分享,可在线阅读,更多相关《长安大学网络教育《C语言程序设计》及其参考答案.docx(17页珍藏版)》请在冰豆网上搜索。
长安大学网络教育《C语言程序设计》及其参考答案
题号
一
二
三
四
五
六
七
八
九
十
总计
核查人签名
得分
阅卷人
一、选择题(每题1分,共20分)
1.若i为整型变量,i=0;则以下循环while(i=0)i++;()
A)执行10次;B)执行1次;C)一次也不执行;D)无限循环。
2.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回值是()
A)EOF;B)非零值;C)-1;D)0
3.设有如下枚类型定义:
enumcolor{red=3,yellow,blue=9,white,black};请问枚举变量black的值是()
A)1;B)11;C)12;D)2。
4.C语言规定,程序中各函数之间()
A)既允许直接递归调用也允许间接递归调用;
B)不允许直接递归调用也不允许间接递归调用;
C)允许直接递归调用不允许间接递归调用;
D)不允许直接递归调用允许间接递归调用。
5.有如下程序,程序的运行结果为:
()
main()
{
inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)
printf("%d",p[i]);
}
A)52B)51C)53D)97
6.设有变量说明:
inta[][2]={1,2,3,4};int*pa,(*pb)[2];则执行语句“pa=&a[0][0];pb=a”后,(*(pa+1))的值为:
()
A)3B)&a[1][0]C)2D)&a[0][1]
7.设有变量说明:
inta[][2]={1,2,3,4};int*pa,(*pb)[2];则执行语句“pa=&a[0][0];pb=a”后,(*(pb+1))的值为:
()
A)3B)&a[1][0]C)2D)&a[0][1]
8.C语言中的文件类型划分为()
A)索引文件和文本文件两种B)ASCII文件和二进制文件两种
C)只有文本文件一种D)只有二进制文件一种
9.在宏定义:
#definePI3.1415926中,用宏名PI代替一个()。
A)常量B)双精度数C)单精度数D)字符串
10.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()。
A)autoB)staticC)externD)register
11.C语言规定,基本数据类型的变量做实参时,它和对应形参之间的数据传递方式是()。
A)地址传递B)单向的值传递
C)由实参传递给形参,再由形参传递回实参D)由用户指定传递方式
12.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A)autoB)staticC)externD)register
13.判断字符串a和b是否相等,应当使用()。
A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))
14.若执行fopen函数时发生错误,则函数返回值是()。
A)0B)1C)EOFD)地址值
15.语句while(!
x)中的表达式!
x等价于()。
A)x==0B)x!
=0C)x!
=1D)x==1
16.当说明一个结构体类型变量时系统分配给它的内存是()。
A)各成员所需内存容量的总和;B)结构体中第一个成员所需内存数;
C)成员中占内存量最大者所需的容量;D)结构中最后—个成员所占内存量。
17.在对typedef的叙述中错误的是()。
A)用typedef可以定义各种类型名,但不能用来定义变量;
B)用typedef可以增加新类型;
C)用typedef只是将已存在的类型用一个新的标识符来代表;
D)使用typedef有利于程序的通用和移植。
18.在下面四种字符串说明或赋值中,不正确的是()。
A)char*p;p=“computer”;B)char*p={‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’};
C)charp[20];p=”computer”;D)charp[]=”computer”,q[]=”student”;
19.设prt1和prt2均为指向同一个int型一维数组的指针变量,k为int型变量,则下面不
能正确执行的赋值语句是()。
A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);
20.在循环语句的循环体中执行break语句,其作用是()。
A)跳出该循环体,提前结束循环
B)继续执行break语句之后的循环体各语句
C)结束本次循环,进行下次循环
D)终止程序运行
二、判断题(每题1分,共10分。
对打√,错打×)
1.C语言中,while和do-while循环的主要区别是:
do-while的循环体至少无条件的执行一次。
()
2.从多层循环嵌套中退出时,只能使用goto语句。
()
3.字符数组的字符串可以整体输入、输出。
()
4.C语言规定:
函数返回值类型由调用该函数时的主调函数类型所决定。
()
5.在不同函数中可以使用相同名字的变量。
()
6.在C语言程序中,函数的调用可以嵌套,但函数的定义不可以嵌套。
()
7.C语言的编译预处理就是对源程序进行初步的语法检查。
()
8.当说明一个共用体变量时系统分配给它的内存是各成员所需内存量的总和。
()
9.有定义:
inta[][2]={1,2,3,4},*pa;若要使*pa的值为a[0][0],则令pa=a即可。
()
10.如:
chara[]=”\t\r\\\0will\n”;则sizeof(a)的结果为10。
()
三读程序写结果(每题4分,共20分)
1.voidmain()
{
inta,b,c;
a=2;b=7;c=5;
switch(a>0)
{
case1:
switch(b<10)
{
case1:
printf("^");break;
case0:
printf("!
");break;
}
case0:
switch(c==5)
{
case0:
printf("*");break;
case1:
printf("#");break;
default:
printf("%%");break;
}
default:
printf("&");
}
printf("\n");
}
2.main()
{
intm=37,n=13;
while(m!
=n)
{
while(m>n)
m=m-n;
while(n>m)
n-=m;
}
printf("m=%d\n",m);
}
3.main()
{
inta[]={1,2,3,4,5};
intx,y,*p;
p=&a[0];
x=*(p+2);y=*(p+4);
printf("*p=%d,x=%d,y=%d",*p,x,y);
}
4.main()
{
ints[6][6],j,k;
for(j=0;j<6;j++)
for(k=0;k<6;k++)
*(*(s+j)+k)=j-k;
for(j=0;j<6;j++)
{
for(k=0;k<6;k++)
printf(“%4d”,*(*(s+j)+k));
printf(“\n”);
}
}
5.inta;
main()
{
inti;
i=a=1;
sub();
printf("a=%di=%d\n",a,i);
}
sub()
{
inti;
i=a=2;
}
四、程序填空(每空2分,共26分)
1.在数组a中查找用户输入的某个数x。
#defineN10
main()
{
inta[N]={23,56,11,87,91,35,41,44,60,6};
intp,x;
printf("\nPleaseEnterfindnumber:
");
;
p=0;
while()
p++;/*不断查找的过程*/
if()printf("%dPositionis%d\n",x,p);
elseprintf("%dcouldnotbefound\n",x);
}
2.判断m是不是素数。
算法:
如m能被2~m-1中的任何一个数整除,则不是素数。
main()
{
intm,i;
scanf("%d",&m);
if(m<=2)
{printf(“\n%d是素数!
”,m);return;}
for(i=2;i if(m%i==0) ; if() printf("%d是素数\n",m,i); else printf("%d不是素数,能被%d整除\n",m,i); } 3.下列程序将两个升序数组a、b合并到数组c中后,c仍为升序数组。 main() { inta[10]={1,2,5,8,9,10},intb[10]={1,3,4,8,12,18}; intj,k,l,c[20],max=9999; a[6]=b[6]=max; j=k=l=0; while(a[j]! =max||b[k]! =max) if(a[j] { c[l]=; l++; ; } else { c[l]=; l++; ; } for(j=0;j printf("%4d",c[j]); } 4.下列程序用来创建一个学生数据的单向链表。 创建中如输入的学号为零,则创建结束。 #defineLENsizeof(structstudent) structstudent { longnum; floatscore; structstudent*next; }; intn; structstudent*creat()/*此creat函数带回一个链表起始地址*/ { structstudent*head,*p1,*p2; intn=0; p1=p2=(structstudent*)malloc(LEN);/*开辟一个新单元*/ scanf("%ld,%f",&p1->num,&p1->score); head=NULL; while(p1->num! =0) { n++; if(n==1) ; else ; p2=p1; p1=; scanf("%ld,%f",&p1->num,&p1->score); } p2->next=; return(head); } 五、根据题意编程(共24分) 1.用递归方法将一个整数N转换成字符串。 例如,输入483,应输出字符串“483”。 N的位数不确定,可以是任意位数的整数。 2.用选择法或冒泡法对输入的十个字符(按ASCII码由小到大)进行排序。 3.建立一个链表,每个结点包括: 学号、姓名、年龄。 数据从键盘上输入,输入的学号为0时结束输入。 链表建立后,将该链表中数据输出到屏幕上并存放到文件student.dat中。 一、选择题(每题1分,共20分) 1 2 3 4 5 6 7 8 9 10 C B B A C C B B D B 11 12 13 14 15 16 17 18 19 20 B A D A A A B C B A 二、判断题: (正确的划“√”,错误的划“×”。 每小题1分,共10分) 1 √ 2 √ 3 √ 4 × 5 √ 6 √ 7 × 8 × 9 × 10 √ 三、读程序写结果(每题4分,共20分) 1 ^#& 2 m=1 3 *p=1,x=3,y=5 4 0-1-2-3-4-5 10-1-2-3-4 210-1-2-3 3210-1-2 43210-1 543210 5 a=2i=1 四、读懂程序并填空(每空2分,共26分) 1 scanf(“%d”,&x); x! =a[p]&&p p 2 break i>=m 3 a[j] j++ b[k] k++ 4 head=p1 p2->next=p1 (structstudent*)malloc(LEN) NULL 六、根据题意编程(共24分) 1 #include"stdio.h" voidconvert(longn) { longi; if((i=n/10)! =0) convert(i); putchar(n%10+'0'); } voidmain(void) { longn; printf("\n请输入一个整数: "); scanf("%ld",&n); printf("转换成字符串为: "); if(n<0) { putchar('-'); n=-n; } convert(n); } 2 #include"stdio.h" #defineN100 voidsort(charstr[],intlen) { inti,j; chart; for(j=1;j for(i=0;i if(str[i]>str[i+1]) { t=str[i]; str[i]=str[i+1]; str[i+1]=t; } } voidsort(charstr[],intlen) { inti,j,k; chart; for(j=0;j { k=j; for(i=j+1;i if(str[i] k=i; t=str[k]; str[k]=str[j]; str[j]=t; } } voidmain(void) { inti,flag=1,len; charstr[N]; for(;flag;) { printf("请输入一个字符串: \n"); gets(str); len=strlen(str); if(len>N) printf("字符串太长,请重输,不要超过%d个字符\n",N); else flag=0; } sort(str,len); printf("排序的结果为: \n"); for(i=0;i printf("%c",str[i]); } 3 #include"stdio.h" #defineLENsizeof(structstudent) structstudent { longnum; charname[8]; intage; structstudent*next; }; structstudent*creat(void) { structstudent*p1,*p2,*head; intn=0; p1=p2=(structstudent*)malloc(LEN); printf("请输入学号: "); scanf("%ld",&p1->num); head=NULL; while(p1->num! =0) { printf("请输入姓名: "); scanf("%s",p1->name); printf("请输入年龄: "); scanf("%d",&p1->age); n++; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(structstudent*)malloc(LEN); printf("请输入学号: "); scanf("%ld",&p1->num); } free(p1); if(head) p2->next=NULL; returnhead; } voidprint(structstudent*head) { structstudent*p=head; while(p) { printf("\n姓名: %s,学号: %ld,年龄: %d",p->name,p->num,p->age); p=p->next; } } voidsave(structstudent*head) { structstudent*p=head; FILE*fp; fp=fopen("stud","wb"); for(;p;) { if(fwrite(p,sizeof(structstudent),1,fp)! =1) printf("Filewriteerror\n"); p=p->next; } fclose(fp); } structstudent*access(void) { structstudent*p1,*p2,*head=NULL; FILE*fp; fp=fopen("stud","rb"); intn=0; p1=p2=(structstudent*)malloc(LEN); while (1) { if(fread(p1,sizeof(structstudent),1,fp)! =1) printf("Filereaderror\n"); n++; if(n==1) head=p1; else p2->next=p1; p2=p1; if(p1->next==NULL) break; p1=(structstudent*)malloc(LEN); } if(head) p2->next=NULL; returnhead; } voidmain(void) { structstudent*head; printf("请输入各结点数据: \n"); head=creat(); if(head) { print(head); save(head); free(head); head=access(); print(head); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 长安 大学 网络 教育 语言程序设计 及其 参考答案