1、选择题
1.1、若有定义语句:int a36; ,按在内存中的存放顺序,a 数组的第10个元素是 D
A)a04 B) a13 C)a03 D)a14
1.2、有数组 int a5 = {10,20,30,40,50}, 以下表达式编译错误是_____ B______。
A) a ++ ;
B) a5 = 20 ;
C) a + 20 ;
D) (a-3, a3) ;
1.3、以下错误的定义语句是 B__
A)int x\[\]3 = {{0},{1},{1,2,3}};
B)int x43 = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)int x4\[\] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)int x\[\]3 = {1,2,3,4};
1.4、设int i,x33={1,2,3,4,5,6,7,8,9};则下面语句
for(i=0;i<3;i++)
printf(″%d, ″,xi2-i);
的输出结果是 D
A)1, 4, 7 B)1, 5, 9 C)3, 6, 9 D)3, 5, 7
1.5、表达式"sizeof(int 12)/sizeof(int)"的值为__C__。
A) 2 B) 3 C) 4 D) 5
1.6有以下程序
#include main()
{ char s\[\]="012xy\07s34f4w2";
int i,n=0;
for(i=0;si!=0;i++)
if(si>='0'&&si<='9')
n++;
printf("%d\n",n);
}
程序运行后的输出结果是____ B______
A)0 B)3 C)7 D)8
1.7、有以下程序
#include <stdio.h>
main( )
{ char s ="wstuv"; printf("%c\n",*s+2);
}
程序运行后的输出结果是C
A)t B) tuv C)y D)出错
1.8 数组 int a5 = {10, 20, 30, 40,50}, 有以下语句,其输出___C____
printf("%d\n", *(&a +1) );
A) 20 B) 30 C) 随机值 D)编译报错
1.9 有以下程序
include <stdio.h>
int main()
{ int s12={1,2,3,4,4,3,2,1,1,1,2,3}, c5={0,0,0,0,0}, i ;
for(i=0;i<12;i++) cs\[i]++ ;
for(i=1;i<5;i++) printf("%d,",ci); printf("\n");
}
C
A) 4 ,3, 3, 2 B) 2 , 3, 4, 4
C) 1, 2, 3 ,4 D ) 4, 4, 2 ,3
1.10 有数组 int a34 = {10,20,30,40,50,60,70,80,90,100,110,120},执行以下语句输出的是_______D________
printf("%d\n", *(*a+2) + 3 );
A) 语句有错 B) 120 C) 30 D) 33
2、填空题
2.1、有以下程序
#include <stdio.h>
main( )
{ int i,n ={0,0,0,0,0};
for(i=1;i<=4;i++)
{ni=ni-1*3+1;
printf("%d",ni);}
}
程序运行后输出结果是 1 4 13____
2.2、执行以下程序的输出结果是3 7_ .
#include <stdio.h>
int main()
{ int i,n4={1,0,0,0};
for(i=1;i<=3;i++)
{ ni=ni-1*2+1; printf("%d",ni); }
}
2.3、下面程序运行的结果为__3 5____。
main()
{
int x5,i;
x0 = 1;x1 = 2;
for(i = 2;i<5;i++) xi = xi-1 + xi-2;
for(i = 2;i<5;i++) printf("%d",xi);
}
2.4、有以下程序
#include <sthio.h>
int main()
{
int arr\[\] = {1,3,5,7,2,4,6,8}, i, start ;
scanf("%d", &start);
for(i=0,i<7,i+=2)
printf("%d",arr(start+i)%5);
}
若在程序运行时输入整数 10 <回车>,则输出结果为__1_____
2.5下面程序运行的结果为_4 5 8 2 0__。
#include "stdio.h"
main()
{ int i,j,a\[\]={0,2,8,4,5};
printf("\n");
for(i=1;i<=5;i++)
{ j=5-i;
printf("%2d",aj);
}
}
2.6有以下程序
#include <stdio.h>
int main()
{ int n2,i,j;
for(i=0;i<2;i++) ni=0; for(i=0;i<2;i++)
for(j=0;j<2;j++) nj=ni+1;
printf("%d\n",n1);
}
程序运行后的输出结果是 【13】
3、编程题
3.1、 一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。试编程。(试着用下标法和地址法两种方法表示数组)
#include <stdio.h>
int main()
{
int i,a[10],max=0,num;
for(i=0;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
num=i;
}
}
printf("%d %d\n",num,max);
for(i=0;i<10;i++)
{
if(*(a+i)>max)
{
max=*(a+i);
num=i;
}
}
return 0;
}
3.2、有5个学生上4门课程,要求输入全部学生的各门课程成绩,然后输出各门课程的平均成绩,并按照各个学生的平均成绩排序(成绩最高的学生排在数组最前面,最低学生排在数组最后面的行) (试着用下标法和地址法两种方法表示数组)。
#include <stdio.h>
int main()
{
int a[5][4],sum=0,sum1=0;
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
scanf("%d",a[i][j]);
}
}
for(int j=0;j<4;j++)
{
for(int i=0;i<5;i++)
{
sum+=a[i][j];
}
}
printf("%d\n",sum);
for(int i=0;i<5;i++)
{
sum1=0;
for(int j=0;j<4;j++)
{
sum1+=a[i][j];
}
printf("%d\n",sum1);
}
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
{
scanf("%d",*(*(a+i)+j));
}
}
for(int j=0;j<4;j++)
{
for(int i=0;i<5;i++)
{
sum+=*(*(a+i)+j);
}
}
printf("%d\n",sum);
for(int i=0;i<5;i++)
{
sum1=0;
for(int j=0;j<4;j++)
{
sum1+=*(*(a+i)+j);
}
printf("%d\n",sum1);
}
return 0;
}