ITAT 第九届 模拟题(江西赛区决赛) C语言程序设计 参考答案

第九届全国信息技术应用水平大赛江西赛区决赛模拟试题

C语言程序设计

C(D0916)试卷预览 试卷编号:(2545) 试题总分:150

 


  单项选择题
    1. 题干:下列符号串中,属于C语言合法标识符的个数为(  )。
_1_2_3,a-b-c,float,9cd,a3b4

     分数:2分
     选项:
         A:1  
         B:2  
         C:3  
         D:4  
    2. 题干:以下程序的输出是(  )。
#include
main()                           
{ int i,j=4;                  
  for(i=j; i<=2*j; i++)
 switch (i/j)
 {   case 0 :
     case 1: printf("*"); break;
     case 2: printf("#"); break;
 }
}

     分数:2分
     选项:
         A:*###  
         B:**##  
         C:***#  
         D:****#  
    3. 题干:以下程序运行后的输出结果是(  )。
#include"stdio.h"
sub(int *t,int n)
{
    int *p1,*p2;
    for(p1=t,p2=t;p1-t     if(*p1<*p2)p2=p1;
    return(*p2);
}
void main()
{
    int a[9]={9,36,19,39,26,5,6,33,15};
    printf("%d\n",sub(a,9));
}

     分数:2分
     选项:
         A:5  
         B:9  
         C:15  
         D:39  
    4. 题干:以下关于函数的说法中正确的是(  )。

     分数:2分
     选项:
         A:定义函数时,形参类型说明可放在函数体内  
         B:return语句后边的值不能为表达式  
         C:如果函数类型与返回值类型不一致,以函数类型为准  
         D:如果形参与实参的类型不一致,以实参为准  
    5. 题干:以下程序的输出为(  )。
int a=2;
int f(int *a)
{
    return(*a)++;
}
void main()
{
    int s=0;
    {int a=5;
     s+=f(&a);
    }
    s+=f(&a);
    printf("%d %d\n",a,s);
}

     分数:2分
     选项:
         A:2 7  
         B:2 10  
         C:3 7  
         D:3 11  
  


  多项选择题
    1. 题干:以下用户标识符,其中合法的有( )。

     分数:2分
     选项:
         A:return  
         B:f2_G3  
         C:A3-3  
         D:abc  
    2. 题干:以下不符合C语言语法的实型常量有( )。

     分数:2分
     选项:
         A:1.2E0.5  
         B:3.14.159E  
         C:.5E-3  
         D:E15  
    3. 题干:以下正确的if语句形式有( )。

     分数:2分
     选项:
         A:if (x>y && x!=y);  
         B:if (x==y) x+=y;  
         C:if (x!=y) scanf("%d",&x) else scanf("%d",&y);  
         D:if (x     4. 题干:以下关于数组描述错误的有( )。

     分数:2分
     选项:
         A:数组的大小是固定的,但可以有不同类型的数组元素  
         B:数组的大小是可变的,但所有数组元素的类型必须相同  
         C:数组的大小是固定的,所有数组元素的类型必须相同  
         D:数组的大小是可变的,可以有不同类型的数组元素  
    5. 题干:若以下选项中的变量已正确定义,则不正确的赋值语句有( )。

     分数:2分
     选项:
         A:x1=26.8%3;  
         B:x=3*x+x;  
         C:x3=0x12  
         D:x4=1+2=3  


  基础操作题
    1. 题干:编写程序,将一个字符串中的元音字母复制到另一个字符串,然后输出。
     分数:40分

void cpy(char s[],char c[])
{
	int i, j=0;
	for(i=0; s[i] != '\0'; i++)
	{
		if(s[i]=='a'||s[i]=='a'||s[i]=='e'||s[i]=='e'||s[i]=='i'||s[i]=='i'
			||s[i]=='o'||s[i]=='o'||s[i]=='u'||s[i]=='u')
		{
			c[j]=s[i];
			j++;
		}
	}
	c[j]='\0';
}
main()
{
	char str1[80], str2[80];
	printf("输入一个字符串:");
	gets(str1);
	cpy(str1, str2);
	printf("输出一个字符串:\n");
	puts(str2);
} 



    2. 题干:输入一个2~2000间的任意数字,要求给出其因式分解。
如:输入96,输出96=2*2*2*2*2*3。

     分数:40分

#include
#include
static int count=0;
int isprimernumber(int m)
{
	int i;
	for(i=2;i<=sqrt(m);i++)
		if(m%i==0)
			return 0;
		return 1;
}
void jiexi(int cur,int k)
{
	int i;
	if(isprimernumber(k))
	{
		if(count==0)
			printf("%d",k);
		else 
			printf("*%d",k);
		return; 
	}
	for(i=cur;i



  综合操作题
    1. 题干:输入两个字符串,要求将这两个字符串交叉连接。如串1为"ABCD",串2为"123456",则合并后的串为"A1B2C3D456"。

     分数:50分

#include
void merge(char str1[],char str2[],char res[])
{
	int i,j,count=0;
	for(i=0; str1[i] !='\0'&& str2[i] !='\0'; i++)
	{  
		res[count++] = str1[i];
		res[count++] = str2[i];
	}
	if(str1[i] =='\0')
	{
		for(j=i;str2[j] != '\0';j++)
			res[count++] = str2[j];
	}else
	{
		for(j=i;str1[j] != '\0';j++)
			res[count++] = str1[j];
	}
	res[count]='\0';
}
void main()
{
	char str1[100];
	char str2[100];
	char str3[200];
	printf("input string 1:");
	gets(str1);
	printf("input string 2:");
	gets(str2);
	
	merge(str1,str2,str3);
	printf("new: %s\n",str3);
}


《C(D0916)》的主观题答案 
1. 答案: b 
2. 答案: d 
3. 答案: a 
4. 答案: c 
5. 答案: c 

 

1. 答案: bd 
2. 答案: abd 
3. 答案: abd 
4. 答案: abd 
5. 答案: ad 



你可能感兴趣的:(ITAT)