山西师范大学2022年C语言程序设计专升本

本试卷为山西师范大学2022年C语言程序设计专升本,题目包括:填空题。

本卷包括如下题型:

一、填空题

C语言程序设计专升本

一、填空题 (共40题,每题2.5分,共计100分)

1、以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。
#include<stdio.h>
main() {
int a〔10],*p,*s;
for(p=a;p-a<10;p++)scanf("%d",p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;
printf("max=%d\n",________);
}
2、以下程序运行后的输出结果是 ________ 。
char *ss(char *s)
{
char *p, t;
p=s+1;
t=*s;
while(*p)
{
*(p-1) = *p;
p++;
}
*(p-1)=t;
return s;
}
main()
{
char *p, str[10]="abcdefgh";
p = ss(str) ;
printf("%s\n",p);
}
3、以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回null。请填空。 char *fun(char *str,char c)
{
int n=0;
char *p=str;
if(p!=null) while(p[n]!=c&&p[n]!=′\0′)n++;
if(p[n]==′\0′) return null;
return(________);
}
4、以下程序中给指针p分配三个double型动态内存单元,请填空。
#include <stdlib.h>
main ( )
{
double *p;
p=(double *) malloc( ________);
p[0]=1.5;
p[1]=2.5;
p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
5、已有定义如下:
struct node
{
int data;
struct node *next;
}
*p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。 p = (struct node *)malloc( ________ );
6、下列程序运行时,若输入1abcedf2df<回车> 输出结果为 ________ 。
#include <stdio.h>
main()
{
char a=0,ch;
while((ch=getchar())!=‘\n’)
{
if(a%2!=0&&(ch>=‘a’&&ch<=‘z’)) ch=ch-‘a’+‘a’;
a++;
putchar(ch);
}
printf("\n");
}
7、ferror()用来检测文件读写时是否发生错误,若发生读写错误,则返回值是__________。
8、c语言中对文件读写之前必须先打开文件,文件的打开是通过调用________函数来实现。
9、以下程序的输出结果是________。
main ( )
{
if(2*2==5<2*2==4) printf("t");
else printf("f");
}
10、有以下程序
#include<stdio.h>
main() {
int n[2],i,j;
for(i=0;i<2;i++) n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++) n[j]=n[i]+1;
printf("%d\n",n[1]);
} 程序运行后的输出结果是________。
11、以下程序的执行结果是____。
#include<stdio.h>
void main()
{
char c='a'+10;
printf("c=%c\n",c);
}
12、在c语言中,用转义字符 \' 表示______________。答题提示:双引号/单引号/反斜线/横向跳格/回车换行
13、以下程序的输出结果是_____________。
main()
{
int a=10,b=10;
printf("%da%d",a――,――b);
}
14、在c语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是________。 我的答案: break
15、以下函数值的类型是【1】。
fun (float x)
{
float y;
y= 3*x-4;
return y;
}
16、c语句分为______大类。
17、下列程序段的运行结果是_____。intb=20,*q;
q=&b; printf("%d",*q);
18、sacii中小写字母-(____)=大写字母
19、已知"float a=3.5;int b=12;",则算术表达式"(int)(a+b/5)"的值是________。
20、若有"int a[3][2]={{1,2},{3},{4,5}};",则a[1][1]的值是________。
21、有以下程序
#include <string.h>
main()
{
char a[]={'d','e','f','g','h','\0'};
int j;
j=strlen(a);
printf("%d\n",j);
}
程序运行后的输出结果是________。
22、设有变量定义: int a=10,c=9;
则表达式(--a!=c++)?--a:++c 的值是________。
23、下面程序的运行结果是________。
#include<stdio.h>
main()
{
int i;
for(i=1;i<=5;i++)
switch(i%2)
{
case 0:
i++;
printf("#");
break;
case 1:
i+=2;
printf("*");
default:
printf("\n");
}
}
24、下列程序的运行结果是: ________
#include <string.h>
char *ss(char *s)
{
return s+strlen(s)/2;
}
main( )
{
char *p,*str="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
25、定义枚举类型时采用的关键字是________。
26、下列程序段的运行结果是________。
void fun()
{
int a=3;
}
main()
{
int a=1;
fun(- );
printf("a=%d",a);
}
27、"空"指针值用______表示
28、已知"float a=3.5;
int b=12;
",则算术表达式"a+b/5"的值是_____________。
29、程序运行结果是________。
void swap(int a[2])
{
int t;
t=a[0];
a[0]=a[1];
a[1]=t;
}
void main()
{
int x[2]={5,8};
swap(x);
printf("x[0]=%d,x[1]=%d\n",x[0],x[1]);
}
30、将arr传参到子函数,接受处()内函数定义该怎么写?
31、输入一个字符,如果它是大写字母,则把它变成小写字母,如果它是一个小写字母,则把它变成大写字母,其它字符不变。请分析程序填空。
main()
{
char ch;
scanf("%c",&ch);
if(【1】________) ch=ch+32;
else if(ch>='a'&&ch<='z') 【2】________;
printf("%c",ch);
}
32、下面程序的功能是用―辗转相除法‖求两个正整数的最大公约数。请分析程序填空。
#include <stdio.h>
main()
{
int r, m, n;
scanf("%d%d", &m, &n);
if (m < n) ____1___;
r = m % n;
while (r)
{
m = n;
n = r;
r = ____2___;
}
printf("%d\n", n);
}
33、当运行以下程序时,从键盘输入1 2 3 4 5 -1<cr>, 则下面程序的运行结果是________。
#include <stdio.h>
main()
{
int k = 0, n;
do
{
scanf("%d", &n);
k += n;
}
while (n != -1);
printf("k=%d n=%d\n", k, n);
}
34、下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请分析程序填空。
#include<stdio.h>
main()
{
int i,j,k;
printf("\n hong bai hei\n");
for(i=0;i<=3;i++)for( 【1】________;j<=5;j++)
{
k=8-i-j;
if( 【2】________) printf(" %3d %3d %3d\n",i,j,k);
}
}
35、函数swap(arr,n) 可完成对arr 数组从第一个元素到第n 个元素两两交换。在运行调用函数中的如下语句后, a[0]和a[1]的值分别为【1】________,原因是【2】________。a[0]=1,a[1]=2;
swap(a,2);
36、当运行以下程序时,输入abcd,程序的输出结果是:________。 insert(char str[])
{
int i;
i=strlen(str);
while(i>0)
{
str[2*i]=str[i];
str[2*i-1]=′*′;
i--;
}
printf("%s\n",str);
}
main()
{
char str[40];
scanf("%s",str);
insert(str);
}
37、以下程序对输入两个整数,按从大到小的顺序输出。请在____内填入正确的内容。
void main()
{
int x,y,z;
scanf("%d,%d",&x,&y);
if(_________)
{
z=x;
_________
}
printf("%d,%d",x,y);
}
38、#include <stdio.h>
void main()
{
int num[10]={1,0,0,0,0,0,0,0,0,0};
int i,j;
for (j=0;j<10;++j)
for (i=0;i<j;++i) num[j]=num[j]+num[i];
for (j=0;j<10;j++) printf("%d ",num[j]);
}
39、构成数组的各个元素必须具有相同的______。
40、结构化设计中的三种基本结构是 顺序,选择,_____。