⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(四).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
数组
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是(   )
   (A) 整型常量
   (B) 整型表达式
   (C) 整型常量或整型表达式
   (D) 任何类型的表达式
2、以下对一维整型a的正确说明是(   )
   (A) int a(10);
   (B) int n=10,a[n];
   (C) int n;
       scnaf("%d",&n);
       int a[n];
   (D) #define SIZE 10
       int a[SIZE];
3、若有说明:int a[10]; 则对a数组元素的正确引用是(   )
   (A) a[10]
   (B) a[3,5]
   (C) a(5)
   (D) a[10-10]
4、在C语言中,一维数组的定义方式为:类型说明符 数组名 (   )
   (A) [常量表达式]
   (B) [整型表达式]
   (C) [整型常量]或[整型表达式]
   (D) [整型常量]
5、以下能对一维数组a进行正确初始化的语句是(   )
   (A) int a[10]=(0,0,0,0,0);
   (B) int a[10]={};
   (C) int a[]={0};
   (D) int a[10]={10*1};
6、以下对二维数组a的正确说明是(   )
   (A) int a[3][];
   (B) float a(3,4);
   (C) double a[1][4];
   (D) int a(3)(4);
7、若有说明:int a[3][4]; 则对a数组元素的正确引用是(   )
   (A) a[2][4]
   (B) a[1,3]
   (C) a[1+1][0]
   (D) a(2)(1)
8、若有说明:int a[3][4]; 则对a数组元素的非法引用是(   )
   (A) a[0][2*1]
   (B) a[1][3]
   (C) a[4-2][0]
   (D) a[0][4]
9、以下能对二维数组a进行正确初始化的语句是(   )
   (A) int a[2][]={{1,0,1},{5,2,3}};
   (B) int a[][3]={{1,2,3},{4,5,6}};
   (C) int a[2][4]={1,2,3},{4,5},{6}};
   (D) int a[][3]={{1,0,1},{},{1,1}};
10、以下不能对二维数组a进行正确初始化的语句是(   )
   (A) int a[2][3]={0};
   (B) int a[][3]={{1,2},{0}};
   (C) int a[2][3]={{1,2},{3,4},{5,6}};
   (D) int a[][3]={1,2,3,4,5,6};
11、若有说明:int a[3][4]={0}; 则下面正确的叙述是(   )
   (A) 只有元素a[0][0]可得到初值0
   (B) 此说明语句不正确
   (C) 数组a中各元素都可得到初值,但其值不一定为0
   (D) 数组a中每个元素均可得到初值0
12、若有说明:int a[][4]={0,0}; 则下面不正确的叙述是(   )
   (A) 数组a的每个元素都可得到初值0
   (B) 二维数组a的第一维大小为1
   (C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
   (D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
13、若有说明:int a[3][4]; 则数组a中各元素(   )
   (A) 可在程序的运行阶段得到初值0
   (B) 可在程序的编译阶段得到初值0
   (C) 不能得到确定的初值
   (D) 可在程序的编译或运行阶段得到初值0
14、以下各组选项中,均能正确定义二维实型数组a的选项是(   )
   (A) float a[3][4];
       float a[][4];
       float a[3][]={{1},{0}};
   (B) float a(3,4);
       float a[3][4];
       float a[][]={{0};{0}};
   (C) float a[3][4];
       static float a[][4]={{0},{0}};
       auto float a[][4]={{0},{0},{0}};
   (D) float a[3][4];
       float a[3][];
       float a[][4]
15、下面程序(   )(每行程序前面的数字表示行号)
	1	void main()
	2	{
	3		int a[3]={3*0};
	4		int i;
	5		for(i=0;i<3;i++) scanf("%d",&a[i]);
	6		for(i=1;i<3;i++) a[0]=a[0]+a[i];
	7		printf("%d\n",a[0]);
	8	}
   (A) 第3行有错误
   (B) 第7行有错误
   (C) 第5行有错误
   (D) 没有错误
16、下面程序(   )(每行程序前面的数字表示行号)
	1	void main()
	2	{
	3		float a[10]={0.0};
	4		int i;
	5		for(i=0;i<3;i++) scanf("%d",&a[i]);
	6		for(i=1;i<10;i++) a[0]=a[0]+a[i];
	7		printf("%f\n",a[0]);
	8	}
   (A) 没有错误
   (B) 第3行有错误
   (C) 第5行有错误
   (D) 第7行有错误
17、下面程序中有错误的行是(   )(每行程序前面的数字表示行号)
	1	void main()
	2	{
	3		int a[3]={1};
	4		int i;
	5		scanf("%d",&a);
	6		for(i=1;i<3;i++) a[0]=a[0]+a[i];
	7		printf("a[0]=%d\n",a[0]);
	8	}
   (A) 3
   (B) 6
   (C) 7
   (D) 5
18、下面程序(   )(每行程序前面的数字表示行号)
	1	void main()
	2	{
	3		int a[3]={0};
	4		int i;
	5		for(i=0;i<3;i++) scanf("%d",&a[i]);
	6		for(i=1;i<4;i++) a[0]=a[0]+a[i];
	7		printf("%d\n",a[0]);
	8	}
   (A) 没有错误
   (B) 第3行有错误
   (C) 第5行有错误
   (D) 第6行有错误
19、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为(   )(假设a[0][0]位于数组的第一个位置上。)
   (A) i*m+j
   (B) j*m+i
   (C) i*m+j-1
   (D) i*m+j+1
20、对以下说明语句的正确理解是(   )
	int a[10]={6,7,8,9,10};
   (A) 将5个初值依次赋给a[1]至a[5]
   (B) 将5个初值依次赋给a[0]至a[4]
   (C) 将5个初值依次赋给a[6]至a[10]
   (D) 因为数组长度与初值的个数不相同,所以此语句不正确
21、以下不正确的定义语句是(   )
   (A) double x[5]={2.0,4.0,6.0,8.0,10.0};
   (B) int y[5]={0,1,3,5,7,9};
   (C) char c1[]={'1','2','3','4','5'};
   (D) char c2[]={'\x10','\xa','\x8'};
22、若有说明:int a[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是(   )
   (A) 2
   (B) 3
   (C) 4
   (D) 无确定值
23、若二维数组a有m列,则在a[i][j]前的元素个数为(   )
   (A) j*m+i
   (B) i*m+j
   (C) i*m+j-1
   (D) i*m+j+1
24、定义如下变量和数组:
	int k;
	int a[3][3]={1,2,3,4,5,6,7,8,9};
    则下面语句的输出结果是(   )
	for(k=0;k<3;k++) printf("%d",a[k][2-k]);
   (A) 3 5 7
   (B) 3 6 9
   (C) 1 5 9
   (D) 1 4 7
25、若有以下程序段:
	......
	int a[]={4,0,2,3,1},i,j,t;
	for(i=1;i<5;i++)
	{
		t=a[i]; j=i-1;
		while(j>=0&&t>a[j]){ a[j+1]=a[j]; j--;}
		a[j+1]=t;
	}
	......
    则该程序段的功能是(   )
   (A) 对数组a进行插入排序(升序)
   (B) 对数组a进行插入排序(降序)
   (C) 对数组a进行选择排序(升序)
   (D) 对数组a进行选择排序(降序)
26、以下正确的定义语句是(   )
   (A) int a[1][4]={1,2,3,4,5};
   (B) float x[3][]={{1},{2},{3}};
   (C) long b[2][3]={{1},{1,2},{1,2,3}};
   (D) double y[][3]={0};
27、下面程序的运行结果是(   )
	void main()
	{
		int a[6][6],i,j;
		for(i=1;i<6;i++)
			for(j=1;j<6;j++)
				a[i][j]=(i/j)*(j/i);
		for(i=1;i<6;i++)
		{
			for(j=1;j<6;j++)
				printf("%2d",a[i][j]);
			printf("\n");
		}
	}
   (A) 11111
       11111
       11111
       11111
       11111
   (B) 00001
       00010
       00100
       01000
       10000
   (C) 10000
       01000
       00100
       00010
       00001
   (D) 10001
       01010
       00100
       01010
       10001
28、下面程序的运行结果是(   )
	void main()
	{
		int a[6],i;
		for(i=1;i<6;i++)
		{
			a[i]=9*(i-2+4*(i>3))%5;
			printf("%2d",a[i]);
		}
	}
   (A) -40404
   (B) -40403
   (C) -40443
   (D) -40440
29、下面是对s的初始化,其中不正确的是(   )
   (A) char s[5]={"abc"};
   (B) char s[5]={'a','b','c'};
   (C) char s[5]="";
   (D) char s[5]="abcdef";
30、下面程序段的运行结果是(   )
	char c[5]={'a','b','\0','c','\0'};
	printf("%s",c);
   (A) 'a''b'
   (B) ab
   (C) ab c
   (D) abc
31、对两个数组a和b进行如下初始化
	char a[]="ABCDEF";
	char b[]={'A','B','C','D','E','F'};
    则以下叙述正确的是(   )
   (A) a与b数组完全相同
   (B) a与b长度相同
   (C) a和b中都存放字符串
   (D) a数组比b数组长度长
32、有两个字符数组a、b,则以下正确的输入语句是(   )
   (A) gets(a,b);
   (B) scanf("%s%s",a,b);
   (C) scanf("%s%s",&a,&b);
   (D) gets("a"),gets("b");
33、有字符数组a[80]和b[80],则正确的输出语句是(   )
   (A) puts(a,b);
   (B) printf("%s,%s",a[],b[]);
   (C) putchar(a,b);
   (D) puts(a),puts(b);
34、下面程序段的运行结果是(   )
	char a[7]="abcdef";
	char b[4]="ABC";
	strcpy(a,b);
	printf("%c",a[5]);
   (A) 空格
   (B) \0
   (C) e
   (D) f
35、有下面的程序段
	char a[3],b[]="China";
	a=b;
	printf("%s",a);
    则(   )
   (A) 运行后将输出China
   (B) 运行后将输出Ch
   (C) 运行后将输出Chi
   (D) 编译出错
36、下面程序段的运行结果是(   )
	char c[]="\t\v\\\0will\n";
	printf("%d",strlen(c));
   (A) 14
   (B) 3
   (C) 9
   (D) 字符串中有非法字符,输出值不确定
37、判断字符串a和b是否相等,应当使用(   )
   (A) if(a==b)
   (B) if(a=b)
   (C) if(strcpy(a,b))
   (D) if(strcmp(a,b))
38、判断字符串s1是否大于字符串s2,应当使用(   )
   (A) if(s1>s2)
   (B) if(strcmp(s1,s2))
   (C) if(strcmp(s2,s1)>0)
   (D) if(strcmp(s1,s2)>0)
39、下面程序段是输出两个字符串中对应相等的字符。请选择填空①(   )
	char x[]="programming";
	char y[]="Fortran";
	int i=0;
	while(x[i]!='\0'&&y[i]!='\0')
		if(x[i]==y[i]) printf("%c",  ①  );
		else i++;
   (A) x[i++]
   (B) y[++i]
   (C) x[i]
   (D) y[i]
40、下面描述正确的是(   )
   (A) 两个字符串所包含的字符个数相同时,才能比较字符串
   (B) 字符个数多的字符串比字符个数少的字符串大
   (C) 字符串"STOP "与"STOP"相等
   (D) 字符串"That"小于字符串"The"
41、下述对C语言字符数组的描述中错误的是(   )
   (A) 字符数组可以存放字符串
   (B) 字符数组的字符串可以整体输入、输出
   (C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
   (D) 不可以用关系运算符对字符数组中的字符串进行比较
42、有已排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规律插入到a中。请选择填空①(   )②(   )
	#include<stdio.h>
	void main()
	{
		char a[20]="cehiknqtw";
		char s[]="fbla";
		int i,k,j;
		for(k=0;s[k]!='\0';k++)
		{
			j=0;
			while(s[k]>=a[j]&&a[j]!='0') j++;
			for(  ①  ;)   ②  ;
			a[j]=s[k];
		}
		puts(a);
	}
① (A) i=strlen(a)+k; i>=j; i--
   (B) i=strlen(a); i>=j; i--
   (C) i=j; i<=strlen(a)+k; i++
   (D) i=j; i<=strlen(a); i++
② (A) a[i]=a[i+1]
   (B) a[i+1]=a[i]
   (C) a[i]=a[i-1]
   (D) a[i-1]=a[i]
43、下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中,请选择填空①(   )②(   )③(   )
	#include<stdio.h>
	void main()
	{
		char a[]="acegikm";
		char b[]="bdfhjlnpq";
		char c[80],*p;
		int i=0,j=0,k=0;
		while(a[i]!='\0'&&b[j]!='\0')
		{
			if(a[i]<b[j] {  ①  }
			else {  ②  }
			k++;
		}
		c[k]='\0';
		if(  ③  ) p=b+j;
		else p=a+i;
		strcat(c,p);
		puts(c);
	}
① (A) c[k]=a[i];i++;
   (B) c[k]=a[j];i++;
   (C) c[k]=a[i];j++;
   (D) c[k]=a[j];j++;
② (A) c[k]=a[i];i++;
   (B) c[k]=a[j];i++;
   (C) c[k]=a[i];j++;
   (D) c[k]=a[j];j++;
③ (A) a[i]=='\0'
   (B) a[i]!='\0'
   (C) a[i-1]=='\0'
   (D) a[i-1]1='\0'
44、下面程序的功能是将字符s中所有的字符c删除。请选择填空①(   )
	#include<stdio.h>
	void main()
	{
		chr s[80];
		int i,j;
		gets(s);
		for(i=j=0;s[i]!='\0';i++)
			if(s[i]!='c')   ①  ;
		s[j]='\0';
		puts(s);
	}
   (A) s[j++]=s[i]
   (B) s[++j]=s[i]
   (C) s[j]=s[i]; j++
   (D) s[j]=s[i]
45、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空①(   )
	#include<stdio.h>
	void main()
	{
		char s[80],c1,c2=' ';
		int i=0,num=0;
		gets(s);
		while(s[i]!='\0')
		{
			c1=s[i];
			if(i==0) c2=' ';
			else c2=s[i-1];
			if(  ①  ) num++;
			i++;
		}
		printf("There are %d words.\n",num);
	}
   (A) c1==' ' && c2==' '
   (B) c1!=' ' && c2==' '
   (C) c1==' ' && c2!=' '
   (D) c1!=' ' && c2!=' '
46、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char ch[7]={"12ab56"};
		int i,s=0;
		for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
			s=10*s+ch[i]-'0';
		printf("%d\n",s);
	}
   (A) 1
   (B) 1256
   (C) 12ab56
   (D) 1
       2
       5
       6
47、当运行以下程序时,从键盘输入:aa bb<CR>
				  cc dd<CR>
    (<CR>表示回车),则下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char a1[5],a2[5],a3[5],a4[5];
		scanf("%s%s",a1,a2);
		gets(a3); gets(a4);
		puts(a1); puts(a2);
		puts(a2); puts(a4);
	}
   (A) aa
       bb

       cc dd
   (B) aa
       bb
       cc
       dd
   (C) aa
       bb
       cc dd
       ee
   (D) aa bb
       cc
       dd
48、当运行以下程序时,从键盘输入:ab<CR>
				  c<CR>
				  def<CR>
    (<CR>表示回车),则下面程序的运行结果是(   )
	#include<stdio.h>
	#define N 6
	void main()
	{
		char c[N];
		int i=0;
		for( ; i<N; c[i]=getchar(),i++);
		for(i=0; i<n; i++) putchar(c[i]);
	}
   (A) abcdef
   (B) a
       b
       c
       d
       e
       f
   (C) b
       c
       d
   (D) ab
       c
       d
49、当运行以下程序时,从键盘输入:AhaMA Aha<CR>(<CR>表示回车),则下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char s[80],c='a';
		int i=0;
		scanf("%s",s);
		while(s[i]!='\0')
		{
			if(s[i]==c) s[i]=s[i]-32;
			else if(s[i]==c-32) s[i]=s[i]+32;
			i++;
		}
		put(s);
	}
   (A) ahAMa
   (B) AhAMa
   (C) AhAMa ahA
   (D) ahAMa ahA
50、下面程序的运行结果是(   )
	#include<stdio.h>
	#include<sring.h>
	void main()
	{
		char a[80]="AB", b[80]="LMNP";
		int i=0;
		strcat(a,b);
		while(a[i++]!='\0') b[i]=a[i];
		puts(b);
	}
   (A) LB
   (B) ABLMNP
   (C) AB
   (D) LBLMNP
51、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char str[]="SSSWLIA",c;
		int k;
		for(k=2;(c=str[k])!='\0';k++)
		{
			switch(c)
			{
			case 'I': ++k; break;
			case 'L': continue;
			default: putchar(c); continue;
			}
			putchar('*');
		}
	}
   (A) SSW*
   (B) SW*
   (C) SW*A
   (D) SW
52、下面程序的运行结果是(   )
	#include<stdio.h>
	void main()
	{
		char a[]="morning",t;
		int i,j=0;
		for(i=1;i<7;i++)
			if(a[j]<a[i]) j=i;
		t=a[j]; a[j]=a[7];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -